POST /v1/x402-endpoints/probe
Probe an x402 endpoint to get its payment requirements
POST
/v1/x402-endpoints/probe
Probe an x402 endpoint to get its payment requirements
Request Body required
Endpoint URL to probe
application/jsonOne of:
Option 1
Option 2
body
string
Optional body to send with the probe request.
Some endpoints require valid input before returning 402.
method
string
Optional HTTP method to use. If not specified, tries POST then GET.
Valid values: GET, POST, PUT, PATCH, DELETE
Enum:
GET, POST, PUT, PATCH, DELETEresourceUrl
string
REQUIRED
Responses
200
OK
application/jsoncode
integer
data
object
accepts
object[]
Full accepts array for reference
Array of:
amount
string
Amount is the v2 equivalent of MaxAmountRequired.
During normalization, Amount is copied to MaxAmountRequired
if MaxAmountRequired is empty.
asset
string
description
string
extra
object
chainId
integer
ChainID is the chain ID for EIP-712 domain (from quote)
facilitatorAddress
string
FacilitatorAddress is the facilitator's address that will be approved as spender
name
string
Name is the ERC20 token name (used in EIP-712 domain)
signatureType
string
SignatureType specifies the signature method: "authorization" (EIP-3009) or "permit" (ERC-2612)
verifyingContract
string
VerifyingContract is the token contract address for EIP-712 domain (from quote)
version
string
Version is the ERC20 token version (used in EIP-712 domain)
maxAmountRequired
string
maxTimeoutSeconds
integer
mimeType
string
network
string
outputSchema
object
OutputSchema for discovery registration (matches TypeScript SDK format)
discoveryOutput
object
example
unknown
Example provides a sample value for documentation and testing
schema
object
Schema is a JSON Schema definition for validation
input
object
body
object
Body contains JSON Schema for body parameters (used by some x402 providers)
bodyFields
object
BodyFields contains body field definitions in alternative CDP format
bodyParams
object
BodyParams contains body param definitions in CDP format
discoverable
boolean
discoveryInput
object
example
unknown
Example provides a sample value for documentation and testing
schema
object
Schema is a JSON Schema definition for validation
method
string
query
object
Query contains JSON Schema for query parameters (used by some x402 providers)
queryParams
object
QueryParams contains query param definitions in CDP format
type
string
metadata
object
category
string
Category groups workflows (e.g., "data", "automation", "ai")
description
string
Description provides details about what the workflow does
documentation
string
Documentation URL for additional documentation
logo
string
Logo URL for the workflow/provider logo
name
string
Name is the display name for the workflow
provider
string
Provider is the name of the entity providing this workflow
tags
string[]
Tags for searchable keywords
Array of:
...
output
unknown
payTo
string
resource
string
scheme
string
srcAmountRequired
string
srcNetwork
string
srcTokenAddress
string
Cross-token payment fields (set when buyer uses X-PREFERRED-TOKEN)
baseUrl
string
=== PARSED FROM URL ===
bodyParams
object
description
string
detectedParams
object
Query params found in URL
error
string
Error message if probe failed
headerParams
object
method
string
=== OPTIONAL (from 402 response) ===
mimeType
string
network
string
outputSchema
object
payTo
string
price
string
=== ALWAYS AVAILABLE (core protocol) ===
queryParams
object
=== EXTRACTED FROM outputSchema (normalized) ===
success
boolean
Whether the probe succeeded
tokenAddress
string
tokenDecimals
integer
tokenName
string
tokenSymbol
string
message
string
requestId
string
400
Bad Request
curl -X POST 'https://api.example.com/v1/x402-endpoints/probe' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{}'
const response = await fetch('https://api.example.com/v1/x402-endpoints/probe', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({})});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://api.example.com/v1/x402-endpoints/probe', headers=headers, json={})print(response.json())
package mainimport ( "fmt" "io" "net/http" "strings")func main() { body := strings.NewReader(`{}`) req, _ := http.NewRequest("POST", "https://api.example.com/v1/x402-endpoints/probe", body) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() result, _ := io.ReadAll(resp.Body) fmt.Println(string(result))}
200
Response
{ "code": 200, "data": { "accepts": [ { "amount": "<string>", "asset": "<string>", "description": "<string>", "extra": { "chainId": 123, "facilitatorAddress": "<string>", "name": "<string>", "signatureType": "<string>", "verifyingContract": "<string>", "version": "<string>" }, "maxAmountRequired": "<string>", "maxTimeoutSeconds": 123, "mimeType": "<string>", "network": "<string>", "outputSchema": { "discoveryOutput": { "example": {}, "schema": {} }, "input": { "body": {}, "bodyFields": {}, "bodyParams": {}, "discoverable": {}, "discoveryInput": {}, "method": {}, "query": {}, "queryParams": {}, "type": {} }, "metadata": { "category": {}, "description": {}, "documentation": {}, "logo": {}, "name": {}, "provider": {}, "tags": {} }, "output": "<unknown>" }, "payTo": "<string>", "resource": "<string>", "scheme": "<string>", "srcAmountRequired": "<string>", "srcNetwork": "<string>", "srcTokenAddress": "<string>" } ], "baseUrl": "<string>", "bodyParams": "<object>", "description": "<string>", "detectedParams": "<object>", "error": "<string>", "headerParams": "<object>", "method": "<string>", "mimeType": "<string>", "network": "<string>", "outputSchema": "<object>", "payTo": "<string>", "price": "<string>", "queryParams": "<object>", "success": true, "tokenAddress": "<string>", "tokenDecimals": 123, "tokenName": "<string>", "tokenSymbol": "<string>" }, "message": "success", "requestId": "abc-123"}
API Playground
Try this endpoint
POST
/v1/x402-endpoints/probe
