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

# Generate new proof

> Submit a program for proving with specific input data.

    The input data must be a JSON object with an 'input' key containing an array of hex strings.
    Each hex string represents either:
    - Hex string of bytes (prefixed with 0x01)
    - Hex string of native field elements as u32 little endian (prefixed with 0x02)

    Available proof types:
    - `stark`: STARK proof (default)
    - `evm`: EVM-compatible proof

    ## Deferred child proofs (optional, multipart)

    To fold child stark proofs into this job's `verify_stark` deferral circuit,
    send `multipart/form-data` to the SAME endpoint: an `input` form field (the
    JSON body as a string) plus one `child_proofs` file part per child. Each
    part is a stark proof in the same JSON format `GET /v1/proofs/{id}/proof/stark`
    serves (`VersionedVmStarkProof`); part order = circuit packing order. The
    program's config must be deferral-enabled. Validation at submit is shallow
    (caps + JSON shape); keyset/program mismatches fail the job at prove time.

    ## Example Usage

    ```bash
    # Plain (no-deferral) submission — JSON body, unchanged:
    curl -X POST "https://api.axiom.xyz/v1/proofs?program_id=your-program-uuid&proof_type=stark" \
      -H "Axiom-API-Key: your-api-key" \
      -H "Content-Type: application/json" \
      -d '{
        "input": [
          "0x010A00000000000000",
          "0x02FF00000000000000"
        ]
      }'

    # Deferral submission — multipart with inline child proofs:
    curl -X POST "https://api.axiom.xyz/v1/proofs?program_id=your-program-uuid&proof_type=stark" \
      -H "Axiom-API-Key: your-api-key" \
      -F 'input={"input": ["0x010A00000000000000"]}' \
      -F 'child_proofs=@child0_stark_proof' \
      -F 'child_proofs=@child1_stark_proof'
    ```



## OpenAPI

````yaml POST /v1/proofs
openapi: 3.1.0
info:
  title: Axiom Proving API
  description: |-
    ## Axiom Proving Service API

        The Axiom Proving API allows you to compile, execute, and prove OpenVM programs on Axiom's cloud infrastructure.

        **Core Concepts:**
        - **Program**: Compiled OpenVM binary, versioned within a project (built via compilation API)
        - **Project**: Container for program versions - auto-created if not specified during program upload
        - **Proof**: Zero-knowledge proof of program execution
        - **Execution**: Test run without proof generation (faster, for debugging before proving)

        **Authentication:**
        - CLI endpoints (`/v1/`): API key in `Axiom-API-Key` header
        - Web console endpoints (`/console/v1/`): Bearer token authentication

        All endpoints require appropriate authentication for your organization.
        
  version: 2.0.0
servers:
  - url: https://api.axiom.xyz
    description: Production API
  - url: https://api.staging.app.axiom.xyz
    description: Staging API
security: []
paths:
  /v1/proofs:
    post:
      tags:
        - proofs
      summary: Submit Proof Request
      description: |-
        Submit a program for proving with specific input data.

            The input data must be a JSON object with an 'input' key containing an array of hex strings.
            Each hex string represents either:
            - Hex string of bytes (prefixed with 0x01)
            - Hex string of native field elements as u32 little endian (prefixed with 0x02)

            Available proof types:
            - `stark`: STARK proof (default)
            - `evm`: EVM-compatible proof

            ## Deferred child proofs (optional, multipart)

            To fold child stark proofs into this job's `verify_stark` deferral circuit,
            send `multipart/form-data` to the SAME endpoint: an `input` form field (the
            JSON body as a string) plus one `child_proofs` file part per child. Each
            part is a stark proof in the same JSON format `GET /v1/proofs/{id}/proof/stark`
            serves (`VersionedVmStarkProof`); part order = circuit packing order. The
            program's config must be deferral-enabled. Validation at submit is shallow
            (caps + JSON shape); keyset/program mismatches fail the job at prove time.

            ## Example Usage

            ```bash
            # Plain (no-deferral) submission — JSON body, unchanged:
            curl -X POST "https://api.axiom.xyz/v1/proofs?program_id=your-program-uuid&proof_type=stark" \
              -H "Axiom-API-Key: your-api-key" \
              -H "Content-Type: application/json" \
              -d '{
                "input": [
                  "0x010A00000000000000",
                  "0x02FF00000000000000"
                ]
              }'

            # Deferral submission — multipart with inline child proofs:
            curl -X POST "https://api.axiom.xyz/v1/proofs?program_id=your-program-uuid&proof_type=stark" \
              -H "Axiom-API-Key: your-api-key" \
              -F 'input={"input": ["0x010A00000000000000"]}' \
              -F 'child_proofs=@child0_stark_proof' \
              -F 'child_proofs=@child1_stark_proof'
            ```
      operationId: submit_proof_v1_proofs_post
      parameters:
        - name: program_id
          in: query
          required: true
          schema:
            type: string
            description: Program ID to generate proof for
            title: Program Id
          description: Program ID to generate proof for
        - name: proof_type
          in: query
          required: false
          schema:
            type: string
            description: 'The type of proof to generate. must be one of: evm, stark'
            default: stark
            title: Proof Type
          description: 'The type of proof to generate. must be one of: evm, stark'
        - name: num_gpus
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 10000
                minimum: 1
              - type: 'null'
            description: >-
              Number of GPUs to use for this proof. If not provided, uses the
              program's default_num_gpus setting.
            title: Num Gpus
          description: >-
            Number of GPUs to use for this proof. If not provided, uses the
            program's default_num_gpus setting.
        - name: priority
          in: query
          required: false
          schema:
            type: integer
            maximum: 10
            minimum: 1
            description: Priority level for this proof (1-10, where 10 is highest priority)
            default: 3
            title: Priority
          description: Priority level for this proof (1-10, where 10 is highest priority)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - input
              properties:
                input:
                  type: array
                  items:
                    type: string
                  description: >-
                    Hex string array: `0x01` prefix + bytes, or `0x02` prefix +
                    u32 LE field elements
            example:
              input:
                - '0x010A00000000000000'
          multipart/form-data:
            schema:
              type: object
              required:
                - input
              properties:
                input:
                  type: string
                  description: >-
                    JSON string with the same schema as the application/json
                    body
                child_proofs:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: >-
                    One VersionedVmStarkProof JSON file per deferred child; part
                    order = circuit packing order
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostResponse'
        '201':
          description: Proof job submitted successfully
        '400':
          description: Invalid input data or proof type
        '404':
          description: Program not found
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    PostResponse:
      properties:
        id:
          type: string
          title: Id
      type: object
      required:
        - id
      title: PostResponse
      description: Generic response for POST operations.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: Axiom-API-Key

````