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

> Full detail for a single instrument, including mints, tick size, minimum size and current readiness.

# Get Instrument

Detail for one symbol. Prices and sizes are integers scaled by the instrument's
governed `price_scale`; never send a float. The REST object does not expose the
circuit-breaker bound or `price_scale`; read the finalized on-chain
`MarketConfig` when independently verifying those values.

## See also

* [List Instruments](list-instruments.mdx)


## OpenAPI

````yaml api-reference/openapi/darknyx-public.yaml GET /instruments/{symbol}
openapi: 3.1.0
info:
  title: Darknyx TEE API
  version: 4.1.0
  description: |
    Public + authenticated REST and WebSocket API for the Darknyx dark pool
    TEE matching layer. One attested endpoint may expose several independently
    routed spot markets. Pairs with the v2 on-chain custody program
    (vault, program ID `C63vKvysCzX55PKraas4Wc22ijqjGJQdPC1mrzCFVWZx`).
  contact:
    name: Darknyx engineering
  license:
    name: PolyForm Perimeter License 1.0.1
    url: https://polyformproject.org/licenses/perimeter/1.0.1
servers:
  - url: https://api.darknyx.example.com
    description: Mainnet placeholder; use the origin published with a deployment.
  - url: https://api.devnet.darknyx.example.com
    description: Devnet placeholder; use the origin published with a deployment.
security: []
tags:
  - name: auth
    description: OAuth2 client-credentials and bearer-token lifecycle.
  - name: attestation
    description: |
      Darknyx engine and transport attestation plus the deployment gateway's
      separate evidence bundle. Programmatic clients verify the certificate on
      their actual connection with `/transport-attestation` before any
      credential or sensitive write. `/evidences/*` describes surrounding
      ingress infrastructure and is not a substitute for the engine check.
  - name: info
    description: |
      Application/instance metadata, boot-session id, and settlement signers.
      Verify measured identity through `/attestation`, not self-reported fields.
  - name: instruments
    description: Public market metadata.
  - name: orders
    description: Place / cancel / modify / inspect orders.
  - name: system
    description: Public engine liveness + server time (GTT slot conversion).
  - name: account
    description: Per-account open orders and preferences. Balances remain client-derived.
  - name: tree
    description: >-
      Convenience Merkle-tree mirror; clients can verify the same state on
      Solana.
  - name: transparency
    description: Public solvency snapshot + engine identity + aggregate stats.
  - name: settlement
    description: Batch settlement status (TEE → L1 tx_signature lookup).
paths:
  /instruments/{symbol}:
    get:
      tags:
        - instruments
      summary: Single instrument detail.
      description: |
        Returns one configured market. Use its canonical symbol unchanged in
        signed order requests.
      parameters:
        - name: symbol
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Instrument detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Instrument'
        '404':
          description: Unknown symbol.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/PublicRateLimited'
components:
  schemas:
    Instrument:
      type: object
      description: >
        One isolated market served by this attested venue. Every returned

        instrument shares the same verified-origin/session identity but has its
        own

        governed mint pair, book, oracle, and proof batches.
      required:
        - symbol
        - base_mint
        - quote_mint
        - tick_size
        - min_order_size
        - trading_enabled
        - oracle
      properties:
        symbol:
          type: string
          description: Canonical symbol signed into an order and used for book routing.
          example: SOL-USDC
        base_mint:
          type: string
          description: Base SPL mint pubkey (base58).
        quote_mint:
          type: string
          description: Quote SPL mint pubkey (base58).
        tick_size:
          type: string
          description: Raw integer price increment in protocol price units.
        min_order_size:
          type: string
          description: Raw integer minimum amount in the base mint's smallest units.
        trading_enabled:
          type: boolean
          description: |
            Current fail-closed readiness for new placement, modification, and
            matching on this market. A false value does not block cancellation,
            reads, or settlement reconciliation. Clients must still handle a
            racing 503 from an order write.
        oracle:
          type: object
          required:
            - type
            - pubkey
            - source
            - publish_time_ms
            - age_ms
            - max_age_ms
          properties:
            type:
              type: string
              enum:
                - pyth_pull_v2
                - pyth_push_v2
              description: >-
                Pyth adapter-family discriminator paired with source (router
                quorum uses pull_v2; finalized Solana accounts use push_v2).
            pubkey:
              type: string
              description: Pyth feed identifier (32-byte hex).
            source:
              type: string
              enum:
                - pyth-router-quorum-v1
                - pyth-solana-push-v1
              description: Versioned oracle source selected exclusively at CVM boot.
            account:
              type: string
              description: >-
                Derived upgraded Pyth push-account PDA; present only for
                pyth-solana-push-v1.
            publish_time_ms:
              type:
                - integer
                - 'null'
              format: uint64
              description: >-
                Signed Pyth publish time of the currently cached price, or null
                before the first accepted update.
            age_ms:
              type:
                - integer
                - 'null'
              format: uint64
              description: >-
                Current age of the signed publish time, or null before the first
                accepted update.
            max_age_ms:
              type:
                - integer
                - 'null'
              format: uint64
              description: >-
                Source-specific fail-closed signed-age budget (5 s router; 7 min
                development finalized push).
    Error:
      type: object
      description: |
        The error envelope. Every non-2xx response renders as this shape, with
        the mapped HTTP status. Success responses are NOT enveloped (their typed
        body is returned directly). Every response — success and error — carries
        an `x-request-id` header for correlation with server logs.
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: |
            Stable numeric error code. Ranges: 1000–1099 request validation,
            1100–1199 auth, 1200–1299 conflict, 1300–1399 not found, 1400–1499
            rate limit, 5000+ server. See the Error Codes reference.

            One exception to the ranges: `1402` is returned with HTTP 503, not
            429. It signals that credential verification is momentarily at
            capacity and was refused rather than queued. Branch on the numeric
            code rather than inferring the status from its range.
          example: 1102
        message:
          type: string
          example: trading_key_signature does not verify against the canonical body
  responses:
    PublicRateLimited:
      description: |
        The venue-wide public-route allowance is exhausted (SW-02). Every
        unauthenticated route shares one weighted bucket: client traffic reaches
        the enclave through the dstack gateway, so all requests present the same
        source address and a per-caller limit here would bound the venue rather
        than any individual caller.

        Weights follow real cost — `/attestation` (a TDX quote per request,
        uncacheable because the caller's nonce is the point) is the heaviest,
        `/transparency` is moderate, and in-memory reads are ~100x lighter.
        Honest polling sits far inside the budget.

        `POST /auth/token` is deliberately EXEMPT from this bucket and cannot
        return this response: metering it venue-wide would let junk credentials
        exhaust a shared allowance and lock every real account out of
        authenticating. Its own `429`, documented on that operation, comes from
        the per-account login bucket instead.

        `Retry-After` carries the back-off in seconds.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

````