Assets

Reserve signed uploads in bulk

Changed on

Reserves up to 25 signed uploads in one request — the batch counterpart of POST /assets with source="signed-url", counted once against the workspace's rate limit instead of once per file. workspace_id, project_id and folder apply to every upload; an upload's own folder overrides the shared one. Each entry in assets echoes its index and carries either the single reservation's fields (asset_id, upload, upload_url, expires_at, url) or ok false with an error; a failed entry, such as an unsupported content_type, never stops the rest. GLB entries require project_id and exact size_bytes. A workspace this credential cannot write, or a project_id outside the workspace, fails the whole request. Upload each file's bytes using the returned descriptor: existing formats use multipart POST, while GLB uses raw-byte PUT to its resumable session. Then finish them in one call with POST /assets/complete. As on the single reservation, project_id associates each asset with a project; supported static media are surfaced on its canvas, while GLB Model3D assets are not auto-placed. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate, and a batch whose every entry was rejected releases its key (see the Idempotency guide).

post/assets/reserve

Request

  • Base URL
    https://app.flora.ai/api/v1
  • URL
    https://app.flora.ai/api/v1/assets/reserve
  • Auth
    HTTP bearer

Request body

workspace_idstring required

Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

project_idstring

Project identifier. Use the public API ID returned by list projects; it must start with prj_. Every upload is associated with this project. Supported static media are surfaced on its canvas after completion; GLB Model3D assets are not auto-placed.

folderstring

Destination folder for uploads that set none

Example request

{
  "workspace_id": "ws_abc123",
  "project_id": "prj_abc123",
  "folder": "campaign-assets",
  "uploads": [
    {
      "file_name": "hero.png",
      "content_type": "image/png",
      "folder": "campaign-assets"
    }
  ]
}

Response

Uploads reserved; each entry reports its own outcome.

Example response

{
  "assets": [
    {
      "asset_id": "asset_abc123",
      "workspace_id": "ws_abc123",
      "upload_url": "https://storage.googleapis.com/flora-user-assets"
    }
  ]
}

Changes

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • warning

      added the new not_configured enum value to the / response property for the response status

    • breaking

      the /// response's property type changed from object to no type for status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property //// from the response with the status

    • breaking

      removed the required property //// from the response with the status

    • info

      added the new optional request property //

    • info

      added subschema #1 subschema #2 to the /// response property anyOf list for the response status