---
title: "Find Airnode operations for an intent"
method: POST
path: "/resolve"
---

# Find Airnode operations for an intent

`POST /resolve`

## Request

- Base URL: `https://airnodehub.api3.org`
- URL: `https://airnodehub.api3.org/resolve`
- Auth: none declared
- TypeScript: <https://skmtc.dev/api3/apis/airnodehub-resolve-api/docs/resolve/post.ts> (a function with typed inputs; its response is checked against the schema)

Returns candidates but does not call them. unresolvedInputs names missing, unverified or unsupported requirements, including parts of a multi-part intent omitted from candidates. With no candidates, reason "unsupported" means nothing listed serves the intent and reason "noIntent" means the message named no fact to fetch; 503 means the resolver could not answer and the intent is worth sending again.

## Request body

- ResolveRequest
  - `intent` string, required

## Response `200`

Matching operations and the evidence needed to evaluate them.

- Resolution
  - `intent` string, required
  - `candidates` Candidate[], required
    - `listing` string, required: Stable listing slug.
    - `airnode` string, uri, required: Call this Airnode directly, not the Hub.
    - `operation` string, required
    - `address` string, required: Expected attestation signer.
    - `attestation` 'first-party' | 'third-party', required
    - `parameters` object, required
    - `example` object, required
    - `passthrough` PassthroughRequest, required: The example as the provider documents the call, sent to the Airnode's passthrough. The provider's response comes back as it is, with the attestation in the X-Airnode-Address, X-Airnode-Request-Hash, X-Airnode-Timestamp and X-Airnode-Signature headers.
      - `method` string, required
      - `url` string, uri, required
      - `body` string: The JSON body to send, when the call takes one.
    - `returns` object, required
    - `payment` Payment, required
      - `accepts` PaymentEntry[], required: One entry per network and token the call can be paid in.
        - `scheme` 'exact', required
        - `network` string, required
        - `asset` string, required
        - `amount` string, required: The x402 v2 amount, in the asset atomic unit. This is information, not payment authority.
    - `why` string, required
  - `unresolvedInputs` UnresolvedInput[], required: Requirements not represented by a candidate because an input is missing, a mapping is unverified, no listed operation supports it, or the intent named no fact to fetch.
    - `requirement` string, required: The requested fact that remains unresolved.
    - `needed` string, required: The exact input, mapping or capability needed next.
    - `reason` 'missing' | 'unverified' | 'unsupported' | 'noIntent', required

## Other responses

- `400`: The request could not be completed.
- `405`: The request could not be completed.
- `429`: The request could not be completed.
- `503`: The request could not be completed.

---

[API](https://skmtc.dev/api3/apis/airnodehub-resolve-api.md) - [All operations](https://skmtc.dev/api3/apis/airnodehub-resolve-api/llms.txt) - [OpenAPI document](https://skmtc.dev/api3/apis/airnodehub-resolve-api/revisions/789a991c4c04?raw)
