Docs

Start here

Signed URLs for what a job produced

GET/v1/jobs/{id}/assetson https://api.auray.ai/v1

Signs and does not proxy: fetch the URLs directly.

Signs and does not proxy: fetch the URLs directly. They live fifteen minutes, which is what makes soft delete real, and never past the files themselves, which are deleted three days after the job was made: a link signed in a job's last minutes dies with its file. Once a job is past its three days this answers 410 expired with reason: retention_ended until the retention sweep removes the job, normally within minutes, and 404 not_found after that. Spends the egress bucket in whole megabytes when it signs, not when a link is fetched: a signed link can be fetched again until it expires, and asking for the links again spends the bucket again.

#Authentication

Authorization: Bearer auray_sk_… — assets:read. Signing is metered as egress, once per call; fetching a signed link is not counted.

#Request

#Path parameters

NameTypeRequiredDescription
idstringyes

#Example request

curl https://api.auray.ai/v1/jobs/photo_docs-mtpb1vnh/assets \
  -H "Authorization: Bearer $AURAY_API_KEY"

#Responses

#200 OK

OK

FieldTypeRequiredDefaultDescription
idstringno—
objectstringno—One of "asset_list".
productstringno—external covers every model somebody else runs, each at its own address. chat is accepted and delivers no webhook event: a chat turn is answered by the request that paid for it. One of "photo", "music", "video", "threed", "chat", "external".
expires_atstringno—May be null.
megabytes_chargedintegerno—
assetsobject[]no—
assets[].indexintegerno—
assets[].kindstringno—
assets[].filenamestringno—
assets[].content_typestringno—
assets[].bytesintegerno—May be null.
assets[].urlstringno—A URL.

Headers:

HeaderDescription
RateLimit-LimitBurst capacity.
RateLimit-Remaining
RateLimit-ResetSeconds until refill.
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-ResetUnix seconds. The X- spelling is what client libraries read.
X-Request-Id

#401 Unauthorized

#402 Payment Required

#403 Forbidden

#404 Not Found

#409 Conflict

#410 Gone

#413 Payload Too Large

request_too_large — the signed URLs would cost more of the egress bucket than the bucket can ever hold. Ask for a smaller job, or a larger plan.

The error body: error, message, docs (the entry that explains it) and request_id.

#429 Too Many Requests

#500 Internal Server Error

job_read_failed — your job could not be read, which is not the same as having no assets. Retry; nothing was signed and nothing was charged against egress.

The error body: error, message, docs (the entry that explains it) and request_id.

#503 Service Unavailable

#Status codes

StatusMeaning
200OK
401Unauthorized
402Payment Required
403Forbidden
404Not Found
409Conflict
410Gone
413request_too_large — the signed URLs would cost more of the egress bucket than the bucket can ever hold.
429Too Many Requests
500job_read_failed — your job could not be read, which is not the same as having no assets.
503Service Unavailable

Every refusal names its code, and every code is explained at Errors.

Start typing to search every page of the documentation.

Up arrow Down arrow to moveEnter to openEscape to close