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

# onboarding.skip

> Access: public. Send a JSON body; unknown keys are rejected with 400 invalid_request (inputs are strict). Responses may gain fields additively — never remove or repurpose; ignore unknown response fields.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/onboarding.skip
openapi: 3.1.0
info:
  title: Dally API
  version: v1
  description: >-
    PRIVATE (posture 2026-09-01): the MCP connector is Dally's only supported
    surface; this REST surface serves internal harnesses only, and its keys are
    WorkOS-dashboard-issued, never product-issued (CONTEXT.md § Positions).
    Headless Dally v1 — Slack-shape RPC: every operation is POST
    /v1/<family.verb> with a JSON body. Cursor-only pagination ({items,
    has_more, next_cursor}; next_cursor null is the only end signal).
    Unversioned while private (Jim 2026-09-03): a retired name drops in the
    first migration after the deployed release stops naming it; inputs are
    strict, responses are tolerant.
servers:
  - url: https://dally.ai
    description: The production Headless Dally v1 API.
security: []
paths:
  /v1/onboarding.skip:
    post:
      tags:
        - onboarding
      summary: >-
        Skip the way in, which is what a creator who says they already know how
        to use Dally asks for: ends it for this room at whatever step it stands
        and answers with the room's state. A second call changes nothing.
      description: >-
        Access: public. Send a JSON body; unknown keys are rejected with 400
        invalid_request (inputs are strict). Responses may gain fields
        additively — never remove or repurpose; ignore unknown response fields.
      operationId: onboarding.skip
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties: {}
              additionalProperties: false
            example: {}
      responses:
        '200':
          description: Success. request_id is present on every response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  skipped:
                    type: boolean
                    description: >-
                      Whether this call ended the way in; false when it had
                      already ended.
                  onboarding:
                    type: object
                    properties:
                      step:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The last step this room reached on the way in; null
                          before its first card.
                      done:
                        type: boolean
                        description: Whether the way in has ended for this room.
                      ended_by:
                        description: >-
                          How the way in ended: the Skip write, a real question
                          before the card, or the card's last ask taken.
                        type: string
                        enum:
                          - skip
                          - question
                          - done
                      next:
                        description: >-
                          The next step, absent once the onboarding_canvas card
                          has been shown or the way in has ended.
                        type: object
                        properties:
                          step:
                            type: string
                            description: The step that follows.
                          card:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              The dally_show kind that renders its card; null
                              while no kind renders it yet.
                          follow_up:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              The line the card's button posts as the creator's
                              own next message; null when the card has no
                              posting button.
                        required:
                          - step
                          - card
                          - follow_up
                      say:
                        description: >-
                          What Dally says at this step, as written, before
                          rendering the card; present on hello.
                        type: string
                      skip:
                        description: >-
                          The write operation that ends the way in, while it is
                          open.
                        type: object
                        properties:
                          operation:
                            type: string
                            const: onboarding.skip
                            description: The write operation that ends the way in.
                          follow_up:
                            type: string
                            description: The line a creator who already knows Dally says.
                        required:
                          - operation
                          - follow_up
                    required:
                      - step
                      - done
                    description: >-
                      This room's place on the way in, as data, on every answer
                      while it is open. step is the last step this room reached,
                      null before its first card; done and ended_by say whether
                      and how it ended (skip, question or done). While next is
                      present, render next.card through dally_show, saying say
                      first, as written, when it is present. After the
                      onboarding_canvas card the way in runs itself: the card's
                      buttons record their own progress, so answer the creator
                      as usual; before that card, a real question ends the way
                      in. skip names the write that ends the way in,
                      onboarding.skip, and follow_up the line a creator who
                      already knows Dally says; when they say it, call
                      onboarding.skip.
                  show:
                    type: object
                    properties:
                      kind:
                        type: string
                        description: The dally_show kind that renders the connect card.
                      data:
                        type: object
                        properties:
                          platform:
                            type: string
                            const: instagram
                            description: The held platform the card connects.
                        required:
                          - platform
                        description: What the card connects.
                    required:
                      - kind
                      - data
                    description: >-
                      How it is shown: dally_write renders the connect card on
                      this very answer, the one door left open once the way in
                      ends; do not render it again.
                  request_id:
                    type: string
                    minLength: 1
                    description: >-
                      Server-minted id for this request. Present on every
                      response, success and error — quote it when reporting a
                      problem.
                required:
                  - skipped
                  - onboarding
                  - show
                  - request_id
              example:
                skipped: true
                onboarding:
                  step: hello
                  done: true
                  ended_by: skip
                show:
                  kind: connect_prompt
                  data:
                    platform: instagram
                request_id: req_01j8zkq
        default:
          description: >-
            Error — the real HTTP status carries the class; the body is always
            the one error envelope. Codes: invalid_request, stale_cursor,
            query_too_broad, unauthorized, forbidden, no_connected_accounts,
            stale_authority, not_found, precondition_failed, method_not_allowed,
            stale_snapshot, stale_revision, execution_payload_erased,
            exhaustiveness_unavailable, rate_limited, internal_error,
            unavailable, search_unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - bearerAuth: []
        - apiKeyAuth: []
components:
  schemas:
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - stale_cursor
                - query_too_broad
                - unauthorized
                - forbidden
                - no_connected_accounts
                - stale_authority
                - not_found
                - precondition_failed
                - method_not_allowed
                - stale_snapshot
                - stale_revision
                - execution_payload_erased
                - exhaustiveness_unavailable
                - rate_limited
                - internal_error
                - unavailable
                - search_unavailable
              description: >-
                The machine-readable error code. The set only grows — treat
                unknown codes by falling back to the HTTP status class.
            message:
              type: string
              description: >-
                A human-readable teaching message: what failed and the exact
                fix, never just the symptom.
            details:
              description: >-
                Optional structured context for this code — e.g.
                estimated_matches and ceiling on query_too_broad.
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
          description: The error object — the one shape every failure wears.
        request_id:
          type: string
          minLength: 1
          description: >-
            Server-minted id for this request. Present on every response,
            success and error — quote it when reporting a problem.
      required:
        - error
        - request_id
      description: The ONE error envelope (API-ERR-001).
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'A WorkOS-dashboard-issued internal API key on Authorization: Bearer.'
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: The same internal API key, accepted on x-api-key.

````