Skip to main content
Use this API to upload source files, create translation jobs, check progress, and retrieve translated files. It is also the API used by Platform CLI sync. For identity, project discovery, and Queries, use the separate Projects and Queries API. See Choose an API for base URLs and authentication. The OpenAPI document for that API does not describe these file and job routes.

Base URL

The CLI hyperlocalise.api_base_url default is https://hyperlocalise.com/api. Paths below are relative to that host, including /v1, except job reads. Read jobs from https://api.hyperlocalise.com/v1. See Read jobs.

Authentication

Create a key under Settings → API Keys. Send it on every request:
Missing, invalid, or revoked keys return 401 with error: "unauthorized". An archived workspace returns 403 with error: "workspace_archived".

Permissions

New keys receive all four permissions. A key only sees projects the key’s creator can access.

Errors

JSON errors use this envelope:
Branch on error. message is for debugging and may change. File downloads return the raw body instead of JSON.

Files

Upload a source file

POST /v1/files Permission: files:write multipart/form-data. Maximum body size is 25 MiB. 201 response for a native project (resource-keyed):
TMS-backed projects return destination: "external_tms" plus provider fields instead of the stored-file metadata. This is the same upload hyperlocalise sync push performs. It does not create a job.

Download a stored file

GET /v1/files/{fileId}/download Permission: files:read Returns the file bytes with Content-Type and Content-Disposition.

Jobs

Create a job

POST /v1/jobs Permission: jobs:write JSON body. Discriminate on type. String job
File job
sourceFileId must already exist in the project (upload first). Locales must match the project. 201 response:
The CLI does not call this endpoint during sync push. Platform automations and the UI create jobs after upload.

Read jobs

Job reads use a different host from the rest of this API:
Send the same x-api-key. https://hyperlocalise.com/api/v1 no longer serves these routes.

Latest job for a source path

GET https://api.hyperlocalise.com/v1/jobs/latest?projectId={projectId}&sourcePath={sourcePath} Permission: jobs:read Returns the most recent succeeded file job for that source path, including outputFiles.

Get a job

GET https://api.hyperlocalise.com/v1/jobs/{jobId} Permission: jobs:read

Job status

GET https://api.hyperlocalise.com/v1/jobs/{jobId}/status Permission: jobs:read Smaller payload with id, projectId, kind, type, status, timestamps, and lastError.

Translations and images

These reconstruct current project state. They do not require a job id. That is what sync pull uses.

Download a reconstructed translation

GET /v1/projects/{projectId}/translations/download?sourcePath={sourcePath}&locale={locale} Permission: files:read Returns the translated file bytes for that source path and target locale. To export only the segments that match Content Editor filters (CSV, TMX, XLIFF, XLSX), use Download in the Content Editor queue—not this endpoint.

Download an image variant

GET /v1/projects/{projectId}/images/download?sourcePath={sourcePath}&locale={locale} Permission: files:read Returns the localized image variant when one exists for that path and locale.

Example

Upload a source file with curl:
Download the French reconstruction:

Next