← oblique.markets · all endpoints

POST /api/v1/paid/x401-batch-extract — $0.02 per call

Use when an agent needs x401 batch extract. Returns Proof-gated batch JSON extraction for up to 10 public URLs in isolated Daytona or Modal compute with reconciled delivery and idempotent retries. $0.02.

Price$0.02 per call (20000 atomic USDC, scheme exact)
Categorydata-services
Railsx402 · USDC on Base (eip155:8453) and Solana · MPP pathUSD on Tempo
Canonical URLhttps://api.oblique.markets/api/v1/paid/x401-batch-extract

Try it

curl -i https://api.oblique.markets/api/v1/paid/x401-batch-extract
# → HTTP 402 with the exact payment requirements; pay, then retry with PAYMENT-SIGNATURE (x402) or Authorization: Payment (MPP)

Input schema

{
 "type": "object",
 "required": [
  "x401_proof",
  "items",
  "idempotency_key"
 ],
 "properties": {
  "x401_proof": {
   "type": "object",
   "required": [
    "route",
    "sub",
    "aud",
    "exp",
    "nonce"
   ],
   "properties": {
    "route": {
     "type": "string",
     "const": "POST /api/v1/paid/x401-batch-extract"
    },
    "sub": {
     "type": "string",
     "description": "Payment subject (buyer wallet or agent identity)"
    },
    "aud": {
     "type": "string",
     "description": "api.oblique.markets"
    },
    "exp": {
     "type": "integer",
     "description": "Unix expiry in seconds"
    },
    "nonce": {
     "type": "string",
     "minLength": 16,
     "maxLength": 128
    },
    "request_hash": {
     "type": "string",
     "pattern": "^sha256:[0-9a-f]{64}$"
    }
   }
  },
  "items": {
   "type": "array",
   "minItems": 1,
   "maxItems": 10,
   "items": {
    "type": "object",
    "required": [
     "url",
     "schema"
    ],
    "properties": {
     "url": {
      "type": "string",
      "format": "uri",
      "description": "HTTPS page to extract"
     },
     "schema": {
      "type": "object",
      "description": "JSON Schema for the extracted JSON value"
     }
    }
   }
  },
  "idempotency_key": {
   "type": "string",
   "minLength": 1,
   "maxLength": 128
  }
 }
}

Example output

{
 "status": "fulfilled",
 "proof_status": "verified",
 "submitted_count": 2,
 "completed_count": 1,
 "failed_count": 1,
 "runtime_ms": 1842,
 "artifact_hash": "sha256:9f86d081884c7d659a2feaa0c55ad015...",
 "payment_reference": {
  "status": "settled",
  "network": "eip155:8453",
  "transaction": "0xabc123...",
  "amount_atomic": "20000"
 },
 "fulfillment_timestamp": "2026-08-22T12:00:00.000Z",
 "results": [
  {
   "index": 0,
   "status": "completed",
   "url": "https://example.com",
   "data": {
    "title": "Example Domain"
   },
   "artifact_hash": "sha256:2bb80d537b1da3e38bd30361aa855686..."
  },
  {
   "index": 1,
   "status": "failed",
   "url": "https://invalid.example",
   "failure_code": "upstream_http",
   "artifact_hash": null
  }
 ]
}

Clients

Worked TypeScript/Python clients and MCP configs: oblique-markets/oblique-examples · Agent Skills: oblique-markets/skills

Pay per call with x402 (USDC on Base or Solana) or MPP (pathUSD on Tempo). No accounts. Machine doors: /.well-known/x402.json · /openapi.json · /llms-full.txt · MCP · humans: remote.observer