Search our FAQs or browse by category
Full guides from the help content system. Each guide is a real MDX page.
Create your first project, import a script, and restore deleted work.
Shortcuts, templates, characters, and collaboration in the editor.
Story assistant usage, limits, and the co-writer chat API.
Upgrades, refunds, and the Stripe customer portal.
Email, deletion, sessions, OAuth apps, signing keys, and exports.
In-depth guides drawn from this product's actual API routes.
Fixes for error messages you may actually see in this product.
Developer surfaces in this product: pages and JSON endpoints.
In-depth guides drawn from this product's actual API routes.
getting-started / import
Importing a script (Final Draft, Fountain, PDF, TXT)
Send your file to POST /api/import with { content, fileName } (or { pdf } for PDF text). Supported sources include .fdx, .fountain and .txt; PDF text is extracted server-side. The importer normalizes formatting and runs a format check before creating the screenplay.
import, fdx, fountain, pdf, api/import
getting-started / export
Exporting a script with export jobs
Create an export via POST /api/export-jobs and track it with GET /api/export-jobs, which lists your jobs newest-first. Jobs are processed through the export queue worker, and you can fetch a single job at /api/export-jobs/[id].
export, export-jobs, pdf, queue
ai / chat
Using the AI co-writer chat
POST /api/ai/chat with { message, agentId } (for example agentId co_writer) plus optional scriptContent and history. Responses are rate-limited, cached per prompt, and logged for usage tracking. When no AI provider is configured, the endpoint returns a deterministic sample reply without a model call.
ai, chat, co-writer, agent, api/ai/chat
editor / characters
Managing characters per project
List characters with GET /api/characters?projectId=YOUR_ID; the project must belong to you or you get a 404. Use this to keep a per-project character roster alongside your screenplay.
characters, project, editor, api/characters
editor / collaboration
Commenting and @mentioning collaborators
GET and POST /api/collaboration/comments on a screenplay you own. Comment bodies support @mentions, which notify the mentioned user, and bodies are scanned for abuse before saving. Ownership is enforced per screenplay.
comments, collaboration, mentions, review
billing / portal
Managing billing through the customer portal
POST /api/billing/portal creates a Stripe customer-portal session (via createPortalSession) returning { url }, rooted at /billing. You need an existing subscription with a Stripe customer id, otherwise the API returns a 400.
billing, portal, stripe, subscription
account / security
Securing your account with 2FA (TOTP)
Set up time-based one-time passwords via POST /api/auth/2fa/setup (issuer IDEOSCREEN). Setup is rate-limited to 10 attempts per 15 minutes per user/IP and requires a signed-in session. Complete verification and challenge steps at the sibling 2fa routes.
2fa, totp, security, account
account / privacy
Requesting a GDPR export of your data
List past requests with GET /api/privacy/export and file a new one with POST /api/privacy/export (handled by gdprManager, CSRF-protected and rate-limited). Download the finished bundle at /api/privacy/export/download.
privacy, gdpr, export, data
Developer surfaces in this product. Pages are linked; HTTP endpoints are listed as paths because they return JSON, not pages.
Settings > Security > Developer
Read-only overview of your API keys, OAuth applications, and data export requests. No changes can be made here, so no CSRF token is required. Use it to confirm key prefixes, scopes, client redirect URIs, and export status.
Settings > Security > OAuth Applications
Register third-party apps with a name, https redirect URI, and scopes. The client secret is shown once at registration. Issue a single-use 10-minute authorization code with Get code, or Revoke an app to disable it.
GET /api/auth/api-keys and POST /api/auth/api-keys
List your keys (prefixes and scopes only; full secrets are never returned) and create new keys. There is no settings UI that manages API keys, so call this endpoint directly. Review current keys on the Developer page above.
Settings > Security > Sessions
Lists devices signed in to your account with IP address and expiry. Revoke one session or all other sessions; revoking signs that device out immediately.
Settings > Security > Signing Keys
Generate Ed25519 key pairs used for script registration signatures. Only the public key is persisted; the private key is shown once at creation.
File and track data export requests, control consent, or erase account data. The Developer page links here for export management.
Fixes for error messages you may actually see in this product.
Could not get CSRF token
Shown when a settings action cannot fetch a CSRF token from /api/csrf before a signed request. Fix: refresh the page and sign in again, disable extensions that block cookies or fetch, then retry the action once.
Invalid code
Shown on the two-factor check when the 6-digit authenticator or backup code is wrong or expired. Fix: enter the current code from your authenticator app (check that your device clock is correct), use an unused backup code if needed, and try once more instead of reusing an old code.
AI capacity is full. Please try again shortly.
Shown when the AI chat queue has no free global slot. Fix: wait a minute and send the message again. Shorter prompts retry faster; do not resubmit repeatedly in the same second.
Import failed
Shown on the Import page when /api/import rejects the upload. Fix: confirm the file is .fdx, .fountain, .txt, .fadein, .celtx, .story, or a text-layer PDF, keep PDFs to text-layer files (image-only or encrypted PDFs are not supported), and retry. If it persists, contact support via the Support page with the file name and exact message.