---
title: "Get one x402 service"
method: GET
path: "/v1/x402/resources/{id}"
tags: ["x402 Discovery"]
---

# Get one x402 service

`GET /v1/x402/resources/{id}`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/x402/resources/{id}`
- Auth: one of:
  - API key in header `X-Api-Key`
  - `bearer` (a scheme the document does not define)

Fetch a single x402 service directory entry by its id.

## Path parameters

- `id` string, uuid, required

## Response `200`

- X402ResourceDtoOutput
  - `id` string, uuid, required: Entity UUID
  - `createdAt` string, date-time, required: Creation date (ISO 8601)
  - `updatedAt` string, date-time, required: Last update date (ISO 8601)
  - `resource` string, required: Absolute URL of the x402-protected service endpoint.
  - `serviceName` string, nullable: Human-friendly service name from the upstream directory.
  - `description` string, nullable: Vendor-supplied description of what the service does.
  - `iconUrl` string, nullable: Absolute URL of the service icon.
  - `type` string, required: Resource transport type from the directory.
  - `x402Version` integer, required: x402 protocol version the service implements.
  - `tags` string[], required: Free-form keywords from the directory; drive tag filter + search.
  - `networks` string[], required: Distinct CAIP-2 chain ids derived from accepts[].network; drives the network filter.
  - `accepts` object[], required: Payment options the service accepts (one per scheme/network/asset).
    - `scheme` string, required: x402 payment scheme the service uses for this option.
    - `network` string, required: CAIP-2 chain id the payment settles on.
    - `amount` string, required: Price in the asset base units as a decimal string (preserves bigint precision). Divide by 10^assetDecimals for the human amount.
    - `asset` string, required: ERC-20 token contract address used to pay.
    - `payTo` string, required: Recipient address the payment is sent to.
    - `maxTimeoutSeconds` integer, required: Seconds the payer has to settle before the quote expires.
  - `httpMethod` string, nullable: HTTP method the endpoint answers on, from the directory metadata. Probing a POST-only service with a GET never reaches its x402 middleware: it answers 404/405 instead of the payment terms.
  - `requestHint` object, nullable: Vendor-supplied call hint (method, bodyType, example body, query and path params). The shape varies per service — treat it as an opaque hint, not a contract.
  - `quality` object, nullable: Usage/popularity stats from the directory. Null when unreported.
    - `l30DaysTotalCalls` integer, nullable: Paid calls in the last 30 days (popularity signal).
    - `l30DaysUniquePayers` integer, nullable: Distinct paying wallets in the last 30 days.
    - `lastCalledAt` string, nullable: ISO 8601 timestamp of the most recent paid call.
  - `source` 'coinbase' | 'orthogonal', required: Upstream directory this entry is mirrored from.
  - `host` string, required: Lowercase host of `resource`; destination rules match on it.
  - `via` string, nullable: Gateway that resells the provider and collects the payment (e.g. Orthogonal). Null when the provider is paid directly.
  - `priceVariable` boolean, required: True when the price is set per request rather than by the directory: `accepts` is then empty and x402_info gives the actual price.
  - `payable` boolean, required: Whether the service offers a payment scheme the Keyban agent wallet can settle (today: exact). Unpayable services are listed last.
  - `operation` string, nullable: Short endpoint label from the last path segments (gateway slug and version prefix dropped).

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
