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

# Register option

> Register an arm.



## OpenAPI

````yaml /openapi/solverapi.openapi.json post /v1/arms
openapi: 3.1.0
info:
  description: >-
    Run approved AI models under data, cost, and time limits. A cost limit can
    stop another provider call after recorded spend reaches the limit; it cannot
    reverse a call already in progress. Each finished run returns a receipt
    naming the selected model and provider without including the prompt or model
    output. Use the model catalog for what your organization can run now.
    Provider secrets never appear in API requests or responses. Retry a mutation
    with the same Idempotency-Key and the same request body.
  title: Millwork API
  version: 1.0.0
servers:
  - url: https://api.getmillwork.dev
security: []
tags:
  - description: >-
      Submit work, check its status, cancel it, and read the result. The API
      calls each run an execution.
    name: Runs
  - description: A record of how a run was handled, without prompt or result content.
    name: Receipts
  - description: Models this organization can use now.
    name: Models
  - description: Providers and sign-in methods that can be connected.
    name: Available providers
  - description: Provider accounts connected to this organization.
    name: Provider connections
  - description: >-
      One-time browser steps for connecting a provider without sending its
      secret in an API request.
    name: Secure credential setup
  - description: Exact models and provider routes available through connected accounts.
    name: Provider models
  - description: Create, label, list, and revoke organization API keys.
    name: API keys
  - description: Organization members and invitations.
    name: Members
  - description: Metered usage and quota state.
    name: Usage
  - description: Account, plan and allowance snapshot.
    name: Account
  - description: Checkout, billing portal and billing profile.
    name: Billing
  - description: Webhook endpoints, deliveries and replay.
    name: Webhooks
  - description: Organization-scoped compliance export.
    name: Compliance export
  - description: >-
      Models, agents, and skills Millwork can choose for a run. The API calls
      each one an arm.
    name: Registered options
  - description: >-
      Checks that score output and can stop, retry, or choose another option
      within the request policy.
    name: Output checks
  - description: Routing proposals and their review lifecycle.
    name: Repair proposals
  - description: Aggregate evaluation trend and repair history.
    name: Evaluation
  - description: Publisher and release identity records for supported models.
    name: Model definitions
  - description: >-
      Protected provider-credential references. Secret material never appears in
      this API.
    name: Credential references
  - description: Dashboard browser sign-in, sign-up, session lookup, and sign-out.
    name: Browser access
  - description: Read-only demo session setup.
    name: Demo
  - description: Machine setup and the authenticated organization profile.
    name: Organizations
paths:
  /v1/arms:
    post:
      tags:
        - Registered options
      summary: Register option
      description: Register an arm.
      operationId: postArms
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              else:
                else:
                  if:
                    properties:
                      kind:
                        enum:
                          - skill
                  then:
                    required:
                      - artifact
                if:
                  properties:
                    kind:
                      enum:
                        - agent
                then:
                  required:
                    - endpoint
              if:
                properties:
                  kind:
                    enum:
                      - model
              properties:
                artifact:
                  additionalProperties: false
                  properties:
                    content:
                      maxLength: 262144
                      minLength: 1
                      type: string
                    editable_regions:
                      items:
                        minLength: 1
                        type: string
                      type: array
                    version:
                      minLength: 1
                      type: string
                  required:
                    - content
                    - version
                    - editable_regions
                  type: object
                capability_tags:
                  items:
                    minLength: 1
                    type: string
                  type: array
                cost_class:
                  $ref: '#/components/schemas/CostClass'
                credential_ref:
                  type: string
                data_class_grants:
                  items:
                    $ref: '#/components/schemas/DataClass'
                  minItems: 1
                  type: array
                display_name:
                  maxLength: 200
                  minLength: 1
                  type: string
                endpoint:
                  additionalProperties: false
                  properties:
                    auth_ref:
                      type: string
                    url:
                      format: uri
                      type: string
                  required:
                    - url
                    - auth_ref
                  type: object
                kind:
                  $ref: '#/components/schemas/ArmKind'
                lifecycle:
                  additionalProperties: false
                  properties:
                    cancellable:
                      type: boolean
                    long_running:
                      type: boolean
                    max_runtime_s:
                      minimum: 1
                      type: integer
                  type: object
                model_deployment_id:
                  maxLength: 200
                  minLength: 1
                  type: string
                model_id:
                  type: string
                provider:
                  type: string
              required:
                - kind
                - display_name
                - capability_tags
                - data_class_grants
              then:
                oneOf:
                  - not:
                      required:
                        - model_deployment_id
                    required:
                      - provider
                      - model_id
                      - credential_ref
                  - not:
                      anyOf:
                        - required:
                            - provider
                        - required:
                            - model_id
                        - required:
                            - credential_ref
                    required:
                      - model_deployment_id
              type: object
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                additionalProperties: false
                description: >-
                  Registration result. Millwork checks the selected type before
                  setting the status.
                properties:
                  arm_id:
                    type: string
                  artifact_hash:
                    description: skill kind only.
                    type: string
                  preflight:
                    additionalProperties: false
                    description: >-
                      Registration reachability probe report. Present only when
                      a probe ran (agent kind).
                    properties:
                      detail:
                        anyOf:
                          - type: string
                          - type: 'null'
                      http_status:
                        anyOf:
                          - type: number
                          - type: 'null'
                        description: >-
                          HTTP status the endpoint answered with; null when no
                          response arrived.
                      reachable:
                        type: boolean
                      reason_code:
                        anyOf:
                          - enum:
                              - scheme_rejected
                              - dns_resolution_failed
                              - private_range_rejected
                              - probe_timeout
                              - endpoint_unreachable
                              - authentication_failed
                            type: string
                          - type: 'null'
                    required:
                      - reachable
                      - reason_code
                      - http_status
                      - detail
                    type: object
                  status:
                    $ref: '#/components/schemas/ArmStatus'
                  status_reason:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - arm_id
                  - status
                  - status_reason
                type: object
          description: >-
            Registration result. Millwork checks the selected type before
            setting the status.
        4XX:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Request failure in RFC 7807 format. The `type` field identifies the
            reason. Validation errors list affected fields. Rate and quota
            errors include `retry_after_s` and the `Retry-After` header.
        5XX:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Server failure in RFC 7807 format. The response does not include
            internal error details.
      security:
        - bearerAuth: []
        - sessionCookie: []
components:
  schemas:
    CostClass:
      enum:
        - economy
        - standard
        - premium
    DataClass:
      enum:
        - public
        - sandbox
        - tenant_internal
    ArmKind:
      enum:
        - model
        - agent
        - skill
    ArmStatus:
      enum:
        - ready
        - degraded
        - disabled
    Problem:
      additionalProperties: false
      properties:
        detail:
          description: Short, safe, occurrence-specific description. Never a stack trace.
          type: string
        errors:
          description: Per-field validation failures (validation_failed only).
          items:
            additionalProperties: false
            properties:
              field:
                type: string
              message:
                type: string
            required:
              - field
              - message
            type: object
          type: array
        instance:
          description: Unique id for this occurrence, safe to quote in support requests.
          format: uuid
          type: string
        retry_after_s:
          description: >-
            Seconds to wait before retrying (rate_limited and quota_exceeded
            only; mirrored as the Retry-After header).
          type: integer
        status:
          description: HTTP status code, duplicated in the body per RFC 7807.
          type: integer
        title:
          description: Human-readable summary of the problem type.
          type: string
        type:
          description: Stable URI that identifies the error type.
          format: uri
          type: string
      required:
        - type
        - title
        - status
        - instance
      type: object
  securitySchemes:
    bearerAuth:
      description: Organization API key for application requests.
      scheme: bearer
      type: http
    sessionCookie:
      description: Dashboard browser session. Do not use this credential in an application.
      in: cookie
      name: solverapi_session
      type: apiKey

````