Files

Request signed upload URL (recommended)

Changed on

Get a signed URL to upload a file directly to storage, bypassing the server. This is the recommended upload method for large files.

Flow:

  1. Call this endpoint with content_type and file_size_bytes
  2. POST to the returned upload_url with header x-goog-resumable: start to get a session URI
  3. PUT your file content to the session URI (supports chunked/resumable uploads)
  4. Use the returned file_id as input to generation endpoints

Allowed types: application/x-zip-compressed, application/zip, audio/mpeg, audio/wav, font/otf, font/ttf, image/heic, image/heic-sequence, image/heif, image/heif-sequence, image/jpeg, image/png, image/webp, model/gltf-binary, video/mp4. Max size: 100 MB for video, meshes and zip bundles, 64 MB for images and audio, 16 MB for fonts. Upload URL expires in 15 minutes.

post/v2/workspaces/{workspace_id}/files/upload-url

Request

  • Base URL: https://api.app.layer.ai/api
  • URL: https://api.app.layer.ai/api/v2/workspaces/{workspace_id}/files/upload-url
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://auth.app.layer.ai/authorize, token URL https://auth.app.layer.ai/oauth/token)
    • OAuth 2 (client credentials, token URL https://api.app.layer.ai/api/oauth/token, scopes: library:write)

Path parameters

workspace_idstring uuid required

Id of the workspace that owns the resource.

Headers

Idempotency-Keystring

Opaque key making a retry of this request return the first result. A 2xx response is replayed for 24 hours with Idempotent-Replayed: true. A 4xx releases the key. A 5xx, or a request still running, holds the key for 120 seconds, during which a retry gets 409; after that a retry executes again. The key covers the method, path, query, and byte-identical body it was first used with; reusing it for a different request is rejected with 422. Protection is best effort: if the key store is unavailable, or a record is lost early, a retry can execute again even after an earlier 409. See the Idempotency section of the API description.

Request body

content_typestring required

MIME type of the file to upload.

file_namestring nullable

Optional file name.

file_size_bytesinteger required

Expected file size in bytes. Used to enforce upload limits.

source_type'pose' | 'reference' | 'mask' | 'composite' | 'google_drive' | 'miro' | 'transformed_reference' | 'skill_resource' | 'skill_bundle'

Response

Successful Response

file_idstring uuid required

Unique identifier for the file. Use as input to generation endpoints after upload completes.

upload_urlstring required

Signed upload URL. POST to this URL to initiate a resumable upload, then PUT file chunks to the session URI returned in the Location header. Expires in 15 minutes.

content_typestring required

MIME type to use when uploading.

source_type'pose' | 'reference' | 'mask' | 'composite' | 'google_drive' | 'miro' | 'transformed_reference' | 'skill_resource' | 'skill_bundle'

Changes

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status

    • info

      the endpoint scheme security serviceAccount was added to the API

    • info

      the security scope library:write was removed from the endpoint's security scheme oauth2