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

# Track the status of an intent

> Returns the state of intents, quotes, and gasless jobs by hash, ID, or wallet. Valid lookups return 200; unknown IDs report status unknown.

Returns the state of intents, quotes, and gasless funding jobs. At least one filter is required; paging controls alone are rejected with `400`. Exact lookups (`intentHash`, `sourceTxHash`, `destinationTxHash`, `quoteId`, `jobId`) return `200` for a valid lookup, including an unknown ID reported with `status: "unknown"`. `wallet` returns a page of intents and is the only filter `status` can be combined with. A consumed quote reports `submitted` with its `intentHashes`, per-step `steps[]`, and `sourceTx` / `destinationTx` once known.

`quoteId` and `jobId` are bare UUIDs, without the `quote:` or `gasless:` prefix.

Requires `x-api-key`. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway can answer `403` with a plain JSON body (`{"Message": "User is not authorized ..."}`); a key that is unknown, revoked, or not enabled for v1 answers `401 invalid-api-key`. No requests-per-second quota is published. Handle `429` and honor `Retry-After` when present. See [Errors and retries](/api-reference/errors) for common errors and retry handling.

Examples use mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs. They are illustrative and must not be used to transfer funds.


## OpenAPI

````yaml api-v1.openapi.json GET /v1/intents/status
openapi: 3.1.0
info:
  title: Eco API
  version: v1
  description: >-
    Reference for the Eco API at https://api.eco.com/v1: quotes, chain and token
    discovery, gasless funding, intent status, and Circle Gateway fast deposits.
    Every operation requires an API key except the Circle Gateway operations,
    which are open.
servers:
  - url: https://api.eco.com
    description: Eco API
security: []
tags:
  - name: quotes
  - name: intents
  - name: status
  - name: discovery
  - name: circle-gateway
paths:
  /v1/intents/status:
    get:
      tags:
        - status
      summary: Track the status of an intent
      description: >-
        Returns the state of intents, quotes, and gasless funding jobs. At least
        one filter is required; paging controls alone are rejected with `400`.
        Exact lookups (`intentHash`, `sourceTxHash`, `destinationTxHash`,
        `quoteId`, `jobId`) return `200` for a valid lookup, including an
        unknown ID reported with `status: "unknown"`. `wallet` returns a page of
        intents and is the only filter `status` can be combined with. A consumed
        quote reports `submitted` with its `intentHashes`, per-step `steps[]`,
        and `sourceTx` / `destinationTx` once known.


        `quoteId` and `jobId` are bare UUIDs, without the `quote:` or `gasless:`
        prefix.


        Requires `x-api-key`. Partner pricing, attribution, and enabled features
        are tied to the key. Without a key the gateway can answer `403` with a
        plain JSON body (`{"Message": "User is not authorized ..."}`); a key
        that is unknown, revoked, or not enabled for v1 answers `401
        invalid-api-key`.


        No requests-per-second quota is published. Handle `429` and honor
        `Retry-After` when present.


        Examples use mainnet token and contract addresses with placeholder
        wallets, hashes, signatures, and IDs. They are illustrative and must not
        be used to transfer funds.
      operationId: intents.status
      parameters:
        - name: intentHash
          in: query
          required: false
          schema:
            type: string
          description: >-
            Exact lookup of one intent by its hash, as returned by `POST
            /v1/quotes`.
          example: '0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749'
        - name: sourceTxHash
          in: query
          required: false
          schema:
            type: string
          description: Exact lookup by the source-chain funding transaction hash.
        - name: destinationTxHash
          in: query
          required: false
          schema:
            type: string
          description: Exact lookup by the destination-chain fulfillment transaction hash.
        - name: quoteId
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            Exact lookup of a quote by its bare UUID, without the `quote:`
            prefix.
          example: 8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
        - name: jobId
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            Exact lookup of a gasless funding job by its bare UUID, without the
            `gasless:` prefix.
          example: 0f450218-1b2c-4d3e-8f9a-0b1c2d3e4f5a
        - name: wallet
          in: query
          required: false
          schema:
            type: string
            minLength: 1
          description: >-
            Pages through intents funded by, or delivered to, this wallet. The
            only filter that returns a collection.
          example: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - filled
              - settled
              - refunded
              - refundable
              - expired
              - failed
              - unknown
          description: >-
            Narrows a `wallet` page to one status. Rejected with `400` unless
            `wallet` is also supplied.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            minLength: 1
          description: Opaque cursor from a previous `nextCursor`.
        - name: limit
          in: query
          required: false
          schema:
            default: 20
            type: integer
            minimum: 1
            maximum: 50
          description: Page size for `wallet` lookups, 1-50. Default 20.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        type:
                          type: string
                          enum:
                            - intent
                            - quote
                            - gasless
                            - deposit-address
                        status:
                          type: string
                        updatedAt:
                          type:
                            - integer
                            - 'null'
                        intentHashes:
                          type: array
                          items:
                            type: string
                        txHash:
                          type:
                            - string
                            - 'null'
                        subStatuses:
                          type: array
                          items:
                            type: object
                            properties:
                              chainId:
                                type: integer
                              quoteIds:
                                type: array
                                items:
                                  type: string
                              txHash:
                                type:
                                  - string
                                  - 'null'
                              intentHashes:
                                type: array
                                items:
                                  type: string
                              state:
                                type: string
                                enum:
                                  - pending
                                  - submitted
                                  - published
                                  - failed
                            required:
                              - chainId
                              - quoteIds
                              - txHash
                              - intentHashes
                              - state
                        sourceTx:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            txHash:
                              type: string
                            token:
                              type: string
                            amount:
                              type: string
                          required:
                            - chainId
                            - txHash
                            - token
                            - amount
                        destinationTx:
                          type: object
                          properties:
                            chainId:
                              type: integer
                            txHash:
                              type: string
                            token:
                              type: string
                            amount:
                              type: string
                          required:
                            - chainId
                            - txHash
                            - token
                            - amount
                        steps:
                          type: array
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                enum:
                                  - SWAP
                                  - BRIDGE
                              intentHash:
                                type: string
                              status:
                                type: string
                              from:
                                type: object
                                properties:
                                  token:
                                    type: string
                                  amount:
                                    type: string
                                  chainId:
                                    type: integer
                                required:
                                  - token
                                  - amount
                                  - chainId
                              to:
                                type: object
                                properties:
                                  token:
                                    type: string
                                  amount:
                                    type: string
                                  chainId:
                                    type: integer
                                required:
                                  - token
                                  - amount
                                  - chainId
                              transactions:
                                type: object
                                properties:
                                  created:
                                    type: object
                                    properties:
                                      chainId:
                                        type: integer
                                      txHash:
                                        type: string
                                    required:
                                      - chainId
                                      - txHash
                                  fulfilled:
                                    type: object
                                    properties:
                                      chainId:
                                        type: integer
                                      txHash:
                                        type: string
                                    required:
                                      - chainId
                                      - txHash
                                  refunded:
                                    type: object
                                    properties:
                                      chainId:
                                        type: integer
                                      txHash:
                                        type: string
                                    required:
                                      - chainId
                                      - txHash
                            required:
                              - type
                              - intentHash
                              - status
                              - from
                              - to
                              - transactions
                      required:
                        - id
                        - type
                        - status
                        - updatedAt
                  nextCursor:
                    type:
                      - string
                      - 'null'
                required:
                  - results
                  - nextCursor
              examples:
                quote-active:
                  summary: >-
                    Live: a quote that has not been funded yet (GET
                    ?quoteId=<uuid>)
                  value:
                    results:
                      - id: quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
                        type: quote
                        status: active
                        updatedAt: 1789522700
                        steps: []
                    nextCursor: null
                quote-filled-detail:
                  summary: >-
                    Live: a funded quote whose intent was fulfilled, with
                    per-step transactions
                  value:
                    results:
                      - id: quote:c1ed3798-e227-45a6-ad7c-b805f9e7a392
                        type: quote
                        status: submitted
                        intentHashes:
                          - >-
                            0x28cf072bb7fcd236cb417ef542f91002a84e04afb4c144ceb3ded8056bfa790f
                        updatedAt: 1789432832
                        steps:
                          - type: BRIDGE
                            intentHash: >-
                              0x28cf072bb7fcd236cb417ef542f91002a84e04afb4c144ceb3ded8056bfa790f
                            status: FULFILLED
                            from:
                              token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                              amount: '1000000'
                              chainId: 8453
                            to:
                              token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                              amount: '989500'
                              chainId: 10
                            transactions:
                              created:
                                chainId: 8453
                                txHash: >-
                                  0x522dc811ae11692c9066747d24e96fa6d42315945aef9246ac19adb5663fe5c9
                              fulfilled:
                                chainId: 10
                                txHash: >-
                                  0xace13db990e6c9aac0957510443262a90c128795c30086a5b0e62ac713c20866
                        sourceTx:
                          chainId: 8453
                          txHash: >-
                            0x522dc811ae11692c9066747d24e96fa6d42315945aef9246ac19adb5663fe5c9
                          token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                          amount: '1000000'
                        destinationTx:
                          chainId: 10
                          txHash: >-
                            0xace13db990e6c9aac0957510443262a90c128795c30086a5b0e62ac713c20866
                          token: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                          amount: '989500'
                    nextCursor: null
                intent-filled:
                  summary: An intent delivered on the destination chain
                  value:
                    results:
                      - id: >-
                          intent:0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                        type: intent
                        status: filled
                        updatedAt: 1767225600
                        txHash: >-
                          0xbee3c510b4e912445589df6b04b46f5650604426e8c6200179df512a47f11459
                    nextCursor: null
                gasless-handoff:
                  summary: A gasless funding job whose intent has been published
                  value:
                    results:
                      - id: gasless:0f450218-1b2c-4d3e-8f9a-0b1c2d3e4f5a
                        type: gasless
                        status: published
                        updatedAt: 1767225600
                        intentHashes:
                          - >-
                            0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                        subStatuses:
                          - chainId: 8453
                            quoteIds:
                              - quote:8a7cbdcd-2aed-40b0-ab08-c4c10af15f23
                            txHash: >-
                              0xbee3c510b4e912445589df6b04b46f5650604426e8c6200179df512a47f11459
                            intentHashes:
                              - >-
                                0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                            state: published
                    nextCursor: null
                intent-unknown:
                  summary: 'Live: an intent hash the API has not seen (still 200)'
                  value:
                    results:
                      - id: >-
                          intent:0x239539a7cc10146f96a4c17cf041abaf19452c7dab4d0d6437d3b3c4ac03d0e3
                        type: intent
                        status: unknown
                        updatedAt: null
                    nextCursor: null
                wallet-page:
                  summary: A wallet page (GET ?wallet=…&limit=…)
                  value:
                    results:
                      - id: >-
                          intent:0x3f1886e7c3a4cab62b4a0661e393600f0917d5a514652e96623b0f17ce0d3749
                        type: intent
                        status: filled
                        updatedAt: 1767225600
                        txHash: >-
                          0xbee3c510b4e912445589df6b04b46f5650604426e8c6200179df512a47f11459
                      - id: >-
                          intent:0x239539a7cc10146f96a4c17cf041abaf19452c7dab4d0d6437d3b3c4ac03d0e3
                        type: intent
                        status: unknown
                        updatedAt: null
                    nextCursor: Y3Vyc29yOjE3NjcyMjU2MDA6aW50ZW50OjB4YWJhYg
        '400':
          description: Request failed validation
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                no-filter:
                  summary: No filter supplied
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: >-
                      at least one filter required (intentHash, sourceTxHash,
                      destinationTxHash, quoteId, jobId, wallet, status); paging
                      controls alone are not a filter
                    requestId: f371e43e6fd4406b10e19487b3170edf
                prefixed-quote-id:
                  summary: 'quoteId sent with its quote: prefix'
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: Invalid UUID
                    requestId: f371e43e6fd4406b10e19487b3170edf
                status-without-wallet:
                  summary: status without wallet
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: >-
                      status narrows a collection and cannot identify one on its
                      own; combine it with wallet
                    requestId: f371e43e6fd4406b10e19487b3170edf
                limit-too-large:
                  summary: limit above 50
                  value:
                    type: https://api.eco.com/v1/errors/invalid-request
                    title: Request failed validation
                    status: 400
                    code: invalid-request
                    detail: 'Too big: expected number to be <=50'
                    requestId: f371e43e6fd4406b10e19487b3170edf
        '401':
          description: >-
            The supplied x-api-key is unknown, revoked, or not enabled for the
            v1 API. Returned for every v1 endpoint by the gateway, with
            Content-Type application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/invalid-api-key
                title: API key is missing, unknown, or revoked
                status: 401
                code: invalid-api-key
                requestId: 98e4c42f-9c70-4539-843e-8d31803001e6
        '403':
          description: >-
            No API key supplied. The gateway rejects the request before it
            reaches the API, with a plain JSON body.
          content:
            application/json:
              example:
                Message: >-
                  User is not authorized to access this resource with an
                  explicit deny in an identity-based policy
        '429':
          description: Rate limit exceeded
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/rate-limit-exceeded
                title: Rate limit exceeded
                status: 429
                code: rate-limit-exceeded
                requestId: 1eac3d6cc2aafa524b0c47a039576f8c
        '500':
          description: Internal error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/internal-error
                title: Internal error
                status: 500
                code: internal-error
                requestId: 02dabcf0f4e3def9a6091526d3d21022
        default:
          description: Error (RFC 9457 problem+json; see x-error-catalog)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - ApiKey: []
components:
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        code:
          type: string
          description: >-
            Stable, machine-readable error code from the catalog. Branch on this
            and `status`, not on `title` or `detail`.
        detail:
          type: string
        instance:
          type: string
        legacyCode:
          type: string
          description: >-
            The pre-v1 numeric error code this problem maps to, for integrations
            migrating from the older services.
        solverErrors:
          type: array
          items:
            type: object
            properties:
              solver:
                type: string
                description: >-
                  Address on the relevant chain: `0x…` hex for EVM chains,
                  base58 for Solana, `T…` base58 for Tron.
              solverName:
                type: string
                minLength: 1
              code:
                type: string
                minLength: 1
              message:
                type: string
            required:
              - solver
              - message
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                minLength: 1
              detail:
                type: string
                minLength: 1
            required:
              - field
              - detail
          description: Field-level validation failures.
        requestId:
          type: string
          description: >-
            Correlation ID for support. Present on router-served errors;
            deposit-address-served errors carry a short numeric value.
      required:
        - type
        - title
        - status
        - code
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````

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