Text to JSON extraction API: pull named fields from messy text
Pull named fields out of unstructured text (emails, invoices, listings, bios) and get them back as a JSON object, with null for anything not present. Use to turn messy text into structured data for an agent.
When to use it
- Turn emails, invoices, listings and bios into structured data for an agent
- Name 1-30 fields and get a JSON object with exactly those keys
Inputs
| Name | Type | Description |
|---|---|---|
text (required) | string | Source text, up to 12,000 characters |
fields (required) | string | Comma-separated field names to extract (1-30) |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://tools.funwords.eu/ai/extract-json?text=Invoice%201043%20from%20Acme%20AB%2C%20due%202026-11-01%2C%20total%202%20450%20SEK%20incl.%20VAT.&fields=invoice_number%2Ccompany%2Cdue_date%2Ctotal%2Ccurrency"
Or one of your 25 free calls, no key:
curl "https://tools.funwords.eu/ai/extract-json?text=Invoice%201043%20from%20Acme%20AB%2C%20due%202026-11-01%2C%20total%202%20450%20SEK%20incl.%20VAT.&fields=invoice_number%2Ccompany%2Cdue_date%2Ctotal%2Ccurrency&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum or Solana over x402; Base or Tempo over MPP) and retries.
Example result
{
"data": {
"invoice_number": "1043",
"company": "Acme AB",
"due_date": "2026-11-01",
"total": 2450,
"currency": "SEK"
},
"missing": [],
"model": "@cf/meta/llama-3.1-8b-instruct-fp8"
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is ai_extract_json, and the first 25 successful calls are free:
https://tools.funwords.eu/mcp
Questions
What if a field is not in the text?
It is null and listed under missing; the model is told never to guess.
How do I pay?
Each successful call costs $0.01; failed calls are not charged. The first 25 calls are free. Then pay with card credits (from $1; the key goes in an Authorization header or, for clients that can only fetch a URL, as api_key= in the URL) or per call in USDC over x402 or MPP. No account is needed.