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

# Deployment descriptor

> Chain ID, the order protocol address and the tokens with their decimals. Read at startup; cacheable for 60 seconds.



## OpenAPI

````yaml openapi.json GET /v1/config
openapi: 3.1.0
info:
  title: Aile Quote API
  version: v1-2026-11
  description: >-
    Get a price, send one transaction, receive the exact amount.


    **How it works**


    1. `GET /config` gives you the chain, the order protocol address
    (`contracts.lop`) and the tokens with their decimals.

    2. `GET /quote` gives you a price for a pair and an amount. Pass as `taker`
    the address that will send the transaction.

    3. From that address, approve `fill.allowanceTarget` for the token you sell.

    4. Send `fill.to`, `fill.data` and `fill.value` from that address before
    `expiresAt`.

    5. Read the receipt. The transaction delivers exactly `buyAmount` or
    reverts.


    **What a quote is**


    A quote is an order signed by the market maker. It is valid for about 30
    seconds, only the `taker` can use it, and it can be used once. `maxFirmSize`
    is the largest amount you can get right now at this rate, in both tokens.


    **What you can rely on**


    - Fields, routes and enumeration values are only ever added, never removed
    or changed in type.

    - Send `fill.to`, `fill.data` and `fill.value` exactly as returned.

    - `order`, `signature`, `maker` and the other `fill` fields are there for
    your information. Do not hard-code the maker address: it changes.

    - `maker.kind`, `signature.type`, `fill.method` and the problem `reason` can
    gain new values. Treat a `reason` you do not know as "no quote".


    **Access**


    Aile issues your API key. Send it as `Authorization: Bearer <key>` and keep
    it on your backend. `GET /quote` requires it. The other routes work without
    it; with it, their calls count against your own budget and are attributed to
    you instead of sharing the anonymous per-address limit. Over budget you get
    429 `key-rate-limit` with `Retry-After`. Use **Authorize** to try the routes
    on this page; the page forgets the key on reload.


    **Scope**


    Base mainnet, real assets. The pairs come from the market makers' books,
    between the tokens `GET /config` lists; a pair nobody quotes answers 400
    `bad-pair`.
servers:
  - url: https://app.aile.tech/api/base
    description: Base
security: []
tags:
  - name: Service
    description: Discover the chain, the order protocol and the tokens
  - name: Quotes
    description: Receive a signed order and ready calldata
  - name: Orders
    description: Track a fill by its order hash
paths:
  /v1/config:
    get:
      tags:
        - Service
      summary: Deployment descriptor
      description: >-
        Chain ID, the order protocol (`contracts.lop`: approve it for the sold
        token and send fills to it) and the tokens. `tokens` lists the
        deployment's tokens; `bookTokens` the tokens added on this network
        since. Both carry the address and the decimals to convert amounts. Read
        it at startup; cacheable for 60 seconds. A key is optional here: with
        one, the call is attributed to you and charged to your budget.
      operationId: getConfig
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Config'
      security:
        - {}
        - apiKey: []
components:
  schemas:
    Config:
      type: object
      properties:
        protocols:
          description: >-
            Deployments enabled for execution (fillable: true), each by its
            identity. Retired deployments are omitted from this list but
            retained internally for order history and event processing. The
            executors of a deployment are not public: the maker interface's
            registry answers them.
          type: array
          items:
            $ref: '#/components/schemas/PublishedDeployment'
        chainId:
          type: integer
        network:
          type: string
        contracts:
          type: object
          properties:
            lop:
              anyOf:
                - type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: 0x-prefixed 20-byte address
                - type: 'null'
              description: 'Aile core: EIP-712 verifyingContract and the spender to approve'
            settlement:
              anyOf:
                - type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: 0x-prefixed 20-byte address
                - type: 'null'
            commit:
              anyOf:
                - type: string
                - type: 'null'
              description: intent-protocol commit the contracts were built from
            operatorPass:
              anyOf:
                - type: string
                  pattern: ^0x[0-9a-fA-F]{40}$
                  description: 0x-prefixed 20-byte address
                - type: 'null'
              description: >-
                The operator pass (an AccessToken deployment): admin-console
                sign-in only, it grants nothing on chain. Null until it is
                deployed
          required:
            - lop
            - settlement
            - commit
            - operatorPass
          additionalProperties: true
        tokens:
          type: array
          items:
            $ref: '#/components/schemas/ConfigToken'
          description: The deployment's tokens
        bookTokens:
          description: >-
            The tokens operators added on this network (listed, in the order
            first added; [] when none, absent on an older gateway): they form
            market makers' own pairs only, with each other and with `tokens`,
            priced by market makers' books, never by AileFX's desk
          type: array
          items:
            $ref: '#/components/schemas/BookToken'
        explorerBaseUrl:
          anyOf:
            - type: string
            - type: 'null'
        quoteServers:
          type: object
          properties:
            requestKeys:
              type: object
              properties:
                keys:
                  type: array
                  items:
                    type: object
                    properties:
                      kty:
                        type: string
                        const: OKP
                      crv:
                        type: string
                        const: Ed25519
                      x:
                        type: string
                        description: The public key, base64url
                      kid:
                        type: string
                        description: 'Its RFC 7638 thumbprint: a request''s `keyid`'
                    required:
                      - kty
                      - crv
                      - x
                      - kid
                    additionalProperties: true
                  description: >-
                    The key the gateway signs with, then, during a rotation, the
                    next one; empty when it signs nothing
                signatureWindowSeconds:
                  type: integer
                  description: >-
                    How far a request's `created` may lie from a server's clock;
                    a nonce is kept twice as long
              required:
                - keys
                - signatureWindowSeconds
              additionalProperties: true
              description: >-
                A JWK set: every request to a registered quote server is signed
                under RFC 9421, algorithm `ed25519`, with one of these keys
          required:
            - requestKeys
          additionalProperties: true
          description: What a market maker's quote server needs from this network's gateway
        quotePairs:
          description: >-
            The only pairs quoted, either direction (QUOTE_PAIRS); absent = any
            two offered tokens
          type: array
          items:
            type: string
      required:
        - chainId
        - network
        - contracts
        - tokens
        - explorerBaseUrl
        - quoteServers
      additionalProperties: true
      description: Deployment descriptor; every client reads addresses from here
    PublishedDeployment:
      type: object
      properties:
        chainId:
          type: integer
        lop:
          type: string
          pattern: ^0x[0-9a-fA-F]{40}$
          description: 'The order protocol of this deployment: its EIP-712 verifyingContract'
        settlement:
          anyOf:
            - type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              description: 0x-prefixed 20-byte address
            - type: 'null'
        treasury:
          anyOf:
            - type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              description: 0x-prefixed 20-byte address
            - type: 'null'
          description: The treasury of this deployment, or null
        fillable:
          type: boolean
          description: >-
            true: enabled for execution. The public list carries fillable
            deployments only
        startBlock:
          description: The first block to inspect for this deployment, when configured
          type: string
          pattern: ^\d+$
      required:
        - chainId
        - lop
        - settlement
        - treasury
        - fillable
      additionalProperties: false
    ConfigToken:
      type: object
      properties:
        symbol:
          type: string
        name:
          type: string
        decimals:
          type: integer
        address:
          anyOf:
            - type: string
              pattern: ^0x[0-9a-fA-F]{40}$
              description: 0x-prefixed 20-byte address
            - type: 'null'
          description: null = not tradable on this deployment
        kind:
          type: string
          enum:
            - erc20
            - fiat
      required:
        - symbol
        - name
        - decimals
        - address
        - kind
      additionalProperties: true
    BookToken:
      type: object
      properties:
        symbol:
          type: string
          pattern: ^[A-Z][A-Z0-9]{1,11}$
          description: >-
            The token's own symbol(), upper-cased: a letter, then 1 to 11
            letters or digits
        name:
          type: string
          description: >-
            The token's own name() (control and format characters removed, at
            most 40 characters), else its symbol
        decimals:
          type: integer
          minimum: 0
          maximum: 18
          description: decimals() as read when the token was added
        address:
          type: string
          pattern: ^0x[0-9a-f]{40}$
          description: Lowercase
        kind:
          type: string
          const: erc20
      required:
        - symbol
        - name
        - decimals
        - address
        - kind
      additionalProperties: true
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        API key issued by Aile. Authorization: Bearer <key>. Required for
        quotes. Optional on the other routes: without it they share the
        anonymous per-address limit, with it the calls are attributed to you and
        charged to your own budget.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.