canonical: https://jentic.com/apis/amara.org/amara

# Amara API

Jentic publishes the only available OpenAPI specification for Amara API, keeping it validated and agent-ready. The Amara API powers programmatic access to the Amara collaborative video subtitling platform. It exposes 28 endpoints across videos, subtitle languages, subtitle versions and actions, subtitle notes, users, teams, team members, and activity feeds. Media organisations, publishers, and accessibility teams use it to upload videos, manage translations across many languages, fetch finalised subtitle files, and coordinate volunteer or paid translator teams.

## For AI agents

Manage videos, subtitle languages, and translation team workflows on the Amara captioning platform. Upload videos, fetch subtitle files in multiple languages, and coordinate subtitle reviewers via 28 REST endpoints.

## Scope

Does not handle video hosting, transcoding, or speech-to-text generation - use for managing video subtitles, translation teams, and subtitle review workflows only.

## Capabilities

- Register and manage videos by URL across YouTube, Vimeo, and direct file sources
- Create, update, and retrieve subtitle versions for any language attached to a video
- Trigger subtitle actions like publish, unpublish, and approve through the subtitle-actions endpoint
- Coordinate translation teams by managing team members, assignments, and roles
- Fetch a video activity feed to track edits, approvals, and member contributions over time
- Attach reviewer notes to specific subtitle revisions for translator feedback

## Use cases

### Multi-Language Video Captioning

Media publishers use the Amara API to scale captioning across many languages. After registering a video with POST /videos/, the publisher creates a subtitle language entry per target language and uploads or commissions a subtitle version for each. Once a language is approved, the GET /videos/{video_id}/languages/{language_code}/subtitles/ endpoint returns the SRT or VTT file, ready to embed in a player.

Example prompt: POST /videos/ with the source URL, then for each target language POST /videos/{video_id}/languages/ and fetch the resulting subtitle file via GET /videos/{video_id}/languages/{language_code}/subtitles/

### Translation Team Coordination

Non-profits and accessibility teams use the team and team-member endpoints to coordinate volunteer translators. Coordinators add translators with POST /teams/{team_slug}/members/, assign them to videos, and watch the activity feed at GET /videos/{video_id}/activity/ to see when translations are submitted and reviewed. Role and language assignments live on the team-member resource.

Example prompt: POST a new team member with role=contributor and language=fr, assign them to three videos, and poll the activity feed for completed submissions

### Subtitle Review and Notes Workflow

Editorial teams use the subtitle-notes endpoint to leave timestamped feedback on a subtitle revision before approving it. Reviewers GET the latest subtitle version, add notes via POST /videos/{video_id}/languages/{language_code}/notes/, and the translator iterates. Once notes are resolved, an action through subtitle-actions publishes the version.

Example prompt: GET the current subtitle version for a video and language, POST a review note referencing a specific timestamp, then POST a publish action to subtitle-actions once the translator has resolved it

### AI Agent Caption Generator

An AI agent invoked through Jentic generates draft subtitles with a speech-to-text model, uploads them to Amara, and routes them to a human reviewer team for approval. The agent searches Jentic for the upload-subtitles operation, loads its schema, and executes calls against the videos and subtitles endpoints. Jentic handles the API key, so the agent only deals with the structured Amara payloads.

Example prompt: Search Jentic for upload subtitle version, load the operation schema, and POST a draft subtitle file to the target video and language for human review

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /videos/ | List videos registered on Amara |
| POST | /videos/ | Register a new video by source URL |
| GET | /videos/{video_id}/languages/ | List all language tracks for a video |
| GET | /videos/{video_id}/languages/{language_code}/subtitles/ | Fetch the latest subtitle file for a video and language |
| POST | /videos/{video_id}/languages/{language_code}/subtitles/actions/ | Trigger a publish or approval action on a subtitle version |
| GET | /teams/ | List subtitling teams |
| POST | /teams/{team_slug}/members/ | Add a member to a subtitling team |

## Key resources

- **Videos** — Register, list, and inspect videos for which subtitling is being managed
- **Subtitle Languages** — Manage the language tracks attached to a video and their completion state
- **Subtitles** — Fetch and submit subtitle revisions for a given video and language
- **Subtitle Actions** — Trigger publish, unpublish, and approval actions on a subtitle version
- **Subtitle Notes** — Attach reviewer feedback to a specific subtitle revision
- **Teams** — Manage subtitling teams, their workflows, and assignments
- **Team Members** — Add, remove, and update roles for translators and reviewers in a team
- **Activity** — Read the activity feed of edits, approvals, and contributions for a video

## Why Jentic

- **Setup:** Wiring the Amara API by hand means reading its docs to place the X-api-key header on every call across its videos, subtitles, teams, and members surface. Through Jentic you install once, import the Amara API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** Amara puts the video, language, and team identifiers in the URL path (/videos/{video_id}/languages/{language_code}/... and /teams/{team_slug}/members/), so a rule can pin the agent to reading and managing subtitles for a given video or team. You choose the operations it may call, so write actions like registering a video with POST /videos/ or adding a team member are not included unless you add them.
- **Credential handling:** Your Amara API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch the finalised subtitle file for a video' or 'add a member to a subtitling team', and Jentic returns the matching Amara operation with its input schema so the agent calls the right endpoint without reading the Amara API docs.

## Related APIs

- **Rev.ai** — Speech-to-text API that generates draft transcripts for upload as subtitles to Amara
- **Vimeo** — Video hosting platform; Amara registers Vimeo URLs and attaches subtitle tracks back to them
- **YouTube Data API** — YouTube has a built-in caption upload endpoint, useful when the source video lives on YouTube and no team workflow is needed

## FAQ

### Why is there no official OpenAPI spec for Amara API?

Amara does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Amara API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Amara API use?

The Amara API uses an API key sent in the X-API-KEY header alongside an X-API-USERNAME header identifying the Amara account. Through Jentic the username and API key are stored encrypted in the vault and injected on each request, so the agent never sees the raw key.

### Can I fetch a finalised SRT or VTT file with the Amara API?

Yes. Call GET /videos/{video_id}/languages/{language_code}/subtitles/ with the format query parameter set to srt or vtt. The endpoint returns the latest published subtitle revision for that language; if no version is published, it returns the most recent draft.

### What are the rate limits for the Amara API?

Amara enforces per-account rate limits that vary by plan tier and are documented in the Amara developer portal. Public-tier accounts are limited to a few requests per second; team plans get higher quotas. Treat any 429 response as a signal to back off and retry.

### How do I upload a new video to Amara through Jentic?

Install the SDK with pip install jentic, search Jentic for register video on amara, load the POST /videos/ operation schema, and execute it with the source URL and metadata. Jentic injects the X-API-KEY and X-API-USERNAME headers automatically and returns the new video_id for follow-up subtitle calls.

### Can I trigger subtitle approval workflows with the Amara API?

Yes. POST to /videos/{video_id}/languages/{language_code}/subtitles/actions/ with an action body of approve, publish, or unpublish to move a subtitle version through the team workflow. Permissions depend on the team role of the authenticated user.

### Can I limit what my agent is allowed to do with the Amara API?

Yes. Because you run Jentic One yourself, your own rules decide which Amara operations and credentials the agent may use. Amara carries the video, language, and team identifiers in the URL path (/videos/{video_id}/languages/{language_code}/... and /teams/{team_slug}/members/), so a rule can pin the agent to reading and managing subtitles for a single video or team. You pick the operations it can call, so write actions such as registering a video with POST /videos/ or adding a team member stay off limits unless you allow them.
