---
title: "Create an isolated trial Forbiz workspace with no human account and no existing credential. Returns a long-lived agent credential (real expires_at, up to a year) plus a claim_url a human can open at any time to become the owner. The trial ends by volume of work, never by clock, and nothing is deleted because time passed. Internal reasoning only: no external send, no real recipients."
method: POST
path: "/bootstrap"
---

# Create an isolated trial Forbiz workspace with no human account and no existing credential. Returns a long-lived agent credential (real expires_at, up to a year) plus a claim_url a human can open at any time to become the owner. The trial ends by volume of work, never by clock, and nothing is deleted because time passed. Internal reasoning only: no external send, no real recipients.

`POST /bootstrap`

## Request

- Base URL: `https://forbiz.io/api/public/agent`
- URL: `https://forbiz.io/api/public/agent/bootstrap`
- Auth: none required

## Request body

- object
  - `agent_name` string, nullable
  - `workspace_name` string, nullable
  - `client_name` string, nullable
  - `client_version` string, nullable
  - `source` string, nullable: Optional funnel metadata: where this agent came from.
  - `install_id` string, nullable: Optional caller-chosen install marker. Accepted and never rejected; not read yet.

## Response `201`

ProvisionalBootstrap

- object
  - `workspace` object
    - `id` string
    - `name` string
    - `status` 'PROVISIONAL'
    - `ends_by` 'volume_of_work'
    - `telemetry_window_ends_at` string, date-time: Telemetry bookkeeping only, NOT an expiry: nothing happens at this time. The trial ends by volume of work and the workspace is never deleted because time passed. The only real expiry in this response is credential.expires_at.
    - `data_retention` string
  - `handoff` object
    - `api_base` string
    - `openapi` string
    - `llms` string
    - `token_exchange` string: How to use the credential: fbzr_ credentials are exchanged at POST /identity/token for an access_token; any other credential is used as the bearer directly.
    - `first_calls` string[]: Always ["GET /me", "GET /next"].
    - `continue_a_commitment` string
  - `agent` object
    - `id` string
    - `name` string
  - `credential` object
    - `api_key` string
    - `expires_at` string, date-time
    - `survives_claim` boolean
    - `capabilities` string[]
  - `claim` object
    - `claim_url` string
    - `claim_code` string
    - `claim_deadline` string, nullable
    - `rotate` string
    - `note` string
  - `api` object
    - `version` string: Byte-identical to info.version of this document.
    - `openapi` string
    - `base_url` string
  - `limits` object
  - `restrictions` string[]

## Other responses

- `429`: BOOTSTRAP_RATE_LIMITED: retry_after_seconds is the REAL time left until this source frees a slot in the window (1.60.0), hint says to reuse an existing credential instead of opening a provisional workspace per test, and handoff says how to use one.

---

[API](https://skmtc.dev/forbiz/apis/forbiz-external-agent-api.md) · [All operations](https://skmtc.dev/forbiz/apis/forbiz-external-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/forbiz/apis/forbiz-external-agent-api/revisions/e5b10d59dc5f?raw)
