Skip to content
FLORA DocsGo to app

Create an asset upload

client.assets.create(AssetCreateParams { source, workspace_id, content_type, 2 more } body, RequestOptionsoptions?): AssetCreateResponse { asset_id, status, uploaded_via, 6 more }
POST/assets

Creates an asset from an allowlisted source URL or reserves a signed upload URL. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate.

ParametersExpand Collapse
body: AssetCreateParams { source, workspace_id, content_type, 2 more }
source: string

Asset source URL or signed-url upload mode

workspace_id: string

Workspace identifier

content_type?: string

Asset content type

file_name?: string

Asset file name

folder?: string

Destination folder

ReturnsExpand Collapse
AssetCreateResponse { asset_id, status, uploaded_via, 6 more }
asset_id: string

Asset identifier

status: "pending_upload" | "ready" | "failed"
One of the following:
"pending_upload"
"ready"
"failed"
uploaded_via: "url" | "signed_url"

Asset source

One of the following:
"url"
"signed_url"
url: string

Asset URL

formaturi
visibility: "workspace"
workspace_id: string

Workspace identifier

expires_at?: string

Expiration time for the upload URL

formatdate-time
upload?: Upload { content_type, file_field, form_fields, 2 more }
content_type: "multipart/form-data"
file_field: "file"
form_fields: Record<string, string>

Upload form fields

method: "POST"
url: string

Upload URL

formaturi
upload_url?: string

Upload URL (serialized)

Create an asset upload

import Flora from '@flora-ai/flora';

const client = new Flora({
  apiKey: process.env['FLORA_API_KEY'], // This is the default and can be omitted
});

const asset = await client.assets.create({ source: 'signed-url', workspace_id: 'ws_abc123' });

console.log(asset.asset_id);
{
  "asset_id": "asset_abc123",
  "status": "pending_upload",
  "uploaded_via": "url",
  "url": "https://example.com",
  "visibility": "workspace",
  "workspace_id": "ws_abc123",
  "expires_at": "2019-12-27T18:11:19.117Z",
  "upload": {
    "content_type": "multipart/form-data",
    "file_field": "file",
    "form_fields": {
      "foo": "string"
    },
    "method": "POST",
    "url": "https://example.com"
  },
  "upload_url": "https://upload.imagekit.io/api/v1/files/upload"
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}
Returns Examples
{
  "asset_id": "asset_abc123",
  "status": "pending_upload",
  "uploaded_via": "url",
  "url": "https://example.com",
  "visibility": "workspace",
  "workspace_id": "ws_abc123",
  "expires_at": "2019-12-27T18:11:19.117Z",
  "upload": {
    "content_type": "multipart/form-data",
    "file_field": "file",
    "form_fields": {
      "foo": "string"
    },
    "method": "POST",
    "url": "https://example.com"
  },
  "upload_url": "https://upload.imagekit.io/api/v1/files/upload"
}
{
  "error": {
    "code": "input_validation_error",
    "message": "prompt: Required",
    "fields": [
      {
        "field": "prompt",
        "message": "Required"
      }
    ]
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key."
  }
}
{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits."
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "Forbidden."
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found."
  }
}
{
  "error": {
    "code": "idempotency_duplicate",
    "message": "Duplicate idempotency key."
  }
}
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}
{
  "error": {
    "code": "unknown_error",
    "message": "An unknown error occurred."
  }
}