{
  "x402Version": 2,
  "id": 7522,
  "slug": "7522",
  "resource": "https://animica.dev/x402/extract",
  "description": "Turn messy text — a web page, email, invoice, receipt, job posting, contract clause, product description — into strict JSON matching a schema YOU supply. The schema is enforced in code, not merely requested: output is parsed, validated, repaired once against the exact validation error, and the call FAILS with the violated constraint rather than returning unvalidated JSON. Fields not present in the input come back null instead of a plausible invention. Priced per call. For high-volume use, buy prepaid credits (POST /x402/credits/buy) and send X-Animica-Credits on each request — no settlement, no gas, no per-call payment round trip. Paying in ANM on the animica:1 lane is also ~25% cheaper because we sponsor no gas there.",
  "type": "http",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "5821",
      "maxTimeoutSeconds": 60
    },
    {
      "scheme": "exact",
      "network": "animica:1",
      "payTo": "anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga",
      "asset": "ANM",
      "amount": "69132087424",
      "maxTimeoutSeconds": 60
    }
  ],
  "outputSchema": {
    "animica": {
      "catalog": "https://animica.dev/.well-known/x402",
      "content_type": "application/json",
      "currency": "USDC",
      "description": "Turn messy text — a web page, email, invoice, receipt, job posting, contract clause, product description — into strict JSON matching a schema YOU supply. The schema is enforced in code, not merely requested: output is parsed, validated, repaired once against the exact validation error, and the call FAILS with the violated constraint rather than returning unvalidated JSON. Fields not present in the input come back null instead of a plausible invention. Priced per call. For high-volume use, buy prepaid credits (POST /x402/credits/buy) and send X-Animica-Credits on each request — no settlement, no gas, no per-call payment round trip. Paying in ANM on the animica:1 lane is also ~25% cheaper because we sponsor no gas there.",
      "documentation": "https://animica.dev/x402#product-extract_structured",
      "free_trial": {
        "endpoint": "POST /x402/extract/trial",
        "limit_per_day": 5,
        "note": "Same code and same response shape as the paid endpoint. No payment, no payment headers. Quota is per client per UTC day; when it is spent this endpoint says so and points back here.",
        "price": "0",
        "url": "https://animica.dev/x402/extract/trial"
      },
      "name": "Structured data extraction (your JSON Schema)",
      "openapi": "https://animica.dev/x402/openapi.json",
      "price": "0.005821",
      "product": "extract_structured",
      "provider": "Animica",
      "terms": {
        "amount_atomic": "5821",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "chain_id": 8453,
        "network": "eip155:8453",
        "pay_to": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
        "scheme": "exact"
      },
      "x402_version": 2
    },
    "bazaar": {
      "discoverable": true,
      "info": {
        "input": {
          "body": {
            "input": "John is 30 years old.",
            "schema": {
              "properties": {
                "age": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "properties": {
              "body": {
                "properties": {
                  "input": {
                    "description": "the unstructured text to extract from",
                    "type": "string"
                  },
                  "instruction": {
                    "description": "optional extra guidance, e.g. \"amounts in minor units\"",
                    "type": "string"
                  },
                  "schema": {
                    "description": "JSON Schema the result must satisfy (subset: type, properties, required, items, enum, const, min/max, minLength/maxLength, minItems/maxItems, additionalProperties)",
                    "type": "object"
                  }
                },
                "required": [
                  "input",
                  "schema"
                ],
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {},
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "discovery": {
      "discoverable": true,
      "info": {
        "input": {
          "bodyFields": {
            "input": {
              "description": "the unstructured text to extract from",
              "required": true,
              "type": "string"
            },
            "instruction": {
              "description": "optional extra guidance, e.g. \"amounts in minor units\"",
              "required": false,
              "type": "string"
            },
            "schema": {
              "description": "JSON Schema the result must satisfy (subset: type, properties, required, items, enum, const, min/max, minLength/maxLength, minItems/maxItems, additionalProperties)",
              "required": true,
              "type": "object"
            }
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "description": "data (validated against your schema), model, attempts, repaired, unsupported_schema_keywords",
          "type": "json"
        }
      }
    }
  },
  "tags": [
    "animica",
    "bazaar",
    "discovery"
  ],
  "sourceHost": "animica.dev",
  "lastUpdated": "2026-08-22T08:40:19.816Z",
  "quality": {
    "calls30d": 3,
    "uniquePayers30d": 1,
    "lastCalledAt": "2026-08-22T08:40:19.667Z"
  },
  "liveness": {},
  "verified": false,
  "featured": false,
  "provider": {
    "host": "animica.dev",
    "manifest_name": "animica.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-09-18T22:00:31.484Z"
  }
}