RFC 9651 Structured Field to Typed JSON
Parse native RFC 9651 Item/List/Dictionary into tagged JSON. Preserve all eight bare types: integral decimals, 15-digit epoch seconds, binary Base64, Unicode Display Strings, plus ordered parameters/maps and inner lists. RFC duplicate wire keys overwrite in place. Up to 16384 field bytes and 65536 JSON bytes. Malformed fields refused before payment; not legacy HTTP grammar.
- Price
- from $0.0012 USDC per request (starting price; the 402 response quotes the exact amount for your input)
- Network
- Base mainnet,
eip155:8453, settled in USDC through the Coinbase CDP facilitator - Method and URL
POST https://market.561.group/v1/data/http-field-to-json- Response type
application/json- Seller
- Causeway Services (561 Group)
Input contract
Input that fails this contract is refused with a 4xx status before any payment is requested.
{
"maxBytes": 102400,
"bodySchema": {
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"text"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"item",
"list",
"dictionary"
]
},
"text": {
"type": "string",
"maxLength": 16384,
"description": "ASCII structured field value, up to 16384 bytes. Select its defined container; not legacy Accept, Cookie or Cache-Control grammar."
}
}
}
}
Example request
{
"method": "POST",
"url": "https://market.561.group/v1/data/http-field-to-json",
"headers": {
"accept": "application/json",
"content-type": "application/json"
},
"body": {
"kind": "dictionary",
"text": "u=1, i, label=%\"caf%c3%a9\", expiry=@1735689600, ratio=1.0"
}
}
Output
{
"schema": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"const": "item"
},
"value": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value",
"parameters"
],
"properties": {
"type": {
"const": "item"
},
"value": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value"
],
"properties": {
"type": {
"const": "integer"
},
"value": {
"type": "integer",
"minimum": -999999999999999,
"maximum": 999999999999999
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value"
],
"properties": {
"type": {
"const": "decimal"
},
"value": {
"type": "number",
"minimum": -999999999999.999,
"maximum": 999999999999.999
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value"
],
"properties": {
"type": {
"const": "string"
},
"value": {
"type": "string",
"description": "Structured-field string or token"
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"type",
"value"
],
"properties": {
"type": {
"const": "token"
},
"value": {
"type": "string",
"description": "Structured-field string or token"
}
}
},
… (truncated; the full contract is in /v1/catalog)
How to buy with x402
- Send the request without payment. The server answers
402 Payment Requiredwith a base64 JSONPAYMENT-REQUIREDheader holding the amount, asset, network and payee. - Have your wallet sign an EIP-3009
transferWithAuthorizationfor exactly those terms (an x402 client library does this for you). - Repeat the identical request with the signed payload in the
PAYMENT-SIGNATUREheader. - The server verifies, runs the operation, settles, and returns
200with the result and aPAYMENT-RESPONSEheader carrying the settlement receipt.
Read the price without paying
curl --include --request POST --header 'accept: application/json' --header 'content-type: application/json' --data-raw '{"kind":"dictionary","text":"u=1, i, label=%\"caf%c3%a9\", expiry=@1735689600, ratio=1.0"}' --url 'https://market.561.group/v1/data/http-field-to-json'
This request authorizes nothing; it returns the live payment terms. Read the full explanation of x402.
Machine-readable
- /.well-known/x402: x402 discovery document for every offer
- /v1/catalog: full catalog with contracts and examples
- /llms.txt: the market in llms.txt form
- services.561.group: Causeway Services