Amara
DOCS & KNOWLEDGE · FILES & DOCS
Videos, subtitle versions, and teams in the Amara account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
amara_delete_api_teams_team_slug_members_user_identifierWRITERemove a user from a team via DELETE /api/teams/{team_slug}/members/{user_identifier}/. Removes a user's membership of a team.
amara_delete_api_teams_team_slug_projects_project_slugWRITEDelete a project via DELETE /api/teams/{team_slug}/projects/{project_slug}/. Deletes a team project.
amara_delete_api_teams_team_slug_subtitle_requests_job_idWRITEDelete a subtitle request via DELETE /api/teams/{team_slug}/subtitle-requests/{job_id}/. Deletes a subtitle request. Only admins of the request's SOURCE team can do this.
amara_delete_api_videos_video_idWRITEDelete a video via DELETE /api/videos/{video_id}/. Deletes a video and answers 204 No Content. Only possible for a video that is part of a team you are an ADMIN of.
amara_delete_api_videos_video_id_languages_language_code_subtitlesWRITEDelete subtitles via DELETE /api/videos/{video_id}/languages/{language_code}/subtitles/. Deletes ALL subtitle versions for a language and answers 204 No Content. Only allowed if the video is part of a team and the API user is an ADMIN of that team.
amara_delete_api_videos_video_id_urls_url_idWRITEDelete a video URL via DELETE /api/videos/{video_id}/urls/{url_id}/. Deletes one of a video's URLs and answers 204 No Content. Take the id from the URL listing's `resource_uri`.
amara_get_api_activityREADLegacy activity list via GET /api/activity/. DEPRECATED by Amara: a site-wide activity list filtered by query parameter. Amara's own documentation says new code should use the video, team or user activity resources instead. Its `type` filter is an INTEGER code rather than the name the other three take, and `before`/`after` are unix timestamps rather than ISO-8601. If both `team` and `video` are given, `team` wins and `video` is ignored.
amara_get_api_languagesREADList available languages via GET /api/languages/. Lists every language Amara supports, as a mapping of language code to English name. Requires the API key even though it is reference data (measured: 403 without one).
amara_get_api_teamsREADList teams via GET /api/teams/. Lists teams, paginated. The response data is the same as the single-team endpoint's.
amara_get_api_teams_slugREADGet details on a team via GET /api/teams/{slug}/. Gets one team: its type, description, visibility, membership and video policies, and links to its members, projects, applications, languages and activity.
amara_get_api_teams_slug_activityREADTeam activity via GET /api/teams/{slug}/activity/. Lists activity on one team's videos and on the team itself (members joining and leaving, videos moved in or out, review and approval events). Paginated.
amara_get_api_teams_slug_membersREADList team members via GET /api/teams/{slug}/members/. Lists a team's members with each one's role. Paginated.
amara_get_api_teams_slug_members_user_identifierREADGet details on a single member via GET /api/teams/{slug}/members/{user_identifier}/. Gets one team membership: the user, their role, and for a `proj_lang_manager` the projects and languages they manage.
amara_get_api_teams_team_slug_applicationsREADList applications to your team via GET /api/teams/{team_slug}/applications/. Lists the membership applications made to a team, with each applicant's note and status (Pending, Approved, Denied, Member Removed, Member Left). A team only has applications when its membership policy is by application. Paginated.
amara_get_api_teams_team_slug_applications_application_idREADGet details on an application via GET /api/teams/{team_slug}/applications/{application_id}/. Gets one membership application. The data is the same as the listing's. Amara documents this as `[application-uri]`; take the id from the listing's `resource_uri`.
amara_get_api_teams_team_slug_notificationsREADList team notifications via GET /api/teams/{team_slug}/notifications/. Lists the HTTP callbacks Amara sent for a team: the URL posted to, the data posted, the response status and any error. Callbacks are an ENTERPRISE feature and are registered by emailing enterprise@amara.org, not through the API. Paginated.
amara_get_api_teams_team_slug_notifications_numberREADGet details on one notification via GET /api/teams/{team_slug}/notifications/{number}/. Gets one team HTTP callback by its number. The data is the same as the listing's.
amara_get_api_teams_team_slug_projectsREADList team projects via GET /api/teams/{team_slug}/projects/. Lists a team's projects, with each one's guidelines and whether tasks are enabled for it. Paginated.
amara_get_api_teams_team_slug_projects_project_slugREADGet details on a project via GET /api/teams/{team_slug}/projects/{project_slug}/. Gets one team project. The data is the same as the listing's.
amara_get_api_teams_team_slug_subtitle_requestsREADList subtitle requests via GET /api/teams/{team_slug}/subtitle-requests/. Lists a collaboration team's subtitle requests -- the records that track work on a video's subtitles through subtitling, review and approval. Which status fields come back depends on the team's relationship to each request (source, work or evaluation team). Paginated.
amara_get_api_teams_team_slug_subtitle_requests_job_idREADGet details on a subtitle request via GET /api/teams/{team_slug}/subtitle-requests/{job_id}/. Gets one subtitle request. The data is the same as the listing's.
amara_get_api_users_identifierREADGet user data via GET /api/users/{identifier}/. Gets a user's public profile: username, id, names, homepage, biography, avatar, the languages they speak and how many videos they follow. The identifier is a username or a user id prefixed with `id$`; `me` returns the account this API key belongs to.
amara_get_api_users_identifier_activityREADUser activity via GET /api/users/{identifier}/activity/. Lists the activity one user performed, across the videos and teams they work on. Paginated.
amara_get_api_videosREADList videos via GET /api/videos/. Lists videos. You probably want a query filter to limit the results: with no query parameter at all Amara lists the last 20 PUBLIC videos. `project` requires `team`, and passing `team=null` returns only videos in the public area. Results are paginated.
amara_get_api_videos_video_idREADView video details via GET /api/videos/{video_id}/. Gets one video by its Amara video id: title, description, duration, thumbnail, team, project, metadata, every URL it has, and the languages that have subtitles started.
amara_get_api_videos_video_id_activityREADVideo activity via GET /api/videos/{video_id}/activity/. Lists activity on one video -- versions added, titles changed, URLs added or removed, comments -- newest first and paginated. Depending on the activity type each item may carry extra fields (`url`, `old_url`/`new_url`, `title`).
amara_get_api_videos_video_id_languagesREADList subtitle languages for a video via GET /api/videos/{video_id}/languages/. Lists a video's subtitle languages -- the containers that hold subtitles in one language -- with each one's completion state, soft limits and version history. A subtitle language is usually created when the first editing session starts. Paginated.
amara_get_api_videos_video_id_languages_language_codeREADGet details on a single subtitle language via GET /api/videos/{video_id}/languages/{language_code}/. Gets one subtitle language of a video. The response data is the same as the listing's, plus `num_versions`.
amara_get_api_videos_video_id_languages_language_code_subtitlesREADFetch subtitles data via GET /api/videos/{video_id}/languages/{language_code}/subtitles/. Fetches a language's subtitles. Pass `format` (dfxp, sbv, srt, ssa or vtt) to get the raw subtitle file in that format instead of the JSON envelope -- and note that `format` OVERRIDES `sub_format`, which is ignored when it is given. `version_number` picks a specific version; without it the latest public version is returned.
amara_get_api_videos_video_id_languages_language_code_subtitles_actionsREADList subtitle actions via GET /api/videos/{video_id}/languages/{language_code}/subtitles/actions/. Lists the actions currently available on a language's subtitles -- the buttons in the top-right of the subtitle editor (save, save a draft, approve, reject). Which ones exist depends on the video's team, whether there is a completed draft, and the caller's role.
amara_get_api_videos_video_id_languages_language_code_subtitles_notesREADFetch subtitle notes via GET /api/videos/{video_id}/languages/{language_code}/subtitles/notes/. Fetches the subtitle editor notes for a language: who wrote each one, when, and its text.
amara_get_api_videos_video_id_urlsREADList video URLs via GET /api/videos/{video_id}/urls/. Lists the URLs associated with a video. Every video has at least one, and several let the same subtitles be associated with the video on multiple providers (a YouTube version, a Vimeo version). Exactly one is flagged `primary`, which is what the embedder and the editor use. Paginated.
amara_get_api_videos_video_id_urls_url_idREADGet details on a video URL via GET /api/videos/{video_id}/urls/{url_id}/. Gets one video URL. The fields are the same as the listing's. Take the id from the listing's `resource_uri` rather than constructing it.
amara_post_api_messageWRITEPost a message via POST /api/message/. Sends a message to a user or to a team and answers 201 Created. Send either `user` or `team`, never both.
amara_post_api_teamsWRITECreate a team via POST /api/teams/. Creates a team. `name`, `slug` and `type` are required. Amara RESTRICTS team creation to Amara partners, so a non-partner account is refused.
amara_post_api_teams_team_slug_membersWRITEAdd a member to a team via POST /api/teams/{team_slug}/members/. Adds a user to a team with a role. `languages_managed` and `projects_managed` apply only to the `proj_lang_manager` role.
amara_post_api_teams_team_slug_projectsWRITECreate a new project via POST /api/teams/{team_slug}/projects/. Creates a project on a team. `name` and `slug` are required.
amara_post_api_teams_team_slug_subtitle_requestsWRITECreate a subtitle request via POST /api/teams/{team_slug}/subtitle-requests/. Creates a subtitle request for a video on a collaboration team. `video` and `language` are required, and the video must belong to the team in the path. You must be an ADMIN of the team. `team` and `evaluation_teams` are the multi-team form: they hand the work, or its evaluation, to other teams you are an admin of.
amara_post_api_usersWRITECreate a user via POST /api/users/. Creates an Amara user account and answers 201 Created. `username`, `email` and `password` are required. `create_login_token` adds an `auto_login_url` to the response that signs the new user in without a password and expires in 2 hours; `find_unique_username` makes Amara pick a free variant when the username is taken, so check the username that comes back.
amara_post_api_videosWRITEAdd a video via POST /api/videos/. Adds a video to Amara from its URL. Any URL Amara accepts works: a direct media file or a link to an accepted provider (YouTube, Vimeo). Answers 201 Created with the new video, whose `id` is the Amara video id every other video tool takes.
amara_post_api_videos_video_id_languagesWRITECreate a subtitle language via POST /api/videos/{video_id}/languages/. Creates a subtitle language container on a video and answers 201 Created. Only `language_code` is required; the soft limits are editor warnings rather than hard constraints.
amara_post_api_videos_video_id_languages_language_code_subtitlesWRITEAdd new subtitles via POST /api/videos/{video_id}/languages/{language_code}/subtitles/. Adds a new subtitle version to a language and answers 201 Created. Send the subtitles inline as `subtitles` or by URL as `subtitles_url`, in the format named by `sub_format` (dfxp by default). Prefer `action` over the deprecated `is_complete`: when `action` is given, `is_complete` is ignored.
amara_post_api_videos_video_id_languages_language_code_subtitles_actionsWRITEPerform a subtitle action via POST /api/videos/{video_id}/languages/{language_code}/subtitles/actions/. Performs one of the available actions on a language's subtitles. Equivalent to opening the editor, changing nothing and clicking that button. An action can also be performed while adding subtitles, through the subtitles endpoint's `action` field.
amara_post_api_videos_video_id_languages_language_code_subtitles_notesWRITEAdd a subtitle note via POST /api/videos/{video_id}/languages/{language_code}/subtitles/notes/. Posts a subtitle editor note on a language and answers 201 Created.
amara_put_api_teams_team_slug_applications_application_idWRITEApprove or deny an application via PUT /api/teams/{team_slug}/applications/{application_id}/. Decides a membership application: `Approved` admits the applicant to the team, `Denied` refuses them. Amara documents this as `[application-uri]`; take the id from the application listing's `resource_uri`.
amara_put_api_teams_team_slug_languages_blacklistedWRITESet a team's blacklisted languages via PUT /api/teams/{team_slug}/languages/blacklisted/. Replaces a team's blacklisted languages with the list sent as the body -- a JSON ARRAY of language codes, not an object. Subtitles are not allowed in a blacklisted language. (Documented at apidocs.amara.org#blacklisted-languages-resource; absent from the extracted ledger and added by this build after measuring the route mounted.)
amara_put_api_teams_team_slug_languages_preferredWRITESet a team's preferred languages via PUT /api/teams/{team_slug}/languages/preferred/. Replaces a team's preferred languages with the list sent as the body -- a JSON ARRAY of language codes, not an object. Preferred languages have tasks auto-created for each of the team's videos. (Documented at apidocs.amara.org#preferred-languages; absent from the extracted ledger and added by this build after measuring the route mounted.)
amara_put_api_teams_team_slug_members_user_identifierWRITEChange a team member's role via PUT /api/teams/{team_slug}/members/{user_identifier}/. Changes an existing member's role on a team, and the projects and languages they manage.
amara_put_api_teams_team_slug_projects_project_slugWRITEUpdate a project via PUT /api/teams/{team_slug}/projects/{project_slug}/. Updates a team project's name, description or guidelines. The slug cannot be changed: it is not in the update's request data.
amara_put_api_teams_team_slug_subtitle_requests_job_idWRITEUpdate a subtitle request via PUT /api/teams/{team_slug}/subtitle-requests/{job_id}/. Updates a subtitle request: assign or unassign the subtitler, reviewer, approver or evaluator (send null to unassign), move the work stage, or change the due dates. Which fields are accepted depends on the team's relationship to the request; `team` and `evaluation_teams` are source-team fields and can only be changed before that work starts. `work_status` is the deprecated way to complete a request -- prefer `work_stage`.
amara_put_api_users_identifierWRITEUpdate your account via PUT /api/users/{identifier}/. Updates a user account's username, email or name. The identifier is a username or a user id prefixed with `id$`.
amara_put_api_videos_video_id_languages_language_codeWRITEUpdate a subtitle language via PUT /api/videos/{video_id}/languages/{language_code}/. Updates a video's subtitle language. The request data is the same as when creating one EXCEPT that `language_code` is not allowed -- the language is identified by the path. (Documented at apidocs.amara.org#update-a-subtitle-language; it is absent from the extracted ledger and was added by this build after measuring the route mounted.)
amara_put_api_videos_video_id_urls_url_idWRITEMake a video URL primary via PUT /api/videos/{video_id}/urls/{url_id}/. Makes this URL the video's primary URL -- the one the embedder and the editor use. There is only one field, `primary`, and only `true` is meaningful.
Often connected alongside
Put Amara behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.