---
title: "Create Deployment"
method: POST
path: "/v1/deployments?beta=true"
---

# Create Deployment

`POST /v1/deployments?beta=true`

## Headers

- `anthropic-version` string
- `anthropic-beta` string

## Request body

- BetaManagedAgentsCreateDeploymentParams — Request parameters for creating a `deployment`.
  - `name` string, required — Human-readable name for the deployment.
  - `description` string, nullable — Description of what the deployment does.
  - `agent` union, required
    - string
    - BetaManagedAgentsAgentParams — Specification for an Agent. Provide a specific `version` or use the short-form `agent="agent_id"` for the most recent version
      - `type` 'agent', required
      - `id` string, required — The `agent` ID.
      - `version` integer — The specific `agent` version to use. Omit to use the latest version. Must be at least 1 if specified.
  - `environment_id` string, required — ID of the `environment` defining the container configuration for sessions created from this deployment.
  - `vault_ids` string[] — Vault IDs for stored credentials the agent can use during sessions created from this deployment. Maximum 50.
  - `initial_events` BetaManagedAgentsDeploymentInitialEventParams[], required — Events to send to each session immediately after creation. At least 1, maximum 50.
    - union — An event sent to a session immediately after it is created. Supports `user.message`, `user.define_outcome`, and `system.message`.
      - object — Parameters for sending a user message to the session.
        - `type` 'user.message', required
        - `content` BetaManagedAgentsUserContentBlock[], required — Array of content blocks for the user message.
          - union — Content block in a user message. Can be `text`, `image`, or `document`.
            - object — Regular text content.
              - …
            - object — Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object — Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object — Placeholder for content withheld by Anthropic model policy.
              - …
      - object — Parameters for defining an outcome the agent should work toward. The agent begins work on receipt.
        - `type` 'user.define_outcome', required
        - `description` string, required — What the agent should produce. This is the task specification.
        - `rubric` union, required — Rubric for grading the quality of an outcome.
          - BetaManagedAgentsFileRubricParams — Rubric referenced by a file uploaded via the Files API.
            - `type` 'file', required
            - `file_id` string, required — ID of the rubric file.
          - BetaManagedAgentsTextRubricParams — Rubric content provided inline as text.
            - `type` 'text', required
            - `content` string, required — Rubric content. Plain text or markdown — the grader treats it as freeform text. Maximum 262144 characters.
        - `max_iterations` integer, nullable — Eval→revision cycles before giving up. Default 3, max 20.
      - object — Privileged context for the accompanying turn and all subsequent turns, appended to the session's system context as a `role: "system"` turn rather than replacing the top-level system prompt. At most one per request: it must be the final event and immediately follow the `user.message`, `user.tool_result`, or `user.custom_tool_result` it accompanies. Only supported on models that accept mid-conversation system messages.
        - `type` 'system.message', required
        - `content` BetaManagedAgentsSystemContentBlock[], required — System content blocks to append. Text-only.
          - `type` 'text', required
          - `text` string, required — The text content.
  - `resources` BetaManagedAgentsSessionResourceParams[] — Resources (e.g. repositories, files) to mount into each session's container. Maximum 500.
    - union — Union of resources that can be mounted into a session.
      - object — Mount a GitHub repository into the session's container.
        - `type` 'github_repository', required
        - `url` string, required — Github URL of the repository
        - `authorization_token` string, required — GitHub authorization token used to clone the repository.
        - `mount_path` string, nullable — Mount path in the container. Defaults to `/workspace/<repo-name>`.
        - `checkout` union
          - object
            - `type` 'branch', required
            - `name` string, required — Branch name to check out.
          - object
            - `type` 'commit', required
            - `sha` string, required — Full commit SHA to check out.
      - object — Mount a file uploaded via the Files API into the session.
        - `type` 'file', required
        - `file_id` string, required — ID of a previously uploaded file.
        - `mount_path` string, nullable — Mount path in the container. Defaults to `/mnt/session/uploads/<file_id>`.
      - object — Parameters for attaching a memory store to an agent session.
        - `type` 'memory_store', required
        - `memory_store_id` string, required — The memory store ID (memstore_...). Must belong to the caller's organization and workspace.
        - `access` 'read_write' | 'read_only' — Access mode for an attached memory store.
        - `instructions` string, nullable — Per-attachment guidance for the agent on how to use this store. Rendered into the memory section of the system prompt. Max 4096 chars.
  - `metadata` object — Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 chars, values up to 512 chars.
  - `schedule` BetaManagedAgentsScheduleParams — 5-field POSIX cron schedule. Literal wall-clock matching in the configured timezone.
    - `type` 'cron', required
    - `expression` string, required — 5-field POSIX cron expression: minute hour day-of-month month day-of-week (e.g., "0 9 * * 1-5" for weekdays at 9am). Day-of-week is 0-7 where 0 and 7 both mean Sunday. Extended cron syntax - seconds or year fields, and the special characters L, W, #, and ? - is not supported, nor are predefined shortcuts (@daily).
    - `timezone` string, required — Required. IANA timezone identifier (e.g., "America/Los_Angeles", "UTC"). Validated against the IANA timezone database.
  - `budget` BetaManagedAgentsBudget — A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
    - `type` 'limit', required
    - `max_list_cost` BetaMonetaryAmount, required — A monetary amount in a specific currency.
      - `currency` 'USD', required
      - `amount` string, required — Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.

## Response `200`

Successful response (OK)

- BetaManagedAgentsDeployment — A deployment is a configured instance of an agent — it binds the agent to everything needed to run it autonomously: an environment, credentials, initial events, and an optional schedule.
  - `type` 'deployment', required
  - `id` string, required — Unique identifier for this deployment.
  - `name` string, required — Human-readable name.
  - `description` string, nullable, required — Description of what the deployment does.
  - `agent` BetaManagedAgentsAgentReference, required — A resolved agent reference with a concrete version.
    - `type` 'agent', required
    - `id` string, required
    - `version` integer, required
  - `environment_id` string, required — ID of the `environment` where sessions run.
  - `vault_ids` string[], required — Vault IDs supplying stored credentials for sessions created from this deployment.
  - `initial_events` BetaManagedAgentsDeploymentInitialEvent[], required — Events sent to each session immediately after creation.
    - union — An event sent to a session immediately after it is created. Supports `user.message`, `user.define_outcome`, and `system.message`.
      - object — A user message sent to the session.
        - `type` 'user.message', required
        - `content` BetaManagedAgentsUserContentBlock[], required — Array of content blocks for the user message.
          - union — Content block in a user message. Can be `text`, `image`, or `document`.
            - object — Regular text content.
              - …
            - object — Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object — Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object — Placeholder for content withheld by Anthropic model policy.
              - …
      - object — An outcome the agent should work toward. The agent begins work on receipt.
        - `type` 'user.define_outcome', required
        - `description` string, required — What the agent should produce. This is the task specification.
        - `rubric` union, required — Rubric for grading the quality of an outcome.
          - BetaManagedAgentsFileRubric — Rubric referenced by a file uploaded via the Files API.
            - `type` 'file', required
            - `file_id` string, required — ID of the rubric file.
          - BetaManagedAgentsTextRubric — Rubric content provided inline as text.
            - `type` 'text', required
            - `content` string, required — Rubric content. Plain text or markdown — the grader treats it as freeform text.
        - `max_iterations` integer, nullable — Eval→revision cycles before giving up. Default 3, max 20.
      - object — Privileged context for the accompanying turn and all subsequent turns, appended to the session's system context as a `role: "system"` turn rather than replacing the top-level system prompt.
        - `type` 'system.message', required
        - `content` BetaManagedAgentsSystemContentBlock[], required — System content blocks to append. Text-only.
          - `type` 'text', required
          - `text` string, required — The text content.
  - `resources` BetaManagedAgentsSessionResourceConfig[], required — Resources attached to sessions created from this deployment. Echoes the input minus write-only credentials.
    - union — A configured session resource. Echoes the input minus write-only credentials.
      - object — A GitHub repository mounted into each session's container. The authorization token is write-only and never returned.
        - `type` 'github_repository', required
        - `url` string, required — Github URL of the repository
        - `mount_path` string, nullable — Mount path in the container. Defaults to `/workspace/<repo-name>`.
        - `checkout` union
          - object
            - `type` 'branch', required
            - `name` string, required — Branch name to check out.
          - object
            - `type` 'commit', required
            - `sha` string, required — Full commit SHA to check out.
      - object — A file mounted into each session's container.
        - `type` 'file', required
        - `file_id` string, required — ID of a previously uploaded file.
        - `mount_path` string, nullable — Mount path in the container. Defaults to `/mnt/session/uploads/<file_id>`.
      - object — A memory store attached to each session created from this deployment.
        - `type` 'memory_store', required
        - `memory_store_id` string, required — The memory store ID (memstore_...). Must belong to the caller's organization and workspace.
        - `access` 'read_write' | 'read_only' — Access mode for an attached memory store.
        - `instructions` string, nullable — Per-attachment guidance for the agent on how to use this store. Rendered into the memory section of the system prompt. Max 4096 chars.
  - `metadata` object, required — Arbitrary key-value metadata. Maximum 16 pairs.
  - `schedule` BetaManagedAgentsSchedule, required — 5-field POSIX cron schedule with computed runtime timestamps.
    - `type` 'cron', required
    - `expression` string, required — 5-field POSIX cron expression: minute hour day-of-month month day-of-week (e.g., "0 9 * * 1-5" for weekdays at 9am). Day-of-week is 0-7 where 0 and 7 both mean Sunday. Extended cron syntax - seconds or year fields, and the special characters L, W, #, and ? - is not supported, nor are predefined shortcuts (@daily).
    - `timezone` string, required — IANA timezone identifier (e.g., "America/Los_Angeles", "UTC").
    - `last_run_at` string, date-time — A timestamp in RFC 3339 format
    - `upcoming_runs_at` BetaTimestamp[] — Up to 5 timestamps of upcoming cron occurrences. Non-empty for active and paused deployments (reflects what the schedule would do if unpaused); empty once the deployment is archived (`archived_at` set). Each fire is offset by a small per-schedule jitter, so a run will actually start at or shortly after its listed time.
  - `status` 'active' | 'paused', required — Lifecycle status of a deployment.
  - `paused_reason` union, required — Why a deployment is paused. Non-null exactly when `status` is `paused`.
    - object — The caller invoked the pause endpoint on the deployment.
      - `type` 'manual', required
    - object — A scheduled fire recorded a failed run whose error auto-pauses the deployment.
      - `type` 'error', required
      - `error` union, required — The error that triggered an auto-pause. Matches the failed run's `error.type`.
        - object — The deployment's environment was archived.
          - `type` 'environment_archived_error', required
        - object — The deployment's agent was archived.
          - `type` 'agent_archived_error', required
        - object — The deployment's environment no longer exists.
          - `type` 'environment_not_found_error', required
        - object — A vault referenced by the deployment no longer exists.
          - `type` 'vault_not_found_error', required
        - object — A file resource referenced by the deployment no longer exists.
          - `type` 'file_not_found_error', required
        - object — A referenced resource no longer exists and its kind was not reported.
          - `type` 'session_resource_not_found_error', required
        - object — The deployment's workspace was archived.
          - `type` 'workspace_archived_error', required
        - object — The deployment's organization is disabled.
          - `type` 'organization_disabled_error', required
        - object — A memory store referenced by the deployment is archived.
          - `type` 'memory_store_archived_error', required
        - object — A skill referenced by the deployment's agent no longer exists.
          - `type` 'skill_not_found_error', required
        - object — A vault referenced by the deployment is archived.
          - `type` 'vault_archived_error', required
        - object — An unrecognized error auto-paused the deployment. A fallback variant; matches a run whose `error.type` is `unknown_error`.
          - `type` 'unknown_error', required
        - object — The deployment configures resources, but its environment is self-hosted and cannot mount them.
          - `type` 'self_hosted_resources_unsupported_error', required
        - object — An MCP server host used by the deployment's agent is blocked by the environment's network policy.
          - `type` 'mcp_egress_blocked_error', required
  - `budget` BetaManagedAgentsBudget — A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
    - `type` 'limit', required
    - `max_list_cost` BetaMonetaryAmount, required — A monetary amount in a specific currency.
      - `currency` 'USD', required
      - `amount` string, required — Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
  - `created_at` string, date-time, required — A timestamp in RFC 3339 format
  - `updated_at` string, date-time, required — A timestamp in RFC 3339 format
  - `archived_at` string, date-time, required — A timestamp in RFC 3339 format

## Other responses

- `400` — Invalid argument - The client specified an invalid argument
- `401` — Unauthenticated - The request does not have valid authentication credentials
- `403` — Permission denied - The caller does not have permission to execute the specified operation
- `404` — Not found - Some requested entity was not found
- `408` — Deadline exceeded - The deadline expired before the operation could complete
- `409` — Aborted - The operation was aborted due to concurrency issue
- `412` — Failed precondition - Operation was rejected because the system is not in required state
- `413` — Out of range - Operation was attempted past the valid range
- `429` — Resource exhausted - Some resource has been exhausted (rate limiting)
- `431` — Request header fields too large - Request metadata was too large
- `499` — Cancelled - The operation was cancelled by the client
- `500` — Internal - Internal server error
- `501` — Unimplemented - The operation is not implemented or supported
- `503` — Unavailable - The service is currently unavailable
- `504` — Deadline exceeded - Upstream service did not respond in time

---

[API](https://skmtc.net/anthropics/apis/anthropic-api.md) · [All operations](https://skmtc.net/anthropics/apis/anthropic-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/anthropics/anthropic-api/versions/93d8fd7d6493/schema)
