# POST /v1/deployments

> Create one on base 'bash'.

In [Deployments API](https://vestra.ai/developers/reference/api/deployments.md): How your Bash is set up, in versions: apply a whole vestra.yaml, promote, roll back, and the interview that drafts the file.

Send `Authorization: Bearer vk_test_...` on every call.

Create one on base 'bash'. It starts with a draft version.

Your API key, scope `setup` or `all`. On the card: [`deploy`](https://vestra.ai/developers/deploy.md). Over HTTP it is made from the contract: fill in every value.

## Request

Headers:

- `Idempotency-Key` (`string`): Send the same key to retry this call safely for 24 hours.

Body:

- `name` (`string`, required): Its name, as people read it, 1 to 120 characters. Limits: 1 to 120 characters. Example: `Trip rescue`.
- `slug` (`string`): Its name in URLs and refs: lowercase letters, digits and dashes, up to 63. Absent: made from `name`. Example: `trip-rescue`.
- `description` (`string`): What it is for, up to 2,000 characters. Limits: at most 2000 characters.
- `manifest` (`map of any`): The version's settings as a manifest: `instructions`, `language`, `model`, `mcp_servers`, `mcp_tool_policy`, `apps`, `approvals`, `memory`, `notebooks`, `skills`, `tools`, `environment`, `browser` and `limits`. A field left out takes its default.
- `note` (`string`): A note on this version, up to 500 characters, such as what changed. Limits: at most 500 characters. Example: `Adds the refund tool.`.

## Answers 201

- `id` (`string`): The deployment's id. Example: `dep_8f2k`.
- `object` (`"deployment"`): Always `deployment`.
- `name` (`string`): Its name, as people read it.
- `slug` (`string`): Its name in URLs and refs: send it where a route takes `{deployment_id}`. Example: `trip-rescue`.
- `description` (`string`): What it is for; empty when none was given.
- `base` (`"bash"`): What it is built on: always `bash`.
- `status` (`"active" | "archived"`): `active`, or `archived` (put away: no new conversation or version reaches it).
- `draft_version` (`integer`): The version test keys run. A new save moves it there; a promote with a test key moves it to the version named, older ones included.
- `live_version` (`integer | null`): The version live keys run; null until one is promoted.
- `created_at` (`string`): When it was made, as an ISO 8601 date and time in UTC.
- `updated_at` (`string`): When it last changed, as an ISO 8601 date and time in UTC.

## Code

**HTTP**

```bash
curl -X POST "$VESTRA_BASE_URL/v1/deployments" \
  -H "Authorization: Bearer $VESTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Trip rescue"
  }'
```

**TypeScript, Python, CLI, MCP**: No sample in your language for this route, so here it is over HTTP.
