Choose the correct API version
The current app uses the /app/api/v1 API. Older integrations can use the separate api.screenapp.io/v2 service. Their endpoints, credentials and upload flows are not interchangeable.
Before changing an existing integration, identify its base URL and account generation. For a legacy integration, consult its v2 reference and confirm migration support with ScreenApp.
Create a current-app key
Open Settings > API in the current app. Create a named key with the narrowest scopes needed and save it when shown. Treat it as a secret and revoke it if exposed. Check the personal or team context associated with the key.
The current public scopes are files:read and files:upload.
Read your account context
Set SCREENAPP_API_KEY privately in your environment. Do not put it in client-side HTML or commit it to a repository.
curl --fail-with-body "https://screenapp.io/app/api/v1/me" -H "x-api-key: $SCREENAPP_API_KEY"
Upload a file
Use a key with upload permission. Replace the local filename with your own file.
curl --fail-with-body "https://screenapp.io/app/api/v1/videos" -H "x-api-key: $SCREENAPP_API_KEY" -F "file=@recording.mp4"
The response contains the new file identifier. Processing continues in the background. Poll GET /app/api/v1/videos/{id} until transcriptStatus is ready, then request GET /app/api/v1/videos/{id}/transcript.
Current direct API uploads have a 512 MB body limit. This is an API limit only; uploads in the app have no set file size limit. The same videos endpoint can accept a JSON object with a public url instead of uploading local bytes.
Read recordings
GET /app/api/v1/videoslists recordings in the key’s space.GET /app/api/v1/videos/{id}returns status and metadata.GET /app/api/v1/videos/{id}/transcriptreturns the transcript when ready.
Use read permission for these requests. A missing or invalid key returns 401; insufficient scope returns 403; rate limiting returns 429. Follow Retry-After when supplied. A transcript requested before it is ready can return 409.
Embed a recorder
Embedding has a separate setup and domain restriction. Follow embed a recorder. Do not expose a private REST key as an embed token.
If you only want an AI assistant to read your recordings
You do not need a key for that. ScreenApp hosts an MCP server, so Claude or ChatGPT can search your library and read transcripts after you paste one URL and sign in. See connect ScreenApp to Claude or ChatGPT with MCP.
These examples describe the current API contract. Verify them in the account and environment you intend to use before replacing a working legacy integration.