Check for new Distribution Releases and obtain pre-signed download URLs for localization file bundles delivered via the lingohub CDN.
A single endpoint under the /cdn prefix and returns application/json responses.
Authentication is performed via a CDN key passed as a Bearer token in the Authorization header — not the standard user authentication used by other API endpoints.
Authentication
Every request must include a valid CDN key in the Authorization header:
Authorization: Bearer cdn_eyJhbGciOiJIUz...
Note: CDN keys are scoped to a workspace and can be managed in the lingohub application settings. An invalid or expired key results in a
401response.
Endpoint
POST /cdn/check -- Check for a Distribution Release
POST /cdn/check -- Check for a Distribution ReleaseChecks whether a new Distribution Release is available that matches the specified environment, type, and optional version/release filters. If a match is found, the response includes release details and a pre-signed S3 download URL.
Request Body — CdnCheckRequest
CdnCheckRequest| Field | Type | Required | Description |
|---|---|---|---|
distributionEnvironment | string | Yes | Target environment. Values: "DEVELOPMENT", "TEST", "STAGING", "PRODUCTION" |
distributionType | string | Yes | Target type. Values: "NATIVE_FORMAT", "MOBILE_SDK_ANDROID", "MOBILE_SDK_IOS" |
clientVersion | string | No | Semantic version of the client app (e.g. "2.1.0"). Used as a version-specific filter |
clientRelease | string | No | Release identifier (e.g. "beta-3"). Used as an optional filter |
clientUser | string | No | End-user identifier — logging only |
clientAgent | string | No | User-agent string of the client — logging only |
clientLanguageCode | string | No | ISO language code of the client (e.g. "en-US") — logging only |
Example Request
{
"distributionEnvironment": "PRODUCTION",
"distributionType": "MOBILE_SDK_ANDROID",
"clientVersion": "2.1.0",
"clientRelease": "beta-3",
"clientUser": "user-42",
"clientAgent": "MyApp/Android",
"clientLanguageCode": "en-US"
}Response — CdnCheckResponse (when a release is found)
CdnCheckResponse (when a release is found)| Field | Type | Description |
|---|---|---|
distributionReleaseId | string | Unique release identifier (e.g. "rel_13jNfRcOroAN-1024") |
name | string | Human-readable name of the release |
createdAt | timestamp | When the release was created |
filesUrl | string | Pre-signed S3 URL to download the release ZIP file (valid for 24 hours) |
Example Response
{
"distributionReleaseId": "rel_13jNfRcOroAN-1024",
"name": "your project release",
"createdAt": "2025-02-24T13:11:30.909+00:00",
"filesUrl": "https://lingohub-exports.s3.amazonaws.com/distributions/rel_13jNfRcOroAN-1024.zip"
}If no matching release exists, the endpoint returns
204 No Contentwith an empty body.
Error Responses
| Status | Meaning | Error Field | Error Info |
|---|---|---|---|
401 | Unauthorized — CDN key is missing, malformed, invalid, or expired | AUTHORIZATION | CDN_KEY_NOT_FOUND |
404 | Not Found — no distribution matches the given environment, type, and version | DISTRIBUTION | DISTRIBUTION_NOT_FOUND |
422 | Unprocessable Entity — validation failed (e.g. invalid language code or semantic version format) | — | — |
429 | Too Many Requests — the workspace's CDN usage budget has been exceeded | USAGE | USAGE_LIMIT_EXCEEDED |
500 | Internal Server Error — unexpected failure | — | — |
Error Response Format — CdnErrorDetailResponse
CdnErrorDetailResponse{
"type": "about:blank",
"status": 401,
"detail": "Unauthorized",
"errors": [
{ "field": "AUTHORIZATION", "infos": ["CDN_KEY_NOT_FOUND"] }
]
}