Artifacts
Build artifact management — upload, list, download via signed URLs. Time-limited share tokens and token-authorized artifact delivery.
Downloads an artifact using a scoped download token. No session auth required — the token itself is the authorization. For S3/R2 storage, redirects to a presigned URL.
Path Parameters
Scoped download token
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/install/artifact/string"Returns local artifact bytes using the signed path token.
Path Parameters
Signed local download token
Response Body
application/octet-stream
application/json
application/json
curl -X GET "https://example.com/install/download/string""string"Returns an Apple property-list manifest authorized by the scoped token in the URL.
Path Parameters
Artifact install token
Response Body
application/xml
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/install/ios/string/manifest.plist""string"Revokes a scoped download token so it can no longer be used.
Authorization
bearer_auth In: header
Path Parameters
Download token ID
Response Body
application/json
application/json
curl -X DELETE "https://example.com/v1/artifact-tokens/string"{ "revoked": true}Resolves a time-limited path token and redirects to the backing storage URL. The token is the authorization; no session bearer token is used.
Path Parameters
Scoped download token
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/artifacts/dl/string"Returns the artifact bytes using the signed path token.
Path Parameters
Signed local download token
Response Body
application/octet-stream
application/json
application/json
curl -X GET "https://example.com/v1/artifacts/download/string""string"Returns an Apple property-list manifest authorized by the install token in the URL.
Path Parameters
Artifact install token
Response Body
application/xml
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/artifacts/install/ios/string/manifest.plist""string"Backward-compatible alias for signed local artifact downloads.
Path Parameters
Signed local download token
Response Body
application/octet-stream
application/json
application/json
curl -X GET "https://example.com/v1/artifacts/local-download/string""string"Stores a bounded binary artifact using the signed path token. The token is the authorization; no session bearer token is used.
Path Parameters
Signed local upload token
Request Body
application/octet-stream
Raw artifact bytes
TypeScript Definitions
Use the request body type in TypeScript.
binaryResponse Body
application/json
application/json
application/json
curl -X PUT "https://example.com/v1/artifacts/local-upload/string" \ -H "Content-Type: application/octet-stream" \ -d 'string'Authorization
bearer_auth In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/v1/artifacts/query" \ -H "Content-Type: application/json" \ -d '{ "build_ids": [ "string" ] }'{ "artifacts": [ { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" } ]}Returns a signed download URL for an artifact. URLs expire after 15 minutes.
Authorization
bearer_auth In: header
Path Parameters
Artifact ID
Response Body
application/json
application/json
curl -X POST "https://example.com/v1/artifacts/string/download-link"{ "download_url": "string", "expires_at": 0}Creates a one-hour install session for an APK or install-ready signed IPA. QA viewers may use this endpoint through their artifact read permission.
Authorization
bearer_auth In: header
Path Parameters
Artifact ID
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/artifacts/string/install-link"{ "download_url": "string", "expires_at": 0, "install_url": "string", "manifest_url": "string", "platform": "android"}Generates a scoped, time-limited download token for a specific artifact. The token can be shared with external users who don't have an account.
Authorization
bearer_auth In: header
Path Parameters
Artifact ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/artifacts/string/scoped-token" \ -H "Content-Type: application/json" \ -d '{}'{ "download_url": "string", "expires_at": 0, "id": "string", "prefix": "string", "single_use": true, "token": "string"}Lists all scoped download tokens for a specific artifact, including expired and revoked ones.
Authorization
bearer_auth In: header
Path Parameters
Artifact ID
Response Body
application/json
curl -X GET "https://example.com/v1/artifacts/string/scoped-tokens"{ "tokens": [ { "artifact_id": "string", "created_at": 0, "created_by": "string", "created_by_email": "string", "expires_at": 0, "id": "string", "is_expired": true, "is_revoked": true, "is_used": true, "prefix": "string", "revoked_at": 0, "single_use": true, "used_at": 0 } ]}Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
curl -X GET "https://example.com/v1/builds/string/artifacts"{ "artifacts": [ { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" } ]}Authorization
bearer_auth In: header
Path Parameters
Project ID
Query Parameters
Maximum artifacts to return (defaults to 200, max 200)
int64Response Body
application/json
application/json
curl -X GET "https://example.com/v1/projects/string/artifacts"{ "artifacts": [ { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" } ]}Runner creates an artifact record and gets a signed upload URL.
Authorization
bearer_auth In: header
Path Parameters
Runner ID
Build/Job ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/artifacts" \ -H "Content-Type: application/json" \ -d '{ "artifact_type": "string", "name": "string" }'{ "artifact": { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" }, "upload_url": "string"}Authorization
bearer_auth In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/artifacts/string/abort" \ -H "Content-Type: application/json" \ -d '{}'{ "artifact": { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" }}Authorization
bearer_auth In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/artifacts/string/complete" \ -H "Content-Type: application/json" \ -d '{}'{ "artifact": { "artifact_type": "apk", "build_id": "string", "checksum": "string", "created_at": 0, "expires_at": 0, "file_path": "string", "file_size": 0, "id": "string", "metadata": {}, "name": "string", "state": "string" }}