Version
GET

Download an attachment

/v1/attachments/{attachment}/download in the Attachments API.

curl -L https://api.example.test/v1/attachments/$ATTACHMENT_ID/download \  -H "Authorization: Bearer $TOKEN" \  -o checkout-wireframe.png

Streams the file's bytes with its name and MIME type. The attachment must be on an artefact the token may see.

GET
/v1/attachments/{attachment}/download

Requires ability

The token must hold this ability, or the call is refused with 403.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted in the app under Account Settings, then API Tokens, sent as Authorization: Bearer zg_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team, and optionally to one project, at mint time.

In: header

Path Parameters

attachment*string

The attachment, bound by the middleware.

Formatuuid

Responses

200OK

The file.

response-200?file
Formatbinary
401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (a zg_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who registered a row answers FORBIDDEN with the same status, and says so in its own description. On this endpoint: FORBIDDEN: when the token holder's role on the project does not carry attachment:view.

404Not found

An id in the path names nothing the token can see. TENANT_MISMATCH: the project sits outside the token's scope:project: allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred. On this endpoint: RESOURCE_NOT_FOUND: when the attachment is of a project the token may not see, on an artefact hidden from it, or missing.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

How is this guide?

Last updated on