> ## Documentation Index
> Fetch the complete documentation index at: https://wiredesk.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Start an onboarding

> Builds a trial agent from a public website, for an AI agent setting Wiredesk up for someone with no account yet. **Needs no API key.** Reads a few pages, drafts the agent's name, greeting and instructions, crawls the whole site in the background, and returns an API key that works for this trial only, until it expires a week later. Give the person `claim_url` once the setup checklist is done.

Limited to 20 requests a minute and 10 trials a day per IP address. The trial's chats stop at $2 of usage until someone claims it.



## OpenAPI

````yaml /api-reference/openapi.json post /onboarding
openapi: 3.1.0
info:
  title: Wiredesk API
  version: 1.0.0
  description: >-
    Read and change a Wiredesk workspace: agents, conversations, contacts, leads
    and knowledge, and talk to an agent. Authenticate with an API key from
    Developers → API keys. Every response carries an x-request-id header, which
    Developers → Logs finds the request by.
servers:
  - url: https://wiredesk.ai/api/v1
security:
  - bearerAuth: []
tags:
  - name: Agents
    description: 'The workspace''s agents: their name, greeting, instructions and channels.'
  - name: Chat
    description: >-
      Send a customer's message to an agent and get its reply, without the chat
      widget.
  - name: Knowledge
    description: >-
      What an agent answers from: pasted text and websites, and the sources
      added in the dashboard.
  - name: Conversations
    description: Conversations on every channel, and their transcripts.
  - name: Contacts
    description: The people the agents talk to, by phone number, email or your own id.
  - name: Leads
    description: Leads the agents captured.
  - name: Onboarding
    description: >-
      Agent-first onboarding: an AI agent builds a trial agent from a website,
      and a person claims it.
paths:
  /onboarding:
    post:
      tags:
        - Onboarding
      summary: Start an onboarding
      description: >-
        Builds a trial agent from a public website, for an AI agent setting
        Wiredesk up for someone with no account yet. **Needs no API key.** Reads
        a few pages, drafts the agent's name, greeting and instructions, crawls
        the whole site in the background, and returns an API key that works for
        this trial only, until it expires a week later. Give the person
        `claim_url` once the setup checklist is done.


        Limited to 20 requests a minute and 10 trials a day per IP address. The
        trial's chats stop at $2 of usage until someone claims it.
      operationId: start_onboarding
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - website_url
              properties:
                website_url:
                  type: string
                  description: The business's public website.
                purpose:
                  type: string
                  enum:
                    - answers
                    - support
                    - bookings
                    - custom
                  default: answers
                  description: >-
                    What the agent is for: answering questions about the
                    business, support for existing customers, taking bookings,
                    or something else.
                agent_name:
                  type: string
                  maxLength: 120
                  description: >-
                    Your name, as the AI agent doing the setup. Shown to the
                    person on the claim page.
                client_id:
                  type: string
                  maxLength: 120
                  description: Your runtime's own stable id, if it has one.
            example:
              website_url: https://acmeplumbing.com
              agent_name: Claude
      responses:
        '201':
          description: The trial, and the key for it
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    allOf:
                      - $ref: '#/components/schemas/Onboarding'
                      - type: object
                        properties:
                          api_key:
                            type: string
                            description: >-
                              `wd_…`. Works for this trial only, until
                              `expires_at` or a claim. Shown this once.
                          api_base:
                            type: string
                            format: uri
                          mcp_url:
                            type: string
                            format: uri
                            description: The same key works with the MCP server.
                          setup:
                            type:
                              - array
                              - 'null'
                            description: >-
                              What is left to do before the person sees the
                              agent. Null once the trial is gone.
                            items:
                              $ref: '#/components/schemas/SetupItem'
              example:
                data:
                  id: ob_3f9a1c2d4e5f60718293a4b5c6d7e8f9
                  object: onboarding
                  status: active
                  agent_id: 8f0e…
                  website_url: https://acmeplumbing.com/
                  setup_agent: Claude
                  claim_url: >-
                    https://console.wiredesk.ai/try/ob_3f9a1c2d4e5f60718293a4b5c6d7e8f9
                  claim:
                    email: null
                    plan: free
                    claimed_at: null
                  created_at: '2026-10-10T12:00:00.000Z'
                  expires_at: '2026-10-17T12:00:00.000Z'
                  api_key: wd_…
                  api_base: https://wiredesk.ai/api/v1
                  mcp_url: https://wiredesk.ai/api/mcp
                  setup:
                    - key: knowledge
                      state: pending
                      detail: Still reading the website. Check again in a minute.
                    - key: instructions
                      state: done
                      detail: 164 words.
                    - key: greeting
                      state: done
                      detail: Acme Plumbing, how can I help?
                    - key: appearance
                      state: done
                      detail: 'Brand colour #0f766e, read from the website.'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '400':
          description: website_url is missing or not a public website
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '429':
          description: 'Too many from this address: 20 requests a minute, 10 trials a day'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '502':
          description: The website could not be read, or the draft failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
        '503':
          description: Onboarding is not available right now
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
      security: []
components:
  schemas:
    Onboarding:
      type: object
      description: >-
        An agent-first onboarding: a trial agent built from a website before
        anyone had an account, and where it went.
      properties:
        id:
          type: string
          description: '`ob_` and 32 hex characters.'
        object:
          type: string
          const: onboarding
        status:
          type: string
          enum:
            - active
            - claimed
            - deleted
            - expired
          description: >-
            `active` until someone claims it, it is deleted, or its week runs
            out.
        agent_id:
          type:
            - string
            - 'null'
          description: >-
            The trial's agent; once claimed, the agent in the claimer's
            workspace.
        website_url:
          type: string
        setup_agent:
          type:
            - string
            - 'null'
          description: The `agent_name` it was started with.
        claim_url:
          type: string
          format: uri
          description: >-
            The one link for the person: they chat with the agent there, and
            claim it.
        claim:
          type: object
          properties:
            email:
              type:
                - string
                - 'null'
              description: Prefilled on the sign-up form.
            plan:
              type: string
              const: free
              description: A claimed agent is always on the Free plan.
            claimed_at:
              type:
                - string
                - 'null'
              format: date-time
        created_at:
          type: string
          format: date-time
        expires_at:
          type: string
          format: date-time
          description: Unclaimed by then, the trial is deleted.
    SetupItem:
      type: object
      properties:
        key:
          type: string
          enum:
            - knowledge
            - instructions
            - greeting
            - appearance
        state:
          type: string
          enum:
            - done
            - pending
            - warning
          description: '`pending` is in progress or not started; `warning` needs a look.'
        detail:
          type: string
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - unauthorized
                - spend_cap_reached
                - read_only_key
                - channel_disabled
                - knowledge_full
                - not_found
                - method_not_allowed
                - already_exists
                - conflict
                - rate_limited
                - internal_error
                - upstream_error
                - not_configured
            message:
              type: string
          additionalProperties: true
  headers:
    RequestId:
      description: >-
        A unique id for this request, on every response including errors.
        Developers → Logs finds the request by it; quote it to support.
      schema:
        type: string
        format: uuid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key, `wd_...`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.