Sign inGet Started

Complete a media-library upload

POST
/v1/asset-upload-sessions/{upload_id}/complete
const upload = await bird.assets.uploads.complete("aus_01krdgeqcxet5s7t44vh8rt9mg");
console.log(upload.state);
Respons200
{
  "id": "aus_01krdgeqcxet5s7t44vh8rt9mg",
  "state": "pending",
  "folder_id": "asf_01krdgeqcxet5s7t44vh8rt9mg",
  "file": {
    "filename": "invoice.pdf",
    "content_type": "application/pdf",
    "size_bytes": 1024,
    "sha256": "4e2090a479f7ce6b17ad31f991988f12571bcafbd4a441cc4063644fc1400ae0"
  },
  "result": {
    "asset_id": "ast_01krdgeqcxet5s7t44vh8rt9mg"
  },
  "next": [
    {
      "kind": "operation"
    }
  ],
  "asset": {
    "id": "ast_01krdgeqcxet5s7t44vh8rt9mg",
    "url": "https://us1.assets.birdusercontent.com/6fcy8y6a483sewgnjk2g35y2qz/01krdgeqcxet5s7t44vh8rt9mg/document.pdf",
    "thumbnail_url": null,
    "name": "document.pdf",
    "content_type": "application/pdf",
    "kind": "document",
    "size_bytes": 48210,
    "width": null,
    "height": null,
    "alt_text": null,
    "folder_id": null,
    "deleted_at": null,
    "created_at": "2026-05-20T09:14:52Z",
    "updated_at": "2026-05-20T09:14:52Z"
  }
}

Verifies the uploaded file and publishes a media-library asset at a permanent public URL. Images use normal media-library processing; other supported files retain their bytes. Identical active files reuse the existing asset and metadata. Retries return the saved receipt and never recreate a removed result.

Parameter

upload_idstring

ID of the media-library upload session.

Payload Respons

id
string
wajib
state
string
wajib

Upload progress. Pending accepts a transfer; finalizing is checking and publishing it. Completed has a saved result. Rejected, cancelled and expired allow no new upload instruction or publication. An already issued upload URL can remain usable until its expiry.

Possible values: pending, finalizing, completed, rejected, cancelled, expired

expires_at
string
wajib

Absolute session expiry. Completion must finish before this deadline; starting it or refreshing an upload instruction does not extend it.

name
string
wajib

Frozen display name for a newly published asset.

alt_text
nullable string
wajib

Frozen alternative text, or null when omitted.

folder_id
nullable string
wajib

Frozen destination folder, or null for the library root.

file
object
wajib

Exact properties of the original file. Calculate size and SHA-256 from its bytes before creating a session. Images allow up to 5,242,880 bytes; other supported media allow up to 25,000,000 bytes.

Tampilkan atribut turunan
result
nullable object
wajib

Saved publication receipt, or null until completed.

Tampilkan atribut turunan
last_error
nullable object
wajib

Last completion error, or null when no failure is recorded.

Tampilkan atribut turunan
next
array of object
wajib

Available next steps for this session.

Tampilkan atribut turunan
next.kind
string
wajib

What you do about this step.

  • operation: call the operation named in operation, then read again.
  • external: act somewhere this API does not reach, then read again.
  • wait: nothing is asked of you, so read again later.
  • terminal: nothing you do resolves this, so stop retrying.

Tolerate a value you do not recognize: show the description and offer no action.

Possible values (may grow over time): operation, external, wait, terminal

next.description
string
wajib

A short, human-readable label for the step, suitable for display.

next.operation
string

The operationId to call. Present only when kind is operation. The operation's own schema says how to call it; this says only which one, and what to address it with.

next.params
object

The parameters that address the operation, by name: {"sender_id": "…"} for an operation on /v1/sms/senders/{sender_id}/requirements. A parameter the operation takes in its query string is given the same way, so an operation addressed as ?subject_id= carries {"subject_id": "…"}. Every parameter the call needs is here, whether its value came from the thing you were acting on or is fixed for this step, so you can make the call from this object alone. Present only when kind is operation and the operation names a subject. A request body, when the operation takes one, is described by the operation's own schema and never appears here.

next.url
string

A URL to open. Present only when kind is external, and only when the step has one. An external step whose description says to go and do something with no URL to open is normal.

asset
nullable object
wajib

Canonical asset when available, or null before completion or when unavailable.

Tampilkan atribut turunan