Skip to main content

Overview

Workspace files are the root uploads in a personal workspace — the same files the CREAO web Files panel shows for that workspace. They are not thread artifacts, agent skill files, personal drive items, or organization shared files. Typical journey:
  1. POST /v1/workspaces to create a personal workspace
  2. POST /v1/workspaces/{workspace_id}/files to upload a CSV, PDF, or image
  3. POST /v1/runs with the same workspace_id and an agent_id
  4. The agent can list and read those files during the run
The agent does not need to be assigned to the workspace. Both the workspace and the agent must belong to the Account API key owner. Team workspaces return WORKSPACE_NOT_FOUND. File operations do not consume credits. Uploading a file with the same display name again creates a new file; it does not overwrite.
Agent skill files stay on /v1/agents/{agent_id}/files. That API is list, download, and delete only — it does not upload.

Upload a file

Send multipart/form-data with a single file field.
The response is 201. id is the stable file_id for later get or delete calls. Limits match the web Files panel: 10 MB by default, 100 MB for Volume accounts. Accepted types follow the same allowlist as web uploads (common documents, images, spreadsheets, archives, and code files). Oversized files return 413 FILE_TOO_LARGE. Rejected types return 400 UNSUPPORTED_FILE_TYPE.

List files

Query parameters: The list includes only workspace-root uploads. Thread products created during chats or runs are not returned.

Download a file

download_url is a presigned URL that expires in 1 hour.

Delete a file

Use files in a run

Pass the same workspace_id on POST /v1/runs or POST /v1/realtime/runs. The agent then sees the uploaded files as workspace uploads.
Binding rules:
  • New conversation — CREAO stores workspace_id on the conversation and returns it on the run.
  • Existing conversation, omit workspace_id — the run inherits the conversation’s bound workspace.
  • Existing conversation, first bind — if the conversation has no workspace yet, the provided workspace_id is written.
  • Mismatch — if the conversation is already bound to a different workspace, the request returns 409 WORKSPACE_MISMATCH.
GET /v1/runs/{run_id} includes workspace_id when the conversation is bound. Agent create and edit runs do not accept workspace_id.

Errors

See also the OpenAPI operations under Workspace Files.