Sign inGet Started

Open a browser fallback for a media upload

POST
/v1/asset-upload-sessions/{upload_id}/browser
const handoff = await bird.assets.uploads.handoff(
  "aus_01krdgeqcxet5s7t44vh8rt9mg",
);
if (handoff.browser_url) console.log(handoff.browser_url);
Resposta200
{
  "session": {
    "id": "aus_01krdgeqcxet5s7t44vh8rt9mg",
    "state": "pending",
    "expires_at": "2026-11-04T23:00:00Z",
    "name": "Invoice",
    "alt_text": null,
    "folder_id": null,
    "file": {
      "filename": "invoice.pdf",
      "content_type": "application/pdf",
      "size_bytes": 1024,
      "sha256": "4e2090a479f7ce6b17ad31f991988f12571bcafbd4a441cc4063644fc1400ae0"
    },
    "result": null,
    "last_error": null,
    "next": [],
    "asset": null
  },
  "browser_url": "https://bird.com/dashboard/w/ws_01krdgeqcxet5s7t44vh8rt9mg/media-library/uploads/aus_01krdgeqcxet5s7t44vh8rt9mg",
  "next": [
    {
      "kind": "external",
      "description": "Open browser_url and have a person with asset write access select the original file and publish it. Their browser must reach the storage hostname. Opening the page does not complete the upload."
    },
    {
      "kind": "operation",
      "operation": "getAssetUploadSession",
      "params": {
        "upload_id": "aus_01krdgeqcxet5s7t44vh8rt9mg"
      },
      "description": "After the person finishes, read the saved result using the original workspace and connection."
    }
  ]
}

Offers an existing upload session to a signed-in person with asset write access in its workspace. Only the same OAuth connection or API key that created the session can request this fallback. The file, metadata, capacity reservation and one-hour deadline stay unchanged. Repeating the request returns the same page for a pending session. A non-pending session returns its current state without a browser URL. Enabling the handoff allows any currently authorized person in that workspace to complete or cancel it, independently of the original connection's continued access. The person must select matching file bytes; opening the page never publishes them.

Parâmetros

upload_idstring

ID of the media-library upload session.

Payload de resposta

session
object
obrigatório

The original upload session and any saved publication receipt. In this response, session.next is empty; follow the top-level next steps.

Mostrar atributos secundários
session.id
string
obrigatório
session.state
string
obrigatório

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

session.expires_at
string
obrigatório

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

session.name
string
obrigatório

Frozen display name for a newly published asset.

session.alt_text
nullable string
obrigatório

Frozen alternative text, or null when omitted.

session.folder_id
nullable string
obrigatório

Frozen destination folder, or null for the library root.

session.file
object
obrigatório

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.

Mostrar atributos secundários
session.result
nullable object
obrigatório

Saved publication receipt, or null until completed.

Mostrar atributos secundários
session.last_error
nullable object
obrigatório

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

Mostrar atributos secundários
session.next
array of object
obrigatório

Available next steps for this session.

Mostrar atributos secundários
session.asset
nullable object
obrigatório

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

Mostrar atributos secundários
session.asset.created_at
string
obrigatório
session.asset.updated_at
string
obrigatório
session.asset.id
string
obrigatório
session.asset.url
string
obrigatório

The asset's permanent public URL. Safe to embed or link in sent messages; for a document the usable form is a link.

session.asset.thumbnail_url
nullable string
obrigatório

A small preview of the asset, for rendering a picker or a grid. Intended for your own interfaces rather than for embedding in messages. Null for every kind but image: generating a preview of a video, an audio file, or a document would mean rendering its contents, which the library does not do. Show an icon for the kind instead.

session.asset.name
string
obrigatório

The asset's display name. Defaults to the uploaded file's name.

session.asset.content_type
string
obrigatório

The stored file's media type, determined from its contents.

session.asset.kind
string
obrigatório

The category a media-library asset's type falls into. Use it to group or filter a mixed library.

  • image: covers PNG, JPEG, and GIF.
  • video: covers MP4, WebM, and QuickTime.
  • audio: covers MP3, M4A, Ogg, and WAV.
  • document: covers PDF.

Possible values (may grow over time): image, video, audio, document

session.asset.size_bytes
integer
obrigatório

The stored file's size in bytes. Images are re-encoded on upload, so for those this can differ from the size of the file you sent. Every other kind is stored byte-for-byte.

session.asset.width
nullable integer
obrigatório

The stored image's width in pixels. Null for every kind but image.

session.asset.height
nullable integer
obrigatório

The stored image's height in pixels. Null for every kind but image.

session.asset.alt_text
nullable string
obrigatório

Default alternative text for the asset. Use it as the starting point for an image description when inserting the asset into content. Updating this field does not update descriptions already copied into saved content.

session.asset.folder_id
nullable string
obrigatório

The folder the asset is filed in, or null when it sits at the top level of the library. Filing an asset never changes its URL.

session.asset.deleted_at
nullable string
obrigatório

When the asset was removed from the library, or null if it is still listed. A removed asset keeps serving at its original URL.

browser_url
nullable string
obrigatório

Bird page for a pending session, or null when it no longer accepts an upload. The link grants no access; the person must sign in and have asset write permission in the workspace.

next
array of object
obrigatório

Ordered steps to finish the fallback or read its outcome.

Mostrar atributos secundários