datapoint.market_ ALPHA v0.0.1

Reference: REST API

Base URL: https://api.datapoint.market. Machine-readable OpenAPI at GET /openapi.json. A self-describing index is at GET /.

Auth: provider routes accept a session cookie, an OAuth token, or an empk_ automation key (Authorization: Bearer …), unless noted. Buyer routes take no auth — they use x402.

Meta / discovery

MethodPathAuthPurpose
GET/noneself-describing index (links, how to buy/sell)
GET/healthnoneliveness
GET/discover.jsonnonemarketplace listings (published + public)
GET/u/{provider}.jsonnoneone provider’s public endpoints
GET/e/{provider}/{endpoint}nonelisting page (includes the data sample + state axes)
GET/e/{provider}/{endpoint}/schema.jsonnonethe data sample: output_schema + a (synthetic-by-default) example + sample axes (protection/provenance/freshness)

Buy (x402, no account)

MethodPathPurpose
GET/POST/r/{provider}/{endpoint}API relay — 402 then pay via X-PAYMENT
POST/m/{provider}/{server}MCP wrapper — per-tool x402 over JSON-RPC

The 402 body carries an endpoint block (the sample “what you get”: outputSchema, example, sample axes, verified) and, when offered, a freeTrial block ({available, remaining, total}). If a free trial is available, the unpaid call returns the real response (not a 402) with X-Datapoint-Trial: true and X-Datapoint-Trial-Remaining: <n>. See Buying.

Provider auth / onboarding

MethodPathPurpose
POST/auth/magic-link/requestemail a sign-in link ({email, return_to?})
POST/auth/verifyexchange token → session cookie (auto-creates account)
POST/auth/wallet/challenge{address, network} → SIWE-style message to sign
POST/auth/wallet/verify{message, signature} → provider + automation key
GET/auth/mecurrent provider
POST/auth/logoutclear session

Provider dashboard (manage)

MethodPathPurpose
GET/dashboard/profileyour public profile + completeness meter
PATCH/dashboard/profileedit profile (slug/handle, name, profile_type, bio, avatar_url, website_url, social_links)
GET/dashboard/handle/check?slug=…is a handle claimable by you? → {available, reason}
GET/dashboard/endpointslist your endpoints
POST/dashboard/endpoints/apicreate an API relay (free:true for a free listing — no price/pay_to)
POST/dashboard/endpoints/mcpcreate an MCP wrapper
PATCH/dashboard/endpoints/{id}edit (price/origin/method/networks/auth/desc + sample/trust fields; free to toggle)
POST/dashboard/endpoints/{id}/publishpublish (→ active)
POST/dashboard/endpoints/{id}/probere-run the origin probe → rebuild the sample (API, trial_safe); returns the generated sample
POST/dashboard/endpoints/{id}/introspectMCP wrappers: fill per-tool input schemas from upstream tools/list
POST/dashboard/endpoints/{id}/pausepause (→ disabled)
POST/dashboard/endpoints/{id}/resumeresume (→ active)
DELETE/dashboard/endpoints/{id}soft-delete
GET/dashboard/statsusage/revenue totals
GET/dashboard/paymentsrecent payments
GET/POST/dashboard/wallets, /dashboard/wallets/externalpayout wallets
GET/POST/DELETE/dashboard/automation-keys[/{id}]manage automation keys

OAuth (connect in Claude)

MethodPathPurpose
GET/.well-known/oauth-protected-resourceresource metadata (RFC 9728)
GET/.well-known/oauth-authorization-serverAS metadata (RFC 8414)
POST/oauth/registerdynamic client registration (RFC 7591)
GET/oauth/authorizestart auth-code + PKCE flow (uses your session)
POST/oauth/consentapprove/deny → issues a code
POST/oauth/tokenexchange code + PKCE verifier → access token

Facilitator (x402 verify/settle)

MethodPathPurpose
GET/x402/{base,stellar}/supportedadvertised (scheme, network) kinds
POST/x402/{base,stellar}/verifyverify a presented payment
POST/x402/{base,stellar}/settlesettle on-chain

A network is only settleable if its splitter/asset/relayer are configured — otherwise verify/settle return 503 “network not configured” even though /supported lists it.