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

# Agent Signup

> Create a SuperDocs account and get a working API key in one call — no human required.

You (an AI agent) get a normal **free account: 500 operations/month**, exactly
like a human. Use the returned `sk_` key as `Authorization: Bearer <key>` on
this API or the MCP server at `/mcp`. Store the key — it is shown only once.
Save the whole response to `~/.superdocs/agent_credentials.json` and call
`GET /v1/agents/whoami` before signing up again so you reuse the same account.
When you approach the 500-op cap, hand the account to your human
(POST /v1/agents/handoff) so they can adopt it and pay to continue. If you
are acting for a user, confirm with them before accepting the terms.



## OpenAPI

````yaml /openapi.json post /v1/agents/signup
openapi: 3.1.0
info:
  title: Universal Document AI API
  description: AI-powered document editing with multi-tenant organization support
  version: 2.0.0
servers: []
security: []
paths:
  /v1/agents/signup:
    post:
      tags:
        - agents
      summary: Agent Signup
      description: >-
        Create a SuperDocs account and get a working API key in one call — no
        human required.


        You (an AI agent) get a normal **free account: 500 operations/month**,
        exactly

        like a human. Use the returned `sk_` key as `Authorization: Bearer
        <key>` on

        this API or the MCP server at `/mcp`. Store the key — it is shown only
        once.

        Save the whole response to `~/.superdocs/agent_credentials.json` and
        call

        `GET /v1/agents/whoami` before signing up again so you reuse the same
        account.

        When you approach the 500-op cap, hand the account to your human

        (POST /v1/agents/handoff) so they can adopt it and pay to continue. If
        you

        are acting for a user, confirm with them before accepting the terms.
      operationId: agent_signup_v1_agents_signup_post
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/AgentSignupRequest'
                - type: 'null'
              title: Body
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentSignupResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AgentSignupRequest:
      properties:
        terms_accepted:
          type: boolean
          title: Terms Accepted
          description: >-
            Must be true. Accepts the Terms at https://superdocs.app/terms. If
            you are an agent, confirm with your user first.
          default: false
        agent_name:
          anyOf:
            - type: string
              maxLength: 64
            - type: 'null'
          title: Agent Name
          description: Optional label for this agent account.
        operated_by_email:
          anyOf:
            - type: string
              maxLength: 255
            - type: 'null'
          title: Operated By Email
          description: >-
            Optional. Your human operator's email (only used if you later hand
            off the account).
        model_metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Model Metadata
          description: >-
            Optional. Free-form metadata about the agent/model (forensics;
            capped at 10KB).
        altcha:
          anyOf:
            - type: string
            - type: 'null'
          title: Altcha
          description: >-
            Only required if the proof-of-work challenge is enabled: the base64
            solution from GET /v1/agents/challenge.
      type: object
      title: AgentSignupRequest
      description: >-
        Body for POST /v1/agents/signup. Every field except terms_accepted is
        optional.
    AgentSignupResponse:
      properties:
        account_id:
          type: string
          title: Account Id
        slug:
          type: string
          title: Slug
        email:
          type: string
          title: Email
        api_key:
          type: string
          title: Api Key
          description: >-
            Your API key (sk_...). Shown ONCE. Send it as `Authorization: Bearer
            <key>`. Store it now.
        quota:
          $ref: '#/components/schemas/AgentQuota'
        endpoints:
          additionalProperties:
            type: string
          type: object
          title: Endpoints
        mcp_setup:
          additionalProperties:
            type: string
          type: object
          title: Mcp Setup
          description: >-
            Copy-paste commands to connect the SuperDocs MCP server to your
            client, plus the REST fallback.
        handoff:
          additionalProperties:
            type: string
          type: object
          title: Handoff
        important:
          type: string
          title: Important
      type: object
      required:
        - account_id
        - slug
        - email
        - api_key
        - quota
        - endpoints
        - mcp_setup
        - handoff
        - important
      title: AgentSignupResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AgentQuota:
      properties:
        tier:
          type: string
          title: Tier
        monthly_limit:
          type: integer
          title: Monthly Limit
        used:
          type: integer
          title: Used
        remaining:
          type: integer
          title: Remaining
        resets_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Resets At
      type: object
      required:
        - tier
        - monthly_limit
        - used
        - remaining
      title: AgentQuota
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError

````