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

# Submit a production-access declaration

> Owner-JWT only. Moves the tenant from `sandbox_only` (or `production_denied`) to `declaration_pending` for manual Sly admin review. SSO identity (verified email, name, provider, organization) is auto-attached server-side — you don't re-enter it. See [Production access](/get-started/production-access) for the full lifecycle.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/tenants/declare-production
openapi: 3.1.0
info:
  title: Sly API
  description: >-
    The Agentic Economy Platform — stablecoin payments, agent wallets,
    multi-protocol commerce, and AI agent orchestration.
  version: 1.0.0
  contact:
    name: Sly
    url: https://getsly.ai
    email: support@getsly.ai
servers:
  - url: https://api.getsly.ai/v1
    description: Production
  - url: https://sandbox.getsly.ai/v1
    description: Sandbox
security:
  - bearerAuth: []
paths:
  /v1/tenants/declare-production:
    post:
      tags:
        - Tenants
      summary: Submit a production-access declaration
      description: >-
        Owner-JWT only. Moves the tenant from `sandbox_only` (or
        `production_denied`) to `declaration_pending` for manual Sly admin
        review. SSO identity (verified email, name, provider, organization) is
        auto-attached server-side — you don't re-enter it. See [Production
        access](/get-started/production-access) for the full lifecycle.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductionDeclarationInput'
      responses:
        '202':
          description: >-
            Declaration accepted; tenant is now `declaration_pending`. Approval
            emails + in-app notifications fire on the admin decision.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeclareProductionResponse'
        '400':
          description: >-
            Body fails schema validation (use case too short, terms not
            accepted, invalid URL).
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        type: string
                      code:
                        type: string
                      details: {}
        '403':
          description: >-
            Caller is not an owner-JWT (e.g. API key, agent token, member/viewer
            role), or the tenant is in a state that does not permit a new
            declaration (already pending, approved, or suspended).
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        type: string
                      code:
                        type: string
                      details: {}
      security:
        - bearerAuth: []
components:
  schemas:
    ProductionDeclarationInput:
      type: object
      properties:
        intended_use_case:
          type: string
          minLength: 20
          maxLength: 1000
          description: >-
            Free-form description of the integration. The denser the
            description, the faster the review.
        expected_monthly_volume_usd:
          type: number
          exclusiveMinimum: 0
          description: >-
            Best-effort monthly volume estimate. Influences the initial beta
            ceiling.
        website_url:
          type: string
          format: uri
          description: Public-facing site or repo. Speeds up identity verification.
        accepted_terms:
          type: boolean
          enum:
            - true
          description: Acceptance of the live-money-movement terms. Must be true.
      required:
        - intended_use_case
        - accepted_terms
    DeclareProductionResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ProductionAccessStatus'
        kyaTier:
          type: integer
        message:
          type: string
      required:
        - status
        - kyaTier
        - message
    Error:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
        details: {}
        request_id:
          type: string
      required:
        - error
    ProductionAccessStatus:
      type: string
      enum:
        - sandbox_only
        - declaration_pending
        - production_approved
        - production_denied
        - production_suspended
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key (pk_test_* or pk_live_*), JWT session, agent token (agent_*),
        Ed25519 session (sess_*), or portal token (portal_*).

````