Base URL
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: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: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):
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
sourceFileId must already exist in the project (upload first). Locales must match the project. 201 response:
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: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 whatsync 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.

