Warp & Oz HTTP API reference

Oz Agent API

API for creating, managing, and querying Oz cloud agent runs. These endpoints allow users to programmatically spawn agents, list runs, and retrieve detailed run information.

Base URL: https://app.warp.dev/api/v1

Authentication: Bearer token (Warp API key). Obtain from account settings. Pass as Authorization: Bearer YOUR_API_KEY.

Full machine-readable spec: openapi.json

GET /agent

List available agents

Retrieve a list of available agents (skills) that can be used to run tasks. Agents are discovered from environments or a specific repository.

  • repo (query): Optional repository specification to list agents from (format: "owner/repo"). If not provided, lists agents from all accessible environments.
  • refresh (query): When true, clears the agent list cache before fetching. Use this to force a refresh of the available agents.
  • sort_by (query): Sort order for the returned agents. - "name": Sort alphabetically by name (default) - "last_run": Sort by most recently used
  • include_malformed_skills (query): When true, includes skills whose SKILL.md file exists but is malformed. These variants will have a non-empty `error` field describing the parse failure. Defaults to false.

GET /agent/connected-self-hosted-workers

List connected self-hosted workers

Retrieve currently connected self-hosted workers for the authenticated principal's team. Worker presence is derived from worker websocket heartbeats and may be briefly stale.

GET /agent/runs/{runId}/transcript

Get run transcript

Retrieve the raw conversation transcript for an agent run. Returns a 302 redirect to a time-limited download URL for the transcript.

  • runId (path, required): The unique identifier of the run

POST /agent/run

Run an agent task

Spawn a cloud agent with a prompt and optional configuration. The agent will be queued for execution and assigned a unique run ID.

POST /agent/runs

Run a cloud agent

Spawn a cloud agent with a prompt and optional configuration. The agent will be queued for execution and assigned a unique run ID.

GET /agent/runs

List agent runs

Retrieve a paginated list of agent runs with optional filtering. Results default to `sort_by=updated_at` and `sort_order=desc`.

  • limit (query): Maximum number of runs to return
  • cursor (query): Pagination cursor from previous response
  • sort_by (query): Sort field for results. - `updated_at`: Sort by last update timestamp (default) - `created_at`: Sort by creation timestamp - `title`: Sort alphabetically by run title - `agent`: Sort alphabetically by skill. Runs without a skill are grouped last.
  • sort_order (query): Sort direction
  • state (query): Filter by run state. Can be specified multiple times to match any of the given states.
  • name (query): Filter by agent config name
  • model_id (query): Filter by model ID
  • creator (query): Filter by creator UID (user or service account)
  • executor (query): Filter by the user or agent that executed the run. This will often be the same as the creator, but not always: users may delegate tasks to agents.
  • source (query): Filter by run source type
  • execution_location (query): Filter by where the run executed
  • created_after (query): Filter runs created after this timestamp (RFC3339 format)
  • created_before (query): Filter runs created before this timestamp (RFC3339 format)
  • updated_after (query): Filter runs updated after this timestamp (RFC3339 format)
  • environment_id (query): Filter runs by environment ID
  • skill (query): Filter runs by skill spec (e.g., "owner/repo:path/to/SKILL.md"). Alias for skill_spec.
  • skill_spec (query): Filter runs by skill spec (e.g., "owner/repo:path/to/SKILL.md")
  • schedule_id (query): Filter runs by the scheduled agent ID that created them
  • ancestor_run_id (query): Filter runs by ancestor run ID. The referenced run must exist and be accessible to the caller.
  • artifact_type (query): Filter runs by artifact type
  • q (query): Fuzzy search query across run title, prompt, and skill_spec

GET /agent/runs/{runId}

Get run details

Retrieve detailed information about a specific agent run, including the full prompt, session link, and resolved configuration.

  • runId (path, required): The unique identifier of the run

GET /agent/runs/{runId}/timeline

Get run timeline

Retrieve chronological setup and lifecycle timeline events for an agent run.

  • runId (path, required): The unique identifier of the run

GET /agent/runs/{runId}/conversation

Get normalized run conversation

Retrieve a run's conversation as a normalized sequence of messages and nested steps. The response groups text, tool activity, and event content into structured blocks.

  • runId (path, required): The unique identifier of the run

POST /agent/runs/{runId}/cancel

Cancel a run

Cancel an agent run that is currently queued or in progress. Once cancelled, the run will transition to a cancelled state. Not all runs can be cancelled. Runs that are in a terminal state (SUCCEEDED, FAILED, ERROR, BLOCKED, CANCELLED) return 400. Runs in PENDING state return 409 (retry after a moment). Self-hosted, local, and GitHub Action runs return 422.

  • runId (path, required): The unique identifier of the run to cancel

POST /agent/runs/{runId}/followups

Submit a follow-up message for a run

Send a follow-up message to an existing run. The server transparently routes the message based on the current state of the run (still queued, actively running, or ended). A 200 response means the follow-up was accepted; updated run state can be observed via `GET /agent/runs/{runId}`.

  • runId (path, required): The unique identifier of the run

GET /agent/conversations/{conversation_id}

Get normalized conversation

Retrieve a conversation directly by conversation ID in Warp's normalized task/message format.

  • conversation_id (path, required): The unique identifier of the conversation

POST /agent/schedules

Create a scheduled agent

Create a new scheduled agent that runs on a cron schedule. The agent will be triggered automatically based on the cron expression.

GET /agent/schedules

List scheduled agents

Retrieve all scheduled agents accessible to the authenticated user. Results are sorted alphabetically by name.

GET /agent/schedules/{scheduleId}

Get scheduled agent details

Retrieve detailed information about a specific scheduled agent, including its configuration, history, and next scheduled run time.

  • scheduleId (path, required): The unique identifier of the scheduled agent

PUT /agent/schedules/{scheduleId}

Update a scheduled agent

Update an existing scheduled agent's configuration. All fields except agent_config are required.

  • scheduleId (path, required): The unique identifier of the scheduled agent

DELETE /agent/schedules/{scheduleId}

Delete a scheduled agent

Delete a scheduled agent. This will stop all future scheduled runs.

  • scheduleId (path, required): The unique identifier of the scheduled agent

POST /agent/schedules/{scheduleId}/pause

Pause a scheduled agent

Pause a scheduled agent. The agent will not run until resumed.

  • scheduleId (path, required): The unique identifier of the scheduled agent

POST /agent/schedules/{scheduleId}/resume

Resume a scheduled agent

Resume a paused scheduled agent. The agent will start running according to its cron schedule.

  • scheduleId (path, required): The unique identifier of the scheduled agent

GET /agent/environments

List environments

Retrieve cloud environments accessible to the authenticated principal. Returns environments the caller owns, has been granted guest access to, or has accessed via link sharing.

  • sort_by (query): Sort order for the returned environments. - `name`: alphabetical by environment name - `last_updated`: most recently updated first (default)

GET /agent/models

List available models

Retrieve the list of LLM models available to the authenticated user for agent runs. The response includes which model is the default, as well as per-model metadata such as provider, cost, and whether the model is currently disabled (and why).

GET /agent/artifacts/{artifactUid}

Get artifact details

Retrieve an artifact by its UUID. For downloadable file-like artifacts, returns a time-limited signed download URL. For plan artifacts, returns the current plan content inline.

  • artifactUid (path, required): The unique identifier (UUID) of the artifact

GET /harness-support/transcript

Download the raw third-party harness transcript

Redirects to a signed download URL for the raw third-party harness transcript (e.g. `claude_code.json`) of the current task's conversation. Only supported for conversations produced by non-Oz harnesses; Oz conversations 400. This may only be called from within a cloud agent execution environment whose task already has an associated conversation (e.g. on a resumed run).

POST /agent/identities

Create an agent

Create a new agent for the caller's team. Agents can be used as the execution principal for team-owned runs.

GET /agent/identities

List agents

List all agents for the caller's team. Each agent includes an `available` flag indicating whether it is within the team's plan limit and may be used for runs.

GET /agent/identities/{uid}

Retrieve an agent

Retrieve a single agent by its unique identifier. The response includes an `available` flag indicating whether the agent is within the team's plan limit and may be used for runs.

  • uid (path, required): The unique identifier of the agent

PUT /agent/identities/{uid}

Update an agent

Update an existing agent.

  • uid (path, required): The unique identifier of the agent

DELETE /agent/identities/{uid}

Delete an agent

Delete an agent. All API keys associated with the agent are deleted atomically.

  • uid (path, required): The unique identifier of the agent