/api/v1 surface Cloud actually serves.
Base URL
hyperlocalise.api_base_url default is https://hyperlocalise.com/api. Paths below are relative to that host, including /v1.
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. Cloud automations and the UI create jobs after upload.
Latest job for a source path
GET /v1/jobs/latest?projectId={projectId}&sourcePath={sourcePath}
Permission: jobs:read
Returns the most recent file job for that source path, including outputFiles when the job has finished.
Get a job
GET /v1/jobs/{jobId}
Permission: jobs:read
Job status
GET /v1/jobs/{jobId}/status
Permission: jobs:read
Smaller payload with id, projectId, 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.
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.