---
title: "Bootstrap resources for a connected user"
method: POST
path: "/v1/platform/connections/{connectionId}/bootstrap"
tags: ["Platform"]
---

# Bootstrap resources for a connected user

`POST /v1/platform/connections/{connectionId}/bootstrap`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/platform/connections/{connectionId}/bootstrap`
- Auth: HTTP bearer

Executes a template to create vault, agent, and policies for the connected user. Returns a claim URL and token for the user to claim their resources.

A template agent with raw signing turned on is created with
`raw_signing_enabled: true` and `raw_signing_policy: approve`, so each raw
signature waits for a human approval until the end user changes the policy.

## Path parameters

- `connectionId` string, uuid, required

## Request body

- BootstrapRequest
  - `template_id` string, uuid: Template to use. Falls back to the app's default template.
  - `return_to` string, uri: URL to redirect the user to after claiming resources.
  - `parameters` object: Template parameters substituted as `{{params.*}}` during bootstrap. Combined with `Idempotency-Key` header for params-aware idempotent replay.

## Response `201`

Resources bootstrapped

- BootstrapResponse
  - `claim_url` string, uri
  - `claim_token` string
  - `expires_in` integer: Seconds until the claim token expires
  - `connection_id` string, uuid
  - `summary` object
    - `vault_id` string, uuid, nullable
    - `agent_id` string, uuid, nullable
    - `agent_ids` string[]: All agent IDs provisioned by the template (when multiple agents are defined)
    - `policy_ids` string[]
    - `signing_key_chains` string[]: Chains with provisioned signing keys
    - `agent_api_key` string, nullable: First agent's one-time API key (ocv_ prefix). Kept for compatibility; prefer `agent_api_keys`, which covers every agent the template created.
    - `agent_api_keys` object[]: The created agent and its one-time API key. Exactly one entry: a template declaring more than one agent is refused with 400, because a key is returned once and cannot be re-issued to a platform app. Split such a template and bootstrap once per agent.
      - `agent_id` string, uuid
      - `api_key` string
    - `agent_evm_address` string, nullable: EOA address when provision_eoa is true in the template
    - `signing_keys` object[]: Provisioned signing key details (chain, address, public key)
      - `chain` string
      - `curve` string
      - `public_key` string
      - `address` string
    - `runtime_ids` string[]: IDs of runtimes provisioned by the template
    - `automation_ids` string[]: IDs of automations provisioned by the template

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/5fa0918f3b41?raw)
