Onchain loyalty platform on Base Network
Onchain loyalty platform on Base Network. Businesses launch branded rewards in minutes, customers earn real value with every purchase, and AI agents automate the rest via REST and MCP. Free plan mints up to 1,000 tokens per month; every call is scoped by row-level security to the wallet behind the API key. 16 skill guides at loyalspark.online/.well-known/skills/index.md.
10000 (raw units)
price
81
calls / 30d
15
unique payers
2026-09-18
updated
Provider
api.loyalspark.online · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x40a8CdD6a10EC1a8cB3dFb2834675e7a2CF4ad8b",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {},
"bodyType": "json",
"headers": {
"x-api-key": "rwk_..."
},
"method": "POST",
"type": "http"
},
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": true,
"description": "Two-phase: call without transaction_hash to reserve the offer (status active -> accepted) and receive approve + fillOffer escrow calldata; call again with transaction_hash of the confirmed fillOffer tx to finalize (accepted -> completed).",
"properties": {
"offer_id": {
"format": "uuid",
"type": "string"
},
"onchain_offer_id": {
"description": "On-chain escrow offer id (phase 1, when known).",
"type": "number"
},
"transaction_hash": {
"description": "Phase 2: hash of the confirmed escrow fillOffer transaction on Base.",
"pattern": "^0x[a-fA-F0-9]{64}$",
"type": "string"
}
},
"required": [
"offer_id"
],
"type": "object"
},
"output": {
"example": {
"ok": true,
"resource": "recipient-api/accept-offer"
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"queryParams": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"inputSchema": {
"type": "object"
},
"output": {
"properties": {
"example": {},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"a": "bc_wdmnog7m"
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
}
}Use it
curl
curl "https://api.loyalspark.online/x402-gateway/recipient-api/accept-offer" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://api.loyalspark.online/x402-gateway/recipient-api/accept-offer");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://api.loyalspark.online/x402-gateway/recipient-api/accept-offer")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/365.json, and this resource appears in /discovery/resources and /discovery/search.