{"openapi":"3.1.0","info":{"title":"FastX402","version":"1.0.0","description":"FastX402: small pay-per-call tools for AI agents, paid per request in USDC on Base or Solana over x402. No signup, no API key.","x-guidance":"Each tool is one HTTP endpoint. Call POST /<tool> with a JSON body whose fields are in the operation's schema (the same fields also work as GET /<tool>?field=value query parameters). An unpaid call returns HTTP 402 with the payment requirements; pay with any x402 client and retry. Calls that fail with 4xx or 5xx are never charged. GET / lists every tool with its price and an example.","contact":{"email":"hello@fastx402.tools"}},"servers":[{"url":"https://402-tools.tusk80.com"}],"paths":{"/base64-convert":{"post":{"operationId":"base64Convert","summary":"Encode UTF-8 text to Base64 or Base64url, or decode it back, exactly.","description":"Encode UTF-8 text to Base64 or Base64url, or decode it back, exactly. Use it for headers, data URLs and API payloads where a wrong padding or alphabet breaks things.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode, or Base64 to decode"},"mode":{"type":"string","description":"encode, decode, encode_url or decode_url","enum":["encode","decode","encode_url","decode_url"]}},"required":["text","mode"]},"example":{"text":"Merhaba dünya ✓","mode":"encode"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string"},"result":{"type":"string"}}},"example":{"mode":"encode","result":"TWVyaGFiYSBkw7xueWEg4pyT"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/btc-fees":{"post":{"operationId":"btcFees","summary":"Returns current recommended Bitcoin fee rates in sat/vB for fastest, 30-minute, 1-hour, and economy confirmation targets","description":"Returns current recommended Bitcoin fee rates in sat/vB for fastest, 30-minute, 1-hour, and economy confirmation targets, plus mempool transaction count and vsize. Use it to price a transaction or report network congestion right now.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","description":"Bitcoin network to query: main, testnet3 or testnet4. Defaults to main."}},"required":[]},"example":{"network":"main"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string"},"fee_rates_sat_vb":{"type":"object","properties":{"fastest":{"type":"integer"},"thirty_minutes":{"type":"integer"},"one_hour":{"type":"integer"},"economy":{"type":"integer"}}},"mempool":{"type":"object","properties":{"transactions":{"type":"integer"},"vsize":{"type":"integer"},"total_fee_sat":{"type":"integer"}}}}},"example":{"network":"main","fee_rates_sat_vb":{"fastest":20,"thirty_minutes":17,"one_hour":15,"economy":10},"mempool":{"transactions":5000,"vsize":30000000,"total_fee_sat":61234567}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/byte-size-parse":{"post":{"operationId":"byteSizeParse","summary":"Accepts a file-size string such as 1.5 MiB, 800 KB, or 42 bytes and returns the exact byte count, detected unit system, ","description":"Accepts a file-size string such as 1.5 MiB, 800 KB, or 42 bytes and returns the exact byte count, detected unit system, and normalized IEC and SI forms. Use it when converting human-readable storage values.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"size":{"type":"string","description":"Human-readable size such as 1.5 MiB, 800 KB, 42 bytes. Units: B, KB..PB (decimal), KiB..PiB (binary). A bare number means bytes."}},"required":["size"]},"example":{"size":"1.5 MiB"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"bytes":{"type":"integer"},"unit":{"type":"string"},"system":{"type":"string"},"iec":{"type":"string"},"si":{"type":"string"}}},"example":{"input":"1.5 MiB","bytes":1572864,"unit":"MiB","system":"IEC","iec":"1.5 MiB","si":"1.573 MB"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/cidr-calc":{"post":{"operationId":"cidrCalc","summary":"Takes an IPv4 CIDR block like 10.0.0.0/22 plus an optional IP and returns network address, broadcast, netmask, wildcard,","description":"Takes an IPv4 CIDR block like 10.0.0.0/22 plus an optional IP and returns network address, broadcast, netmask, wildcard, first and last usable host, usable host count, and whether the IP falls inside the block. Handles non-octet boundaries and /31, /32 edge cases.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cidr":{"type":"string","description":"IPv4 CIDR block, e.g. 10.0.0.0/22 (prefix 0-32)"},"ip":{"type":"string","description":"Optional IPv4 address to test for membership in the block"}},"required":["cidr"]},"example":{"cidr":"10.0.0.0/22","ip":"10.0.3.255"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"cidr":{"type":"string"},"prefix":{"type":"integer"},"network":{"type":"string"},"broadcast":{"type":"string"},"netmask":{"type":"string"},"wildcard":{"type":"string"},"first_host":{"type":"string"},"last_host":{"type":"string"},"usable_hosts":{"type":"integer"},"ip":{"type":"string"},"ip_inside":{"type":"boolean"}}},"example":{"cidr":"10.0.0.0/22","prefix":22,"network":"10.0.0.0","broadcast":"10.0.3.255","netmask":"255.255.252.0","wildcard":"0.0.3.255","first_host":"10.0.0.1","last_host":"10.0.3.254","usable_hosts":1022,"ip":"10.0.3.255","ip_inside":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/color-convert":{"post":{"operationId":"colorConvert","summary":"Convert any CSS color (hex, rgb(), hsl(), oklch(), named colors) to hex, rgb, hsl and OKLCH, with alpha.","description":"Convert any CSS color (hex, rgb(), hsl(), oklch(), named colors) to hex, rgb, hsl and OKLCH, with alpha. Use it for design tokens, themes and accessible palettes.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"color":{"type":"string","description":"Any CSS color, e.g. #f5c542, rebeccapurple, hsl(210 50% 40%)"}},"required":["color"]},"example":{"color":"#f5c542"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"hex":{"type":"string"},"rgb":{"type":"string"},"hsl":{"type":"string"},"oklch":{"type":"object","properties":{"l":{"type":"number"},"c":{"type":"number"},"h":{"type":"number"}}},"alpha":{"type":"integer"}}},"example":{"input":"#f5c542","hex":"#f5c542","rgb":"rgb(245, 197, 66)","hsl":"hsl(43.91, 89.95%, 60.98%)","oklch":{"l":0.8439,"c":0.1513,"h":87.8654},"alpha":1}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/color-scale":{"post":{"operationId":"colorScale","summary":"Generate an evenly spaced color scale between two CSS colors in OKLCH, Lab or RGB space, as hex values.","description":"Generate an evenly spaced color scale between two CSS colors in OKLCH, Lab or RGB space, as hex values. Use it for charts, heatmaps, gradients and theme shades.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","description":"Start color"},"to":{"type":"string","description":"End color"},"steps":{"type":"string","description":"How many colors, 2-20 (default 5)"},"mode":{"type":"string","description":"oklch, lab or rgb (default oklch)","enum":["oklch","lab","rgb"]}},"required":["from","to"]},"example":{"from":"#f5c542","to":"#14161c"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string"},"colors":{"type":"array","items":{"type":"string"}}}},"example":{"mode":"oklch","colors":["#f5c542","#d5805c","#905568","#47364f","#14161c"]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/cron-describe":{"post":{"operationId":"cronDescribe","summary":"Explain a cron expression in plain words ('At 09:00, Monday through Friday') in English, Turkish, German, French or Span","description":"Explain a cron expression in plain words ('At 09:00, Monday through Friday') in English, Turkish, German, French or Spanish. Use it to show schedules to people or check a cron line before saving it.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string","description":"Cron expression, e.g. 0 9 * * 1-5"},"locale":{"type":"string","description":"en, tr, de, fr or es (default en)","enum":["en","tr","de","fr","es"]},"use_24h":{"type":"string","description":"true or false (default true)","enum":["true","false"]}},"required":["expression"]},"example":{"expression":"0 9 * * 1-5"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string"},"description":{"type":"string"}}},"example":{"expression":"0 9 * * 1-5","description":"At 09:00, Monday through Friday"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/cron-next-runs":{"post":{"operationId":"cronNextRuns","summary":"Parses a standard cron expression and returns the next matching timestamps after a supplied ISO 8601 time.","description":"Parses a standard cron expression and returns the next matching timestamps after a supplied ISO 8601 time. Use it to calculate scheduled execution times without implementing cron logic.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string","description":"Cron expression with 5 fields: minute hour day-of-month month day-of-week, e.g. \"0 9 * * 1-5\""},"after":{"type":"string","description":"ISO 8601 start time (e.g. 2026-01-05T00:00:00Z); defaults to now; times without an offset are treated as UTC"},"count":{"type":"string","description":"How many next runs to return, 1 to 20; defaults to 5"}},"required":["expression"]},"example":{"expression":"0 9 * * 1-5","after":"2026-01-05T00:00:00Z","count":"3"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string"},"after":{"type":"string"},"next_runs":{"type":"array","items":{"type":"string"}}}},"example":{"expression":"0 9 * * 1-5","after":"2026-01-05T00:00:00Z","next_runs":["2026-01-05T09:00:00.000Z","2026-01-06T09:00:00.000Z","2026-01-07T09:00:00.000Z"]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/csv-to-json":{"post":{"operationId":"csvToJson","summary":"Convert CSV text (RFC 4180: quoted fields, escaped quotes, CRLF) into JSON rows, with or without a header line and with ","description":"Convert CSV text (RFC 4180: quoted fields, escaped quotes, CRLF) into JSON rows, with or without a header line and with comma, semicolon, tab or pipe delimiters.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"csv":{"type":"string","description":"CSV text"},"delimiter":{"type":"string","description":"\",\" (default), \";\", \"tab\" or \"|\"","enum":[",",";","tab","|"]},"header":{"type":"string","description":"true (default) when the first line is the header, else false","enum":["true","false"]}},"required":["csv"]},"example":{"csv":"name,city,note\r\nAyşe,İstanbul,\"likes \"\"tea\"\", coffee\"\r\nBob,Berlin,\"two\nlines\"\r\n"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"array","items":{"type":"string"}},"rows":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"city":{"type":"string"},"note":{"type":"string"}}}},"row_count":{"type":"integer"}}},"example":{"columns":["name","city","note"],"rows":[{"name":"Ayşe","city":"İstanbul","note":"likes \"tea\", coffee"},{"name":"Bob","city":"Berlin","note":"two\nlines"}],"row_count":2}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/currency-convert":{"post":{"operationId":"currencyConvert","summary":"Converts an amount between two ISO 4217 currencies using the latest available reference rate and returns the rate and co","description":"Converts an amount between two ISO 4217 currencies using the latest available reference rate and returns the rate and converted amount. Use it for quick current exchange calculations.","tags":["Finance"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string","description":"Positive amount to convert, e.g. 100 or 12.5"},"from":{"type":"string","description":"Source currency code, ISO 4217, e.g. USD"},"to":{"type":"string","description":"Target currency code, ISO 4217, e.g. EUR"}},"required":["amount","from","to"]},"example":{"amount":"100","from":"USD","to":"EUR"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer"},"from":{"type":"string"},"to":{"type":"string"},"rate":{"type":"number"},"converted":{"type":"integer"}}},"example":{"amount":100,"from":"USD","to":"EUR","rate":0.92,"converted":92}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/date-add":{"post":{"operationId":"dateAdd","summary":"Add or subtract years, months, weeks, days, hours, minutes and seconds to a date with calendar-correct rules (Jan 31 + 1","description":"Add or subtract years, months, weeks, days, hours, minutes and seconds to a date with calendar-correct rules (Jan 31 + 1 month = Feb 28 or 29). Returns the ISO result and its weekday.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"ISO 8601 date or date-time, e.g. 2024-01-31 or 2026-03-29T01:30:00Z"},"years":{"type":"string","description":"years to add (negative to subtract)"},"months":{"type":"string","description":"months to add (negative to subtract)"},"weeks":{"type":"string","description":"weeks to add (negative to subtract)"},"days":{"type":"string","description":"days to add (negative to subtract)"},"hours":{"type":"string","description":"hours to add (negative to subtract)"},"minutes":{"type":"string","description":"minutes to add (negative to subtract)"},"seconds":{"type":"string","description":"seconds to add (negative to subtract)"}},"required":["date"]},"example":{"date":"2024-01-31","months":"1"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string"},"result":{"type":"string"},"weekday":{"type":"string"}}},"example":{"date":"2024-01-31T00:00:00.000Z","result":"2024-02-29T00:00:00.000Z","weekday":"Thursday"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/date-diff":{"post":{"operationId":"dateDiff","summary":"Exact difference between two calendar dates: total days, weeks, the years-months-days breakdown and Monday-Friday busine","description":"Exact difference between two calendar dates: total days, weeks, the years-months-days breakdown and Monday-Friday business days. Use it for ages, contract terms, deadlines and billing periods.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","description":"First date, YYYY-MM-DD"},"end":{"type":"string","description":"Second date, YYYY-MM-DD (not before start)"}},"required":["start","end"]},"example":{"start":"2024-02-29","end":"2026-03-01"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"days":{"type":"integer"},"weeks":{"type":"integer"},"calendar":{"type":"object","properties":{"years":{"type":"integer"},"months":{"type":"integer"},"days":{"type":"integer"}}},"business_days":{"type":"integer"}}},"example":{"start":"2024-02-29","end":"2026-03-01","days":731,"weeks":104,"calendar":{"years":2,"months":0,"days":1},"business_days":522}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/date-format":{"post":{"operationId":"dateFormat","summary":"Format a date with a date-fns/Unicode pattern (EEEE, d MMMM yyyy HH:mm) in English, Turkish, German, French or Spanish.","description":"Format a date with a date-fns/Unicode pattern (EEEE, d MMMM yyyy HH:mm) in English, Turkish, German, French or Spanish. Use it to show dates the way people in a country write them.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"ISO 8601 date or date-time"},"pattern":{"type":"string","description":"date-fns format pattern, e.g. EEEE, d MMMM yyyy HH:mm"},"locale":{"type":"string","description":"en, tr, de, fr or es (default en)","enum":["en","tr","de","fr","es"]}},"required":["date","pattern"]},"example":{"date":"2026-10-17T14:05:09Z","pattern":"EEEE, d MMMM yyyy HH:mm"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"formatted":{"type":"string"}}},"example":{"formatted":"Saturday, 17 October 2026 14:05"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/date-info":{"post":{"operationId":"dateInfo","summary":"Calendar facts about a date: weekday, ISO week and week-year, day of year, quarter, days in the month, leap year, weeken","description":"Calendar facts about a date: weekday, ISO week and week-year, day of year, quarter, days in the month, leap year, weekend, Unix time. Use it for scheduling, reporting and ISO-week math.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"ISO 8601 date or date-time"}},"required":["date"]},"example":{"date":"2026-10-17"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string"},"weekday":{"type":"string"},"iso_week":{"type":"integer"},"iso_week_year":{"type":"integer"},"day_of_year":{"type":"integer"},"quarter":{"type":"integer"},"days_in_month":{"type":"integer"},"is_leap_year":{"type":"boolean"},"is_weekend":{"type":"boolean"},"unix":{"type":"integer"}}},"example":{"date":"2026-10-17","weekday":"Saturday","iso_week":42,"iso_week_year":2026,"day_of_year":290,"quarter":4,"days_in_month":31,"is_leap_year":false,"is_weekend":true,"unix":1792195200}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/date-period":{"post":{"operationId":"datePeriod","summary":"Start and end instants of the day, week, month, quarter or year that contains a date, with a configurable first day of t","description":"Start and end instants of the day, week, month, quarter or year that contains a date, with a configurable first day of the week. Use it to build report ranges and date filters.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"ISO 8601 date or date-time"},"unit":{"type":"string","description":"day, week, month, quarter or year","enum":["day","week","month","quarter","year"]},"week_starts_on":{"type":"string","description":"First day of the week, 0 = Sunday ... 6 (default 1, Monday)"}},"required":["date","unit"]},"example":{"date":"2026-10-17T15:20:00Z","unit":"week"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}}},"example":{"unit":"week","start":"2026-10-12T00:00:00.000Z","end":"2026-10-18T23:59:59.999Z"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/email-check":{"post":{"operationId":"emailCheck","summary":"Check an email address's syntax and return its normalized form (lowercase; Gmail dots and +tags removed) plus local part","description":"Check an email address's syntax and return its normalized form (lowercase; Gmail dots and +tags removed) plus local part and domain. Use it to deduplicate sign-ups or clean a contact list. It does not contact any mail server.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address to check"}},"required":["email"]},"example":{"email":"John.Smith+news@GoogleMail.com"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"valid":{"type":"boolean"},"normalized":{"type":"string"},"local":{"type":"string"},"domain":{"type":"string"}}},"example":{"email":"John.Smith+news@GoogleMail.com","valid":true,"normalized":"johnsmith@gmail.com","local":"John.Smith+news","domain":"googlemail.com"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/erc20-calldata-decode":{"post":{"operationId":"erc20CalldataDecode","summary":"Decode ERC-20 transfer, approve and transferFrom calldata into the function name, checksummed addresses and exact amount","description":"Decode ERC-20 transfer, approve and transferFrom calldata into the function name, checksummed addresses and exact amounts. Use it to check what a transaction an agent is about to sign really does.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"Transaction calldata, 0x + hex"}},"required":["data"]},"example":{"data":"0xa9059cbb000000000000000000000000fb6916095ca1df60bb79ce92ce3ea74c37c5d359000000000000000000000000000000000000000000000000000000000016e360"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"function":{"type":"string"},"selector":{"type":"string"},"args":{"type":"object","properties":{"to":{"type":"string"},"amount":{"type":"string"}}}}},"example":{"function":"transfer","selector":"0xa9059cbb","args":{"to":"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359","amount":"1500000"}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/erc20-info":{"post":{"operationId":"erc20Info","summary":"Name, symbol, decimals and total supply of an ERC-20 token on Base or Ethereum, read live from the contract.","description":"Name, symbol, decimals and total supply of an ERC-20 token on Base or Ethereum, read live from the contract. Use it to check a token before trading, paying or displaying amounts.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Token contract address (0x + 40 hex)"},"chain":{"type":"string","description":"base or ethereum (default base)","enum":["base","ethereum"]}},"required":["token"]},"example":{"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"token":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"total_supply":{"type":"string"},"total_supply_raw":{"type":"string"}}},"example":{"chain":"base","token":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","name":"USD Coin","symbol":"USDC","decimals":6,"total_supply":"4403879551.831094","total_supply_raw":"4403879551831094"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/eth-checksum":{"post":{"operationId":"ethChecksum","summary":"Return the EIP-55 checksummed form of an Ethereum/EVM address and whether the given casing is a valid checksum.","description":"Return the EIP-55 checksummed form of an Ethereum/EVM address and whether the given casing is a valid checksum. Use it before sending funds or storing an address an agent typed or received.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM address, 0x + 40 hex characters"}},"required":["address"]},"example":{"address":"0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"input":{"type":"string"},"checksum_valid":{"type":"boolean"}}},"example":{"address":"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359","input":"0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359","checksum_valid":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/evm-balance":{"post":{"operationId":"evmBalance","summary":"Native ETH and USDC balance of any address on Base or Ethereum, read live from the chain.","description":"Native ETH and USDC balance of any address on Base or Ethereum, read live from the chain. Use it before sending funds, to check a payment arrived, or to watch a wallet.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"EVM address (0x + 40 hex)"},"chain":{"type":"string","description":"base or ethereum (default base)","enum":["base","ethereum"]}},"required":["address"]},"example":{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"base"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"address":{"type":"string"},"eth":{"type":"string"},"wei":{"type":"string"},"usdc":{"type":"string"},"usdc_raw":{"type":"string"}}},"example":{"chain":"base","address":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","eth":"3.12882180347273728","wei":"3128821803472737280","usdc":"45.145979","usdc_raw":"45145979"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/evm-gas":{"post":{"operationId":"evmGas","summary":"Current gas price, base fee and priority fee (in gwei) on Base or Ethereum, from the latest block.","description":"Current gas price, base fee and priority fee (in gwei) on Base or Ethereum, from the latest block. Use it to price a transaction or decide when to send one.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string","description":"base or ethereum (default base)","enum":["base","ethereum"]}},"required":[]},"example":{"chain":"base"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"block":{"type":"integer"},"gas_price_gwei":{"type":"string"},"base_fee_gwei":{"type":"string"},"priority_fee_gwei":{"type":"string"}}},"example":{"chain":"base","block":52722598,"gas_price_gwei":"0.006","base_fee_gwei":"0.005","priority_fee_gwei":"0.001"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/evm-tx-status":{"post":{"operationId":"evmTxStatus","summary":"Status of a transaction on Base or Ethereum: success, failed, pending or not found, with block, confirmations, sender, r","description":"Status of a transaction on Base or Ethereum: success, failed, pending or not found, with block, confirmations, sender, recipient and gas used. Use it to confirm a payment or a contract call went through.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"Transaction hash (0x + 64 hex)"},"chain":{"type":"string","description":"base or ethereum (default base)","enum":["base","ethereum"]}},"required":["hash"]},"example":{"hash":"0x045cfeb395a5de639fbaced3788106c2d8fd5aee4777eff058425fad6a76c166"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"hash":{"type":"string"},"status":{"type":"string"},"block":{"type":"integer"},"confirmations":{"type":"integer"},"from":{"type":"string"},"to":{"type":"string"},"gas_used":{"type":"string"}}},"example":{"chain":"base","hash":"0x045cfeb395a5de639fbaced3788106c2d8fd5aee4777eff058425fad6a76c166","status":"success","block":52721932,"confirmations":666,"from":"0x96dcdec755aa8bdbe22278e631879e3addc1a24c","to":"0x755be1403dc2e7dd313793d7c45c771fed379dca","gas_used":"28067"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/geohash":{"post":{"operationId":"geohash","summary":"Encode a latitude/longitude to a geohash (precision 1-12) or decode a geohash to its centre point and bounding box.","description":"Encode a latitude/longitude to a geohash (precision 1-12) or decode a geohash to its centre point and bounding box. Use it for spatial keys, proximity grouping and map tiles.","tags":["Geo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"string","description":"Latitude, to encode"},"lon":{"type":"string","description":"Longitude, to encode"},"precision":{"type":"string","description":"Geohash length 1-12 (default 9)"},"geohash":{"type":"string","description":"Geohash to decode"}},"required":[]},"example":{"lat":"41.0082","lon":"28.9784","precision":"7"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"geohash":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"bbox":{"type":"object","properties":{"min_lat":{"type":"number"},"min_lon":{"type":"number"},"max_lat":{"type":"number"},"max_lon":{"type":"number"}}}}},"example":{"geohash":"sxk973m","lat":41.00853,"lon":28.9785,"bbox":{"min_lat":41.007843,"min_lon":28.977814,"max_lat":41.009216,"max_lon":28.979187}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/hash-digest":{"post":{"operationId":"hashDigest","summary":"SHA-1, SHA-256, SHA-384 or SHA-512 digest of UTF-8 text, as hex or Base64.","description":"SHA-1, SHA-256, SHA-384 or SHA-512 digest of UTF-8 text, as hex or Base64. Use it for checksums, cache keys, Subresource Integrity values or verifying a published hash.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text to hash (UTF-8)"},"algorithm":{"type":"string","description":"sha1, sha256, sha384 or sha512 (default sha256)","enum":["sha1","sha256","sha384","sha512"]},"encoding":{"type":"string","description":"hex or base64 (default hex)","enum":["hex","base64"]}},"required":["text"]},"example":{"text":"hello world"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"type":"string"},"encoding":{"type":"string"},"digest":{"type":"string"},"input_bytes":{"type":"integer"}}},"example":{"algorithm":"sha256","encoding":"hex","digest":"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9","input_bytes":11}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/haversine-distance":{"post":{"operationId":"haversineDistance","summary":"Great-circle distance and initial compass bearing between two latitude/longitude points, in kilometres, miles or nautica","description":"Great-circle distance and initial compass bearing between two latitude/longitude points, in kilometres, miles or nautical miles. Use it for delivery radius, travel and nearest-place checks.","tags":["Geo"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat1":{"type":"string","description":"Latitude of point A"},"lon1":{"type":"string","description":"Longitude of point A"},"lat2":{"type":"string","description":"Latitude of point B"},"lon2":{"type":"string","description":"Longitude of point B"},"unit":{"type":"string","description":"km (default), mi or nm","enum":["km","mi","nm"]}},"required":["lat1","lon1","lat2","lon2"]},"example":{"lat1":"41.0082","lon1":"28.9784","lat2":"39.9334","lon2":"32.8597"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"distance":{"type":"number"},"unit":{"type":"string"},"initial_bearing":{"type":"number"}}},"example":{"distance":349.356,"unit":"km","initial_bearing":108.73}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/hmac-sign":{"post":{"operationId":"hmacSign","summary":"Compute an HMAC-SHA256 or HMAC-SHA512 of a message with a secret and optionally check it against a signature, e.g.","description":"Compute an HMAC-SHA256 or HMAC-SHA512 of a message with a secret and optionally check it against a signature, e.g. to verify Stripe, GitHub or Shopify webhooks. Inputs are not stored.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"The signed payload, exactly as received"},"secret":{"type":"string","description":"The shared secret"},"algorithm":{"type":"string","description":"sha256 or sha512 (default sha256)","enum":["sha256","sha512"]},"signature":{"type":"string","description":"Optional signature to check (hex, base64, or 'sha256=<hex>')"}},"required":["message","secret"]},"example":{"message":"{\"event\":\"paid\"}","secret":"whsec_test"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"type":"string"},"hex":{"type":"string"},"base64":{"type":"string"},"matches":{"type":"null"}}},"example":{"algorithm":"sha256","hex":"b85236760a6447cd065efe2b7bd10554c3744eff60cc53dfa47a639c5fd1e22c","base64":"uFI2dgpkR80GXv4re9EFVMN0Tv9gzFPfpHpjnF/R4iw=","matches":null}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/holiday-date-check":{"post":{"operationId":"holidayDateCheck","summary":"Checks whether a date is a public holiday in a country and returns its English and local names and its types (Public, Ba","description":"Checks whether a date is a public holiday in a country and returns its English and local names and its types (Public, Bank, School...). Use it for deadline, scheduling and business-day workflows.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code, e.g. US, GB, DE"},"date":{"type":"string","description":"Day to check, YYYY-MM-DD"}},"required":["country","date"]},"example":{"country":"US","date":"2026-12-25"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"date":{"type":"string"},"is_holiday":{"type":"boolean"},"holiday":{"type":"object","properties":{"name":{"type":"string"},"local_name":{"type":"string"},"date":{"type":"string"},"public":{"type":"boolean"},"global":{"type":"boolean"},"types":{"type":"array","items":{"type":"string"}}}}}},"example":{"country":"US","date":"2026-12-25","is_holiday":true,"holiday":{"name":"Christmas Day","local_name":"Christmas Day","date":"2026-12-25","public":true,"global":true,"types":["Public","Bank"]}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/iban-validate":{"post":{"operationId":"ibanValidate","summary":"Validate an IBAN (country length and ISO 13616 mod-97 checksum) and return its electronic and printed forms, country, ch","description":"Validate an IBAN (country length and ISO 13616 mod-97 checksum) and return its electronic and printed forms, country, check digits and BBAN. Use it before saving bank details or sending a payment.","tags":["Finance"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"iban":{"type":"string","description":"IBAN with or without spaces"}},"required":["iban"]},"example":{"iban":"TR33 0006 1005 1978 6457 8413 26"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"iban":{"type":"string"},"formatted":{"type":"string"},"country":{"type":"string"},"check_digits":{"type":"string"},"bban":{"type":"string"},"expected_length":{"type":"integer"},"length_ok":{"type":"boolean"},"checksum_ok":{"type":"boolean"}}},"example":{"valid":true,"iban":"TR330006100519786457841326","formatted":"TR33 0006 1005 1978 6457 8413 26","country":"TR","check_digits":"33","bban":"0006100519786457841326","expected_length":26,"length_ok":true,"checksum_ok":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/ip-info":{"post":{"operationId":"ipInfo","summary":"Parse an IPv4 or IPv6 address and classify it (private, loopback, link-local, multicast, carrier-grade NAT, reserved, un","description":"Parse an IPv4 or IPv6 address and classify it (private, loopback, link-local, multicast, carrier-grade NAT, reserved, unicast...), with the normalized form and the IPv4 inside IPv4-mapped IPv6. Use it to vet IPs from logs, headers or user input.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ip":{"type":"string","description":"IPv4 or IPv6 address"}},"required":["ip"]},"example":{"ip":"192.168.1.10"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"version":{"type":"integer"},"address":{"type":"string"},"normalized":{"type":"string"},"range":{"type":"string"},"ipv4_mapped":{"type":"null"}}},"example":{"input":"192.168.1.10","version":4,"address":"192.168.1.10","normalized":"192.168.1.10","range":"private","ipv4_mapped":null}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/isbn-info":{"post":{"operationId":"isbnInfo","summary":"Validate an ISBN-10 or ISBN-13 (hyphens and spaces allowed) and convert between the two forms.","description":"Validate an ISBN-10 or ISBN-13 (hyphens and spaces allowed) and convert between the two forms. Use it to match books across catalogs and stores.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isbn":{"type":"string","description":"ISBN-10 or ISBN-13, e.g. 978-0-306-40615-7"}},"required":["isbn"]},"example":{"isbn":"978-0-306-40615-7"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"isbn":{"type":"string"},"type":{"type":"integer"},"valid":{"type":"boolean"},"isbn10":{"type":"string"},"isbn13":{"type":"string"}}},"example":{"isbn":"9780306406157","type":13,"valid":true,"isbn10":"0306406152","isbn13":"9780306406157"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/iso-duration":{"post":{"operationId":"isoDuration","summary":"Convert between ISO 8601 durations (P1DT2H30M, PT90S, P2W) and seconds, with a canonical form and plain-English text.","description":"Convert between ISO 8601 durations (P1DT2H30M, PT90S, P2W) and seconds, with a canonical form and plain-English text. Use it for timeouts, schedules and video lengths.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"ISO 8601 duration like P1DT2H30M, or a number of seconds like 5400"}},"required":["value"]},"example":{"value":"P1DT2H30M"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"iso":{"type":"string"},"seconds":{"type":"integer"},"human":{"type":"string"}}},"example":{"iso":"P1DT2H30M","seconds":95400,"human":"1 day, 2 hours, 30 minutes"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-canonicalize":{"post":{"operationId":"jsonCanonicalize","summary":"Parses JSON and returns a deterministic canonical representation with sorted object keys and normalized compact formatti","description":"Parses JSON and returns a deterministic canonical representation with sorted object keys and normalized compact formatting. Use it before hashing, signing, comparing, or caching JSON values.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"The JSON text to canonicalize"}},"required":["json"]},"example":{"json":"{\"b\": 1, \"a\": [3, 2, {\"z\": null, \"y\": true}]}"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"canonical":{"type":"string"},"valid":{"type":"boolean"}}},"example":{"canonical":"{\"a\":[3,2,{\"y\":true,\"z\":null}],\"b\":1}","valid":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-pointer":{"post":{"operationId":"jsonPointer","summary":"Read a value out of a JSON document with an RFC 6901 JSON Pointer like /items/0/name.","description":"Read a value out of a JSON document with an RFC 6901 JSON Pointer like /items/0/name. Use it to pull one field from a large API response without guessing.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"The JSON document"},"pointer":{"type":"string","description":"RFC 6901 pointer, e.g. /items/0/name (\"\" is the whole document)"}},"required":["json","pointer"]},"example":{"json":"{\"items\":[{\"name\":\"a\"},{\"name\":\"b\"}],\"meta\":{\"a/b\":1,\"m~n\":2}}","pointer":"/items/1/name"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"value":{"type":"string"},"type":{"type":"string"}}},"example":{"found":true,"value":"b","type":"string"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-structural-diff":{"post":{"operationId":"jsonStructuralDiff","summary":"Compares two JSON documents and returns added, removed, and changed paths with their values.","description":"Compares two JSON documents and returns added, removed, and changed paths with their values. Use it to inspect configuration, API response, or document changes without writing comparison code.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","description":"The base JSON document (text)"},"b":{"type":"string","description":"The modified JSON document (text)"}},"required":["a","b"]},"example":{"a":"{\"db\": {\"host\": \"localhost\", \"port\": 5432}}","b":"{\"db\": {\"host\": \"db.example.com\", \"port\": 5432}, \"debug\": true}"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"added":{"type":"array","items":{"type":"object","properties":{"p":{"type":"string"},"v":{"type":"boolean"}}}},"removed":{"type":"array","items":{}},"changed":{"type":"array","items":{"type":"object","properties":{"p":{"type":"string"},"v":{"type":"object","properties":{"a":{"type":"string"},"b":{"type":"string"}}}}}}}},"example":{"added":[{"p":"/debug","v":true}],"removed":[],"changed":[{"p":"/db/host","v":{"a":"localhost","b":"db.example.com"}}]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-to-csv":{"post":{"operationId":"jsonToCsv","summary":"Turn a JSON array of objects into CSV with a header row and correct quoting (commas, quotes, line breaks).","description":"Turn a JSON array of objects into CSV with a header row and correct quoting (commas, quotes, line breaks). Use it to hand data to spreadsheets, Excel or databases.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON array of objects, e.g. [{\"name\":\"dns\",\"price\":0.001}]"}},"required":["json"]},"example":{"json":"[{\"tool\":\"dns\",\"price\":0.001},{\"tool\":\"qr-code\",\"price\":0.002}]"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"integer"},"csv":{"type":"string"}}},"example":{"rows":2,"csv":"tool,price\ndns,0.001\nqr-code,0.002"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-to-xml":{"post":{"operationId":"jsonToXml","summary":"Turn a JSON object into formatted XML (keys starting with @_ become attributes).","description":"Turn a JSON object into formatted XML (keys starting with @_ become attributes). Use it to build XML payloads, feeds or sitemaps from data.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON object, e.g. {\"note\":{\"@_lang\":\"en\",\"to\":\"Ada\"}}"}},"required":["json"]},"example":{"json":"{\"note\":{\"@_lang\":\"en\",\"to\":\"Ada\",\"body\":\"Hello\"}}"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"xml":{"type":"string"}}},"example":{"xml":"<note lang=\"en\">\n  <to>Ada</to>\n  <body>Hello</body>\n</note>\n"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/json-to-yaml":{"post":{"operationId":"jsonToYaml","summary":"Turn JSON into clean, readable YAML.","description":"Turn JSON into clean, readable YAML. Use it to write config files, Kubernetes manifests or front matter from data an agent has.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON text"}},"required":["json"]},"example":{"json":"{\"name\":\"fastx402\",\"tools\":[\"dns\",\"qr-code\"],\"price\":0.001,\"live\":true}"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"yaml":{"type":"string"}}},"example":{"yaml":"name: fastx402\ntools:\n  - dns\n  - qr-code\nprice: 0.001\nlive: true\n"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/jwt-decode":{"post":{"operationId":"jwtDecode","summary":"Decode a JWT's header and payload and report its algorithm, issue and expiry times and whether it is expired.","description":"Decode a JWT's header and payload and report its algorithm, issue and expiry times and whether it is expired. It does NOT verify the signature. Use it to inspect tokens while debugging auth.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The JWT"},"now":{"type":"string","description":"Optional: current time as unix seconds, for a reproducible answer"}},"required":["token"]},"example":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZ2VudC00MiIsImlhdCI6MTc5MDAwMDAwMCwiZXhwIjoxNzkwMDAzNjAwfQ.c2lnbmF0dXJl","now":"1790001800"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"header":{"type":"object","properties":{"alg":{"type":"string"},"typ":{"type":"string"}}},"payload":{"type":"object","properties":{"sub":{"type":"string"},"iat":{"type":"integer"},"exp":{"type":"integer"}}},"algorithm":{"type":"string"},"signature_present":{"type":"boolean"},"issued_at":{"type":"string"},"expires_at":{"type":"string"},"expired":{"type":"boolean"},"seconds_until_expiry":{"type":"integer"}}},"example":{"header":{"alg":"HS256","typ":"JWT"},"payload":{"sub":"agent-42","iat":1790000000,"exp":1790003600},"algorithm":"HS256","signature_present":true,"issued_at":"2026-09-21T14:13:20Z","expires_at":"2026-09-21T15:13:20Z","expired":false,"seconds_until_expiry":1800}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/keccak256":{"post":{"operationId":"keccak256","summary":"Keccak-256 hash (the Ethereum hash, not SHA3-256) of UTF-8 text or of hex bytes.","description":"Keccak-256 hash (the Ethereum hash, not SHA3-256) of UTF-8 text or of hex bytes. Use it for Solidity storage keys, event topics, commitments or checking a hash an agent computed.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"UTF-8 text to hash"},"hex":{"type":"string","description":"Hex bytes to hash, like 0x68656c6c6f; \"0x\" is empty"}},"required":[]},"example":{"text":"hello"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string"},"input_bytes":{"type":"integer"}}},"example":{"hash":"0x1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8","input_bytes":5}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/loan-payment":{"post":{"operationId":"loanPayment","summary":"Monthly payment, total paid and total interest of a fixed-rate, fully amortising loan (mortgage, car loan, kredi).","description":"Monthly payment, total paid and total interest of a fixed-rate, fully amortising loan (mortgage, car loan, kredi). Use it to compare offers; it computes, it does not advise.","tags":["Finance"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"string","description":"Loan amount, e.g. 250000"},"annual_rate_percent":{"type":"string","description":"Yearly interest rate in percent, e.g. 4.5"},"months":{"type":"string","description":"Number of monthly payments, e.g. 360"}},"required":["principal","annual_rate_percent","months"]},"example":{"principal":"250000","annual_rate_percent":"4.5","months":"360"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"integer"},"annual_rate_percent":{"type":"number"},"months":{"type":"integer"},"monthly_payment":{"type":"number"},"total_paid":{"type":"number"},"total_interest":{"type":"number"}}},"example":{"principal":250000,"annual_rate_percent":4.5,"months":360,"monthly_payment":1266.71,"total_paid":456015.6,"total_interest":206015.6}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/markdown-to-html":{"post":{"operationId":"markdownToHtml","summary":"Convert Markdown (GitHub-flavored: tables, task lists, fenced code) to HTML.","description":"Convert Markdown (GitHub-flavored: tables, task lists, fenced code) to HTML. Use it to publish text an agent wrote as a web page, email or CMS entry.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown text"}},"required":["markdown"]},"example":{"markdown":"# FastX402\n\nPay-per-call **tools** for agents.\n\n- dns\n- qr-code\n"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"html":{"type":"string"}}},"example":{"html":"<h1>FastX402</h1>\n<p>Pay-per-call <strong>tools</strong> for agents.</p>\n<ul>\n<li>dns</li>\n<li>qr-code</li>\n</ul>\n"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/name-resolve":{"post":{"operationId":"nameResolve","summary":"Resolve an ENS name (vitalik.eth) or a Basename (jesse.base.eth) to its wallet address, read live from the chain.","description":"Resolve an ENS name (vitalik.eth) or a Basename (jesse.base.eth) to its wallet address, read live from the chain. Use it before sending funds to a human-readable name.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"ENS name or Basename, e.g. vitalik.eth or jesse.base.eth"}},"required":["name"]},"example":{"name":"vitalik.eth"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"chain":{"type":"string"},"resolver":{"type":"string"},"address":{"type":"string"}}},"example":{"name":"vitalik.eth","chain":"ethereum","resolver":"0x231b0ee14048e9dccd1d247744d114a4eb5e8e63","address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/number-base-convert":{"post":{"operationId":"numberBaseConvert","summary":"Converts an integer string between bases 2 through 36 and returns the normalized result.","description":"Converts an integer string between bases 2 through 36 and returns the normalized result. Use it for binary, hexadecimal, encoded identifiers, and low-level data formatting.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Integer to convert, e.g. \"ff\", \"-1011\", \"7z\"; optional leading + or - sign"},"from_base":{"type":"string","description":"Source base as a decimal number from 2 to 36"},"to_base":{"type":"string","description":"Target base as a decimal number from 2 to 36"}},"required":["value","from_base","to_base"]},"example":{"value":"ff","from_base":"16","to_base":"2"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string"},"from_base":{"type":"integer"},"to_base":{"type":"integer"},"result":{"type":"string"}}},"example":{"value":"ff","from_base":16,"to_base":2,"result":"11111111"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/punycode-domain":{"post":{"operationId":"punycodeDomain","summary":"Convert an internationalised domain name between Unicode (münchen.de, türkiye.gov.tr) and its ASCII Punycode form (xn--.","description":"Convert an internationalised domain name between Unicode (münchen.de, türkiye.gov.tr) and its ASCII Punycode form (xn--...). Use it before DNS lookups, certificate checks or comparing domains.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name in Unicode or ASCII form"}},"required":["domain"]},"example":{"domain":"münchen.de"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"ascii":{"type":"string"},"unicode":{"type":"string"}}},"example":{"ascii":"xn--mnchen-3ya.de","unicode":"münchen.de"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/qr-code":{"post":{"operationId":"qrCode","summary":"Make a QR code for any text or URL as an SVG image (and a ready-to-use data URI), with a chosen error-correction level a","description":"Make a QR code for any text or URL as an SVG image (and a ready-to-use data URI), with a chosen error-correction level and margin. Use it to put links, Wi-Fi details or payment requests into images and pages.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text or URL to encode (1-1000 characters)"},"ecc":{"type":"string","description":"Error correction: L, M, Q or H (default M)","enum":["L","M","Q","H"]},"margin":{"type":"string","description":"Quiet zone in modules, 0-8 (default 2)"}},"required":["text"]},"example":{"text":"https://fastx402.tools"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string"},"data_uri":{"type":"string"}}},"example":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29 29\" shape-rendering=\"crispEdges\"><path fill=\"#ffffff\" d=\"M0 0h29v29H0z\"/><path stroke=\"#000000\" d=\"M2 2.5h7m3 0h1m1 0h1m1 0h1m1 0h1m1 0h7M2 3.5h1m5 0h1m2 0h1m1 0h1m2 0h2m2 0h1m5 0h1M2 4.5h1m1 0h3m1 0h1m1 0h3m1 0h1m3 0h1m1 0h1m1 0h3m1 0h1M2 5.5h1m1 0h3m1 0h1m1 0h3m1 0h3m3 0h1m1 0h3m1 0h1M2 6.5h1m1 0h3m1 0h1m1 0h1m1 0h1m2 0h1m4 0h1m1 0h3m1 0h1M2 7.5h1m5 0h1m1 0h8m2 0h1m5 0h1M2 8.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M10 9.5h2m2 0h1m1 0h1M2 10.5h1m1 0h5m2 0h1m1 0h1m1 0h4m1 0h5M3 11.5h1m3 0h1m1 0h4m1 0h2m5 0h1m3 0h1M2 12.5h2m1 0h4m2 0h1m3 0h3m2 0h1m1 0h2m1 0h2M4 13.5h1m2 0h1m8 0h2m1 0h3m4 0h1M3 14.5h1m2 0h5m1 0h1m2 0h6m1 0h1m1 0h3M2 15.5h3m1 0h2m2 0h3m1 0h2m3 0h1m1 0h1m1 0h1m1 0h1M2 16.5h1m1 0h2m1 0h2m2 0h2m3 0h2m2 0h4m1 0h2M2 17.5h1m8 0h1m2 0h1m2 0h3m1 0h2m3 0h1M2 18.5h1m1 0h2m1 0h2m2 0h1m2 0h9m1 0h1M10 19.5h3m3 0h1m1 0h1m3 0h2M2 20.5h7m2 0h5m2 0h1m1 0h1m1 0h1m1 0h3M2 21.5h1m5 0h1m1 0h2m1 0h1m2 0h3m3 0h2M2 22.5h1m1 0h3m1 0h1m1 0h2m1 0h1m3 0h6m1 0h3M2 23.5h1m1 0h3m1 0h1m1 0h2m2 0h2m1 0h1m1 0h2m1 0h5M2 24.5h1m1 0h3m1 0h1m1 0h3m2 0h5m3 0h2m1 0h1M2 25.5h1m5 0h1m5 0h2m2 0h6m2 0h1M2 26.5h7m1 0h1m1 0h1m1 0h1m1 0h1m3 0h7\"/></svg>\n","data_uri":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyOSAyOSIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMCAwaDI5djI5SDB6Ii8+PHBhdGggc3Ryb2tlPSIjMDAwMDAwIiBkPSJNMiAyLjVoN20zIDBoMW0xIDBoMW0xIDBoMW0xIDBoMW0xIDBoN00yIDMuNWgxbTUgMGgxbTIgMGgxbTEgMGgxbTIgMGgybTIgMGgxbTUgMGgxTTIgNC41aDFtMSAwaDNtMSAwaDFtMSAwaDNtMSAwaDFtMyAwaDFtMSAwaDFtMSAwaDNtMSAwaDFNMiA1LjVoMW0xIDBoM20xIDBoMW0xIDBoM20xIDBoM20zIDBoMW0xIDBoM20xIDBoMU0yIDYuNWgxbTEgMGgzbTEgMGgxbTEgMGgxbTEgMGgxbTIgMGgxbTQgMGgxbTEgMGgzbTEgMGgxTTIgNy41aDFtNSAwaDFtMSAwaDhtMiAwaDFtNSAwaDFNMiA4LjVoN20xIDBoMW0xIDBoMW0xIDBoMW0xIDBoMW0xIDBoMW0xIDBoN00xMCA5LjVoMm0yIDBoMW0xIDBoMU0yIDEwLjVoMW0xIDBoNW0yIDBoMW0xIDBoMW0xIDBoNG0xIDBoNU0zIDExLjVoMW0zIDBoMW0xIDBoNG0xIDBoMm01IDBoMW0zIDBoMU0yIDEyLjVoMm0xIDBoNG0yIDBoMW0zIDBoM20yIDBoMW0xIDBoMm0xIDBoMk00IDEzLjVoMW0yIDBoMW04IDBoMm0xIDBoM200IDBoMU0zIDE0LjVoMW0yIDBoNW0xIDBoMW0yIDBoNm0xIDBoMW0xIDBoM00yIDE1LjVoM20xIDBoMm0yIDBoM20xIDBoMm0zIDBoMW0xIDBoMW0xIDBoMW0xIDBoMU0yIDE2LjVoMW0xIDBoMm0xIDBoMm0yIDBoMm0zIDBoMm0yIDBoNG0xIDBoMk0yIDE3LjVoMW04IDBoMW0yIDBoMW0yIDBoM20xIDBoMm0zIDBoMU0yIDE4LjVoMW0xIDBoMm0xIDBoMm0yIDBoMW0yIDBoOW0xIDBoMU0xMCAxOS41aDNtMyAwaDFtMSAwaDFtMyAwaDJNMiAyMC41aDdtMiAwaDVtMiAwaDFtMSAwaDFtMSAwaDFtMSAwaDNNMiAyMS41aDFtNSAwaDFtMSAwaDJtMSAwaDFtMiAwaDNtMyAwaDJNMiAyMi41aDFtMSAwaDNtMSAwaDFtMSAwaDJtMSAwaDFtMyAwaDZtMSAwaDNNMiAyMy41aDFtMSAwaDNtMSAwaDFtMSAwaDJtMiAwaDJtMSAwaDFtMSAwaDJtMSAwaDVNMiAyNC41aDFtMSAwaDNtMSAwaDFtMSAwaDNtMiAwaDVtMyAwaDJtMSAwaDFNMiAyNS41aDFtNSAwaDFtNSAwaDJtMiAwaDZtMiAwaDFNMiAyNi41aDdtMSAwaDFtMSAwaDFtMSAwaDFtMSAwaDFtMyAwaDciLz48L3N2Zz4K"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/relative-time":{"post":{"operationId":"relativeTime","summary":"Human-friendly relative time between two dates (about 3 hours ago, 3 ay içinde) in English, Turkish, German, French or S","description":"Human-friendly relative time between two dates (about 3 hours ago, 3 ay içinde) in English, Turkish, German, French or Spanish, plus the exact difference in seconds. Use it when writing messages for people.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"The date to describe, ISO 8601"},"base":{"type":"string","description":"The reference date (usually now), ISO 8601"},"locale":{"type":"string","description":"en, tr, de, fr or es (default en)","enum":["en","tr","de","fr","es"]}},"required":["date","base"]},"example":{"date":"2026-10-17T09:00:00Z","base":"2026-10-17T12:30:00Z"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string"},"strict":{"type":"string"},"seconds":{"type":"integer"}}},"example":{"text":"about 4 hours ago","strict":"4 hours ago","seconds":-12600}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/rfc3339-normalize":{"post":{"operationId":"rfc3339Normalize","summary":"Accepts an RFC 3339 or ISO-8601 timestamp and returns its canonical UTC form, Unix seconds, date, time, and UTC offset.","description":"Accepts an RFC 3339 or ISO-8601 timestamp and returns its canonical UTC form, Unix seconds, date, time, and UTC offset. Use it to normalize timestamps before comparison or storage.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"timestamp":{"type":"string","description":"RFC 3339 / ISO-8601 timestamp, e.g. 2026-03-15T14:30:45+05:30 or 2026-03-15T09:00:00Z. A space may replace the T. Offset is required."}},"required":["timestamp"]},"example":{"timestamp":"2026-03-15T14:30:45.123+05:30"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string"},"utc":{"type":"string"},"unix_seconds":{"type":"integer"},"unix_milliseconds":{"type":"integer"},"date":{"type":"string"},"time":{"type":"string"},"utc_offset":{"type":"string"},"utc_offset_minutes":{"type":"integer"}}},"example":{"input":"2026-03-15T14:30:45.123+05:30","utc":"2026-03-15T09:00:45.123Z","unix_seconds":1773565245,"unix_milliseconds":1773565245123,"date":"2026-03-15","time":"09:00:45.123","utc_offset":"+05:30","utc_offset_minutes":330}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/semver-match":{"post":{"operationId":"semverMatch","summary":"Accepts a comma-separated list of semantic versions and a semver constraint such as ^2.4.0 or >=1.5.0 <2.0.0, then retur","description":"Accepts a comma-separated list of semantic versions and a semver constraint such as ^2.4.0 or >=1.5.0 <2.0.0, then returns matching versions and the highest match. Use it for dependency and release checks.","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"versions":{"type":"string","description":"Comma-separated semantic versions, e.g. 1.2.3,2.0.0-rc.1 (max 200)"},"constraint":{"type":"string","description":"Semver range: ^, ~, >, >=, <, <=, =, x-ranges, hyphen ranges, space for AND, || for OR (max 200 chars)"}},"required":["versions","constraint"]},"example":{"versions":"1.2.3,2.0.0,2.4.0,2.5.1,3.0.0-beta.1,3.0.0","constraint":"^2.4.0"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"constraint":{"type":"string"},"checked":{"type":"integer"},"count":{"type":"integer"},"matches":{"type":"array","items":{"type":"string"}},"highest":{"type":"string"}}},"example":{"constraint":"^2.4.0","checked":6,"count":2,"matches":["2.4.0","2.5.1"],"highest":"2.5.1"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/slugify":{"post":{"operationId":"slugify","summary":"Turn any title into a clean URL slug, handling Turkish and other accented letters correctly (İstanbul'da Güzel Şeyler ->","description":"Turn any title into a clean URL slug, handling Turkish and other accented letters correctly (İstanbul'da Güzel Şeyler -> istanbulda-guzel-seyler). Use it for URLs, file names and IDs.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Title or phrase"},"separator":{"type":"string","description":"\"-\" (default), \"_\" or \".\"","enum":["-","_","."]},"max_length":{"type":"string","description":"Optional maximum length, 1-200"}},"required":["text"]},"example":{"text":"İstanbul'da Güzel Şeyler!"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"}}},"example":{"slug":"istanbulda-guzel-seyler"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/solana-balance":{"post":{"operationId":"solanaBalance","summary":"SOL and USDC balance of any Solana wallet, read live from the chain.","description":"SOL and USDC balance of any Solana wallet, read live from the chain. Use it before sending funds, to check a payment arrived, or to watch a wallet.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Solana wallet address (base58)"}},"required":["address"]},"example":{"address":"2fC3xrp7tZTybKRimFaCKpyKXC1ijXEaJ2tDzTAH51Vc"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string"},"sol":{"type":"string"},"lamports":{"type":"string"},"usdc":{"type":"string"},"usdc_raw":{"type":"string"}}},"example":{"address":"2fC3xrp7tZTybKRimFaCKpyKXC1ijXEaJ2tDzTAH51Vc","sol":"0","lamports":"0","usdc":"2.699","usdc_raw":"2699000"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/solana-token-info":{"post":{"operationId":"solanaTokenInfo","summary":"Decimals and total supply of an SPL token mint on Solana (USDC, USDT, memecoins), read live from the chain.","description":"Decimals and total supply of an SPL token mint on Solana (USDC, USDT, memecoins), read live from the chain. Use it to check a token before trading, paying or displaying amounts.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mint":{"type":"string","description":"Token mint address (base58)"}},"required":["mint"]},"example":{"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"mint":{"type":"string"},"decimals":{"type":"integer"},"supply":{"type":"string"},"supply_raw":{"type":"string"}}},"example":{"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","decimals":6,"supply":"7966758880.41786","supply_raw":"7966758880417860"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/solana-tx-status":{"post":{"operationId":"solanaTxStatus","summary":"Status of a Solana transaction by signature: success, failed or not found, with slot and confirmation level.","description":"Status of a Solana transaction by signature: success, failed or not found, with slot and confirmation level. Use it to confirm a payment or program call went through.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string","description":"Transaction signature (base58)"}},"required":["signature"]},"example":{"signature":"4WgK9w95nm6YFXD3q9uqg8HT7mpcjxmZSWdzGUuses1Dz26LXTF7zzxwWhaTzqViqsyQn24V7qd2SF4yiWpSDhfx"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string"},"status":{"type":"string"},"slot":{"type":"integer"},"confirmation_status":{"type":"string"},"confirmations":{"type":"null"},"error":{"type":"null"}}},"example":{"signature":"4WgK9w95nm6YFXD3q9uqg8HT7mpcjxmZSWdzGUuses1Dz26LXTF7zzxwWhaTzqViqsyQn24V7qd2SF4yiWpSDhfx","status":"success","slot":457999184,"confirmation_status":"finalized","confirmations":null,"error":null}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/solidity-selector":{"post":{"operationId":"soliditySelector","summary":"Compute the 4-byte function selector and 32-byte event topic of a Solidity signature like transfer(address,uint256).","description":"Compute the 4-byte function selector and 32-byte event topic of a Solidity signature like transfer(address,uint256). Use it to build or recognise calldata and to filter logs.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string","description":"Solidity function or event signature, e.g. transfer(address,uint256)"}},"required":["signature"]},"example":{"signature":"transfer(address,uint256)"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"signature":{"type":"string"},"selector":{"type":"string"},"topic":{"type":"string"}}},"example":{"signature":"transfer(address,uint256)","selector":"0xa9059cbb","topic":"0xa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/sun-position-times":{"post":{"operationId":"sunPositionTimes","summary":"Returns sunrise, sunset, solar noon, and twilight times for a latitude, longitude, and date.","description":"Returns sunrise, sunset, solar noon, and twilight times for a latitude, longitude, and date. Use it for daylight-aware scheduling or location-based time calculations.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"string","description":"Latitude in decimal degrees, between -90 and 90 (e.g. 40.7128)"},"lng":{"type":"string","description":"Longitude in decimal degrees, between -180 and 180 (e.g. -74.0060)"},"date":{"type":"string","description":"Date of the observation, YYYY-MM-DD"}},"required":["lat","lng","date"]},"example":{"lat":"40.7128","lng":"-74.0060","date":"2026-06-21"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"date":{"type":"string"},"sunrise":{"type":"string"},"sunset":{"type":"string"},"solar_noon":{"type":"string"},"day_length":{"type":"string"},"civil_twilight_begin":{"type":"string"},"civil_twilight_end":{"type":"string"}}},"example":{"lat":40.7128,"lng":-74.006,"date":"2026-06-21","sunrise":"2026-06-21T08:24:00+00:00","sunset":"2026-06-21T20:29:00+00:00","solar_noon":"2026-06-21T14:26:00+00:00","day_length":"12:05:00","civil_twilight_begin":"2026-06-21T07:50:00+00:00","civil_twilight_end":"2026-06-21T21:03:00+00:00"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/text-diff":{"post":{"operationId":"textDiff","summary":"Compare two texts line by line and return a unified diff (patch format) plus counts of added and removed lines.","description":"Compare two texts line by line and return a unified diff (patch format) plus counts of added and removed lines. Use it to show what changed between two versions of a document, config or code.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"old":{"type":"string","description":"Original text"},"new":{"type":"string","description":"Changed text"},"context":{"type":"string","description":"Unchanged lines around each change, 0-10 (default 3)"}},"required":["old","new"]},"example":{"old":"name: fastx402\nprice: 0.001\ntools: 51\n","new":"name: fastx402\nprice: 0.001\ntools: 54\nsolana: true\n"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"patch":{"type":"string"},"added":{"type":"integer"},"removed":{"type":"integer"},"identical":{"type":"boolean"}}},"example":{"patch":"===================================================================\n--- old\n+++ new\n@@ -1,3 +1,4 @@\n name: fastx402\n price: 0.001\n-tools: 51\n+tools: 54\n+solana: true\n","added":2,"removed":1,"identical":false}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/text-similarity":{"post":{"operationId":"textSimilarity","summary":"Exact Levenshtein edit distance, normalised similarity and Jaro-Winkler score between two strings.","description":"Exact Levenshtein edit distance, normalised similarity and Jaro-Winkler score between two strings. Use it for fuzzy matching of names, deduplication and typo detection.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"string","description":"First string"},"b":{"type":"string","description":"Second string"}},"required":["a","b"]},"example":{"a":"kitten","b":"sitting"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"levenshtein":{"type":"integer"},"similarity":{"type":"number"},"jaro_winkler":{"type":"number"},"equal_ignoring_case":{"type":"boolean"}}},"example":{"levenshtein":3,"similarity":0.5714,"jaro_winkler":0.746,"equal_ignoring_case":false}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/token-units":{"post":{"operationId":"tokenUnits","summary":"Exact conversion between a token's decimal amount and its integer base units (wei, USDC atomic units...) for any decimal","description":"Exact conversion between a token's decimal amount and its integer base units (wei, USDC atomic units...) for any decimals 0-36. No floating point. Use it before signing a transfer or reading a balance.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Amount: a decimal like 1.5 for to_atomic, or an integer like 1500000 for from_atomic"},"decimals":{"type":"string","description":"Token decimals, 0-36 (USDC 6, ETH 18)"},"direction":{"type":"string","description":"to_atomic or from_atomic","enum":["to_atomic","from_atomic"]}},"required":["value","decimals","direction"]},"example":{"value":"1.5","decimals":"6","direction":"to_atomic"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"atomic":{"type":"string"},"decimal":{"type":"string"},"decimals":{"type":"integer"}}},"example":{"atomic":"1500000","decimal":"1.5","decimals":6}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/turkish-case":{"post":{"operationId":"turkishCase","summary":"Upper, lower or title case Turkish text correctly (i/İ and ı/I), or fold it to ASCII.","description":"Upper, lower or title case Turkish text correctly (i/İ and ı/I), or fold it to ASCII. Generic case functions get Turkish wrong: 'istanbul' must become 'İSTANBUL', 'IŞIK' must become 'ışık'.","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Turkish text"},"mode":{"type":"string","description":"upper, lower, title or ascii","enum":["upper","lower","title","ascii"]}},"required":["text","mode"]},"example":{"text":"istanbul ılık bir şehir","mode":"upper"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string"},"result":{"type":"string"}}},"example":{"mode":"upper","result":"İSTANBUL ILIK BİR ŞEHİR"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/tz-convert":{"post":{"operationId":"tzConvert","summary":"Convert a local date-time between IANA time zones with correct daylight-saving handling, reporting the UTC instant and b","description":"Convert a local date-time between IANA time zones with correct daylight-saving handling, reporting the UTC instant and both offsets. It refuses times skipped by a DST change instead of guessing.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datetime":{"type":"string","description":"Local date-time, e.g. 2026-03-29T14:30"},"from":{"type":"string","description":"IANA time zone of datetime, e.g. Europe/Istanbul"},"to":{"type":"string","description":"IANA time zone to convert to, e.g. America/New_York"}},"required":["datetime","from","to"]},"example":{"datetime":"2026-01-15T09:00","from":"Europe/London","to":"Asia/Tokyo"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"utc":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"from_offset_minutes":{"type":"integer"},"to_offset_minutes":{"type":"integer"}}},"example":{"utc":"2026-01-15T09:00:00Z","from":"2026-01-15T09:00:00+00:00","to":"2026-01-15T18:00:00+09:00","from_offset_minutes":0,"to_offset_minutes":540}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/unit-convert":{"post":{"operationId":"unitConvert","summary":"Convert a value between units of length, mass, temperature, volume, area, speed, time, digital storage, energy, pressure","description":"Convert a value between units of length, mass, temperature, volume, area, speed, time, digital storage, energy, pressure and more (km to mi, C to F, kg to lb, GB to MB). Use it whenever numbers come in the wrong unit.","tags":["Science"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Number to convert, e.g. 100"},"from":{"type":"string","description":"Unit to convert from, e.g. km"},"to":{"type":"string","description":"Unit to convert to, e.g. mi"}},"required":["value","from","to"]},"example":{"value":"100","from":"km","to":"mi"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"integer"},"from":{"type":"string"},"to":{"type":"string"},"measure":{"type":"string"},"result":{"type":"number"}}},"example":{"value":100,"from":"km","to":"mi","measure":"length","result":62.1371212121}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/url-inspect":{"post":{"operationId":"urlInspect","summary":"Parse a URL the way browsers do (WHATWG) and return its normalised form, host in ASCII and Unicode, port, path, query pa","description":"Parse a URL the way browsers do (WHATWG) and return its normalised form, host in ASCII and Unicode, port, path, query parameters and fragment. Use it to compare, clean or validate links.","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute URL"}},"required":["url"]},"example":{"url":"HTTPS://Münih.Example.COM:443/a/../b/?q=1&q=2&x=%20y#Top"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"href":{"type":"string"},"protocol":{"type":"string"},"hostname":{"type":"string"},"hostname_unicode":{"type":"string"},"port":{"type":"null"},"path":{"type":"string"},"query":{"type":"object","properties":{"q":{"type":"array","items":{"type":"string"}},"x":{"type":"string"}}},"fragment":{"type":"string"},"origin":{"type":"string"},"is_ip":{"type":"boolean"}}},"example":{"href":"https://xn--mnih-0ra.example.com/b/?q=1&q=2&x=%20y#Top","protocol":"https","hostname":"xn--mnih-0ra.example.com","hostname_unicode":"münih.example.com","port":null,"path":"/b/","query":{"q":["1","2"],"x":" y"},"fragment":"Top","origin":"https://xn--mnih-0ra.example.com","is_ip":false}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/validate":{"post":{"operationId":"validate","summary":"Check whether a string is a valid email, url, uuid, ipv4, ipv6, cidr, mac, fqdn, isbn, issn, iban, bic, ean, jwt, semver","description":"Check whether a string is a valid email, url, uuid, ipv4, ipv6, cidr, mac, fqdn, isbn, issn, iban, bic, ean, jwt, semver, hex color, mime type, lat long, port, md5, sha256, base64, base58, json, slug, eth address, btc address, iso8601, country code, currency code, locale, magnet uri, time (33 formats), using the widely used validator.js rules. Use it before storing, sending or acting on a value.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"The string to check"},"type":{"type":"string","description":"Format to check","enum":["email","url","uuid","ipv4","ipv6","cidr","mac","fqdn","isbn","issn","iban","bic","ean","jwt","semver","hex_color","mime_type","lat_long","port","md5","sha256","base64","base58","json","slug","eth_address","btc_address","iso8601","country_code","currency_code","locale","magnet_uri","time"]}},"required":["value","type"]},"example":{"value":"hello@fastx402.tools","type":"email"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string"},"valid":{"type":"boolean"}}},"example":{"type":"email","valid":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/wcag-contrast":{"post":{"operationId":"wcagContrast","summary":"Calculates relative luminance and contrast ratio for two supplied colors, then reports WCAG AA and AAA pass or fail resu","description":"Calculates relative luminance and contrast ratio for two supplied colors, then reports WCAG AA and AAA pass or fail results. Use it to check text and background color combinations.","tags":["Utility"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"foreground":{"type":"string","description":"Text color as hex: #RGB or #RRGGBB (leading # optional)"},"background":{"type":"string","description":"Background color as hex: #RGB or #RRGGBB (leading # optional)"}},"required":["foreground","background"]},"example":{"foreground":"#1a1a2e","background":"#ffffff"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"foreground":{"type":"string"},"background":{"type":"string"},"foreground_luminance":{"type":"number"},"background_luminance":{"type":"integer"},"contrast_ratio":{"type":"number"},"aa_normal_text":{"type":"boolean"},"aa_large_text":{"type":"boolean"},"aaa_normal_text":{"type":"boolean"},"aaa_large_text":{"type":"boolean"}}},"example":{"foreground":"#1a1a2e","background":"#ffffff","foreground_luminance":0.01156,"background_luminance":1,"contrast_ratio":17.06,"aa_normal_text":true,"aa_large_text":true,"aaa_normal_text":true,"aaa_large_text":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/workdays-between":{"post":{"operationId":"workdaysBetween","summary":"Count working days between two dates in a country, skipping weekends and that country's public holidays (100+ countries)","description":"Count working days between two dates in a country, skipping weekends and that country's public holidays (100+ countries), and list the holidays skipped. Use it for delivery dates, SLAs and payroll.","tags":["Time"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","description":"First day, YYYY-MM-DD (counted)"},"end":{"type":"string","description":"Last day, YYYY-MM-DD (not counted)"},"country":{"type":"string","description":"2-letter country code, e.g. TR, US, DE"}},"required":["start","end","country"]},"example":{"start":"2026-10-26","end":"2026-11-02","country":"TR"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"business_days":{"type":"integer"},"weekend_days":{"type":"integer"},"holidays":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"local_name":{"type":"string"}}}}}},"example":{"country":"TR","start":"2026-10-26","end":"2026-11-02","business_days":4,"weekend_days":2,"holidays":[{"date":"2026-10-29","name":"Republic Day","local_name":"Cumhuriyet Bayramı"}]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/x402-requirements-decode":{"post":{"operationId":"x402RequirementsDecode","summary":"Decode an x402 PAYMENT-REQUIRED header (base64 JSON) into readable payment options: network name, token, human amount fo","description":"Decode an x402 PAYMENT-REQUIRED header (base64 JSON) into readable payment options: network name, token, human amount for USDC, recipient and timeout. Use it to explain or check a 402 challenge before paying.","tags":["Crypto"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"header":{"type":"string","description":"Value of the PAYMENT-REQUIRED response header (base64 JSON)"}},"required":["header"]},"example":{"header":"eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQYXltZW50IHJlcXVpcmVkIiwicmVzb3VyY2UiOnsidXJsIjoiaHR0cHM6Ly9mYXN0eDQwMi50b29scy9kbnM/bmFtZT1leGFtcGxlLmNvbSIsImRlc2NyaXB0aW9uIjoiRE5TIGxvb2t1cCAoQSwgQUFBQSwgTVgsIFRYVCwgTlMsIENOQU1FLCBTT0EsIENBQSwgU1JWLCBQVFIpIHZpYSBETlMtb3Zlci1IVFRQUyIsIm1pbWVUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInNlcnZpY2VOYW1lIjoiRmFzdFg0MDIiLCJ0YWdzIjpbIkRldiJdfSwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiZWlwMTU1Ojg0NTMiLCJhbW91bnQiOiIxMDAwIiwiYXNzZXQiOiIweDgzMzU4OWZDRDZlRGI2RTA4ZjRjN0MzMkQ0ZjcxYjU0YmRBMDI5MTMiLCJwYXlUbyI6IjB4RmU2QWU5ZWM5REUxMjgxN2YyMzk1OEYxMWI2Q0U2OTE5NGI2QmQ3RSIsIm1heFRpbWVvdXRTZWNvbmRzIjozMDAsImV4dHJhIjp7Im5hbWUiOiJVU0QgQ29pbiIsInZlcnNpb24iOiIyIn19XSwiZXh0ZW5zaW9ucyI6eyJiYXphYXIiOnsiaW5mbyI6eyJpbnB1dCI6eyJ0eXBlIjoiaHR0cCIsInF1ZXJ5UGFyYW1zIjp7Im5hbWUiOiJleGFtcGxlLmNvbSIsInR5cGUiOiJNWCJ9LCJtZXRob2QiOiJHRVQifSwib3V0cHV0Ijp7InR5cGUiOiJqc29uIiwiZXhhbXBsZSI6eyJuYW1lIjoiZXhhbXBsZS5jb20iLCJ0eXBlIjoiTVgiLCJzdGF0dXMiOiJOT0VSUk9SIiwiYW5zd2VycyI6W3sibmFtZSI6ImV4YW1wbGUuY29tIiwidHlwZSI6Ik1YIiwidHRsIjozNjAwLCJkYXRhIjoiMCAuIn1dfX19LCJzY2hlbWEiOnsiJHNjaGVtYSI6Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIiwidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsiaW5wdXQiOnsidHlwZSI6Im9iamVjdCIsInByb3BlcnRpZXMiOnsidHlwZSI6eyJ0eXBlIjoic3RyaW5nIiwiY29uc3QiOiJodHRwIn0sIm1ldGhvZCI6eyJ0eXBlIjoic3RyaW5nIiwiZW51bSI6WyJHRVQiXX0sInF1ZXJ5UGFyYW1zIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsidHlwZSI6InN0cmluZyIsImRlc2NyaXB0aW9uIjoiRG9tYWluIG9yIGhvc3QgbmFtZSJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmciLCJlbnVtIjpbIkEiLCJOUyIsIkNOQU1FIiwiU09BIiwiUFRSIiwiTVgiLCJUWFQiLCJBQUFBIiwiU1JWIiwiQ0FBIl0sImRlc2NyaXB0aW9uIjoiUmVjb3JkIHR5cGUsIGRlZmF1bHQgQSJ9fSwicmVxdWlyZWQiOlsibmFtZSJdfX0sInJlcXVpcmVkIjpbInR5cGUiLCJtZXRob2QiXSwiYWRkaXRpb25hbFByb3BlcnRpZXMiOmZhbHNlfSwib3V0cHV0Ijp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7InR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJleGFtcGxlIjp7InR5cGUiOiJvYmplY3QiLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwic3RhdHVzIjp7InR5cGUiOiJzdHJpbmcifSwiYW5zd2VycyI6eyJ0eXBlIjoiYXJyYXkiLCJpdGVtcyI6eyJ0eXBlIjoib2JqZWN0IiwicHJvcGVydGllcyI6eyJuYW1lIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInR0bCI6eyJ0eXBlIjoiaW50ZWdlciJ9LCJkYXRhIjp7InR5cGUiOiJzdHJpbmcifX19fX19fSwicmVxdWlyZWQiOlsidHlwZSJdfX0sInJlcXVpcmVkIjpbImlucHV0Il19fX19"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"x402_version":{"type":"integer"},"resource":{"type":"string"},"error":{"type":"string"},"options":{"type":"array","items":{"type":"object","properties":{"scheme":{"type":"string"},"network":{"type":"string"},"network_name":{"type":"string"},"asset":{"type":"string"},"is_usdc":{"type":"boolean"},"amount_atomic":{"type":"string"},"amount":{"type":"string"},"pay_to":{"type":"string"},"max_timeout_seconds":{"type":"integer"}}}}}},"example":{"x402_version":2,"resource":"https://fastx402.tools/dns?name=example.com","error":"Payment required","options":[{"scheme":"exact","network":"eip155:8453","network_name":"Base","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","is_usdc":true,"amount_atomic":"1000","amount":"0.001","pay_to":"0xFe6Ae9ec9DE12817f23958F11b6CE69194b6Bd7E","max_timeout_seconds":300}]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/xml-to-json":{"post":{"operationId":"xmlToJson","summary":"Parse XML (RSS and Atom feeds, sitemaps, SOAP and other API responses) into JSON, keeping attributes as @_name keys.","description":"Parse XML (RSS and Atom feeds, sitemaps, SOAP and other API responses) into JSON, keeping attributes as @_name keys. Use it to read XML an agent fetched.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"xml":{"type":"string","description":"XML text"}},"required":["xml"]},"example":{"xml":"<rss version=\"2.0\"><channel><title>FastX402</title><item><title>New tool</title><link>https://fastx402.tools/qr-code</link></item></channel></rss>"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"rss":{"type":"object","properties":{"channel":{"type":"object","properties":{"title":{"type":"string"},"item":{"type":"object","properties":{"title":{"type":"string"},"link":{"type":"string"}}}}},"@_version":{"type":"string"}}}}}}},"example":{"data":{"rss":{"channel":{"title":"FastX402","item":{"title":"New tool","link":"https://fastx402.tools/qr-code"}},"@_version":"2.0"}}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/yaml-to-json":{"post":{"operationId":"yamlToJson","summary":"Parse a YAML document (YAML 1.2: configs, Kubernetes manifests, front matter) into JSON.","description":"Parse a YAML document (YAML 1.2: configs, Kubernetes manifests, front matter) into JSON. Use it to read YAML files an agent fetched or a user pasted.","tags":["Data"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"yaml":{"type":"string","description":"YAML text"}},"required":["yaml"]},"example":{"yaml":"name: fastx402\ntools: [dns, qr-code]\nprice: 0.001\nlive: true\n"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"tools":{"type":"array","items":{"type":"string"}},"price":{"type":"number"},"live":{"type":"boolean"}}}}},"example":{"data":{"name":"fastx402","tools":["dns","qr-code"],"price":0.001,"live":true}}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/dns":{"post":{"operationId":"dns","summary":"DNS lookup (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV, PTR) via DNS-over-HTTPS","description":"DNS lookup (A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV, PTR) via DNS-over-HTTPS","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Domain or host name"},"type":{"type":"string","enum":["A","NS","CNAME","SOA","PTR","MX","TXT","AAAA","SRV","CAA"],"description":"Record type, default A"}},"required":["name"]},"example":{"name":"example.com","type":"MX"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"status":{"type":"string"},"answers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"ttl":{"type":"integer"},"data":{"type":"string"}}}}}},"example":{"name":"example.com","type":"MX","status":"NOERROR","answers":[{"name":"example.com","type":"MX","ttl":3600,"data":"0 ."}]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/domain":{"post":{"operationId":"domain","summary":"Domain availability and registration info (registrar, created, expires, status, nameservers) via RDAP","description":"Domain availability and registration info (registrar, created, expires, status, nameservers) via RDAP","tags":["Dev"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Registrable domain like example.com (unicode allowed)"}},"required":["domain"]},"example":{"domain":"example.com"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"registered":{"type":"boolean"},"registrar":{"type":"string"},"created":{"type":"string"},"expires":{"type":"string"},"status":{"type":"array","items":{"type":"string"}},"nameservers":{"type":"array","items":{"type":"string"}}}},"example":{"domain":"example.com","registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority","created":"1995-08-14T04:00:00Z","expires":"2026-08-13T04:00:00Z","status":["client delete prohibited"],"nameservers":["a.iana-servers.net","b.iana-servers.net"]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/extract":{"post":{"operationId":"extract","summary":"Fetch a web page and return its title, meta description and readable text (scripts, styles and markup removed)","description":"Fetch a web page and return its title, meta description and readable text (scripts, styles and markup removed)","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL"}},"required":["url"]},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"text":{"type":"string"},"truncated":{"type":"boolean"}}},"example":{"url":"https://example.com/","title":"Example Domain","description":"","text":"Example Domain\nThis domain is for use in documentation examples...","truncated":false}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/screenshot":{"post":{"operationId":"screenshot","summary":"Screenshot of a web page in a real Chromium browser, returned as base64 (PNG, or JPEG for the full page)","description":"Screenshot of a web page in a real Chromium browser, returned as base64 (PNG, or JPEG for the full page)","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of the page"},"width":{"type":"string","description":"Viewport width in pixels, 320-1920, default 1280"},"full_page":{"type":"string","enum":["true","false"],"description":"Capture the whole scrollable page, default false"}},"required":["url"]},"example":{"url":"https://example.com","width":"1280","full_page":"false"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"integer"},"full_page":{"type":"boolean"},"mime_type":{"type":"string"},"image_base64":{"type":"string"}}},"example":{"url":"https://example.com/","width":1280,"full_page":false,"mime_type":"image/png","image_base64":"iVBORw0KGgoAAAANSUhEUgAABQAAAAMgCAIAAAD..."}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/webpdf":{"post":{"operationId":"webpdf","summary":"Render a web page to a PDF in a real Chromium browser, returned as base64","description":"Render a web page to a PDF in a real Chromium browser, returned as base64","tags":["Web"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of the page"},"format":{"type":"string","enum":["A4","Letter"],"description":"Paper size, default A4"}},"required":["url"]},"example":{"url":"https://example.com","format":"A4"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"format":{"type":"string"},"mime_type":{"type":"string"},"pdf_base64":{"type":"string"}}},"example":{"url":"https://example.com/","format":"A4","mime_type":"application/pdf","pdf_base64":"JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9DcmVhdG9y..."}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/ocr":{"post":{"operationId":"ocr","summary":"Read the text in an image (OCR with Tesseract, English and Turkish); image up to 10 MB","description":"Read the text in an image (OCR with Tesseract, English and Turkish); image up to 10 MB","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a png, jpeg, webp, tiff, bmp or gif image"},"lang":{"type":"string","enum":["eng","tur","eng+tur"],"description":"Language of the text, default eng+tur"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/tesseract-ocr/test/main/testing/phototest.tif","lang":"eng+tur"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"lang":{"type":"string"},"text":{"type":"string"}}},"example":{"lang":"eng","text":"This is a lot of 12 point text to test the\nocr code and see if it works on all types\nof file format."}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/pdftext":{"post":{"operationId":"pdftext","summary":"Extract the text, page count, title and author of a PDF (up to 25 MB, first 200 pages)","description":"Extract the text, page count, title and author of a PDF (up to 25 MB, first 200 pages)","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a PDF"}},"required":["url"]},"example":{"url":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"pages":{"type":"integer"},"title":{"type":"null"},"author":{"type":"string"},"text":{"type":"string"},"truncated":{"type":"boolean"}}},"example":{"pages":1,"title":null,"author":"Evangelos Vlachogiannis","text":"Dummy PDF file","truncated":false}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/transcribe":{"post":{"operationId":"transcribe","summary":"Transcribe speech in an audio file to text with timestamps (Whisper, many languages); up to 5 minutes, 25 MB","description":"Transcribe speech in an audio file to text with timestamps (Whisper, many languages); up to 5 minutes, 25 MB","tags":["Text"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of an mp3, m4a, wav, ogg, webm or flac file"},"lang":{"type":"string","description":"auto (default) or a two-letter language code such as tr or en"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/ggml-org/whisper.cpp/master/samples/jfk.wav","lang":"auto"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"language":{"type":"string"},"duration_s":{"type":"integer"},"text":{"type":"string"},"segments":{"type":"array","items":{"type":"object","properties":{"start":{"type":"integer"},"end":{"type":"number"},"text":{"type":"string"}}}}}},"example":{"language":"en","duration_s":11,"text":"And so my fellow Americans ask not what your country can do for you, ask what you can do for your country.","segments":[{"start":0,"end":10.5,"text":"And so my fellow Americans ask not what your country can do for you, ask what you can do for your country."}]}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/image-convert":{"post":{"operationId":"imageConvert","summary":"Convert, resize and compress an image (png, jpeg, webp, avif) and strip all EXIF/GPS metadata; input up to 25 MB.","description":"Convert, resize and compress an image (png, jpeg, webp, avif) and strip all EXIF/GPS metadata; input up to 25 MB. Returns a download URL valid for 1 hour","tags":["Image"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a png, jpeg, webp, gif, tiff or avif image"},"format":{"type":"string","enum":["webp","png","jpeg","avif"],"description":"Output format, default webp"},"width":{"type":"string","description":"Target width in pixels, 1-4096 (optional)"},"height":{"type":"string","description":"Target height in pixels, 1-4096 (optional)"},"fit":{"type":"string","enum":["inside","cover","contain","fill"],"description":"How to fit width x height, default inside (keep aspect, never enlarge)"},"quality":{"type":"string","description":"1-100 for jpeg, webp and avif, default 80"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/danielgatis/rembg/main/examples/animal-1.jpg","format":"webp","width":"800"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"input_bytes":{"type":"integer"},"metadata_removed":{"type":"boolean"}}},"example":{"url":"https://workshop.tusk80.com/r/c4661ca4c5b587a6d198dcfb346c2fa2.webp","mime_type":"image/webp","bytes":57590,"expires_at":"2026-10-17T15:20:51.381Z","format":"webp","width":800,"height":534,"input_bytes":138435,"metadata_removed":true}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/remove-background":{"post":{"operationId":"removeBackground","summary":"Remove the background from a photo (rembg, u2net model) and return a transparent PNG or WebP; input up to 15 MB, output ","description":"Remove the background from a photo (rembg, u2net model) and return a transparent PNG or WebP; input up to 15 MB, output up to 2048 px. Returns a download URL valid for 1 hour","tags":["Image"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a png, jpeg, webp, gif, tiff or avif image"},"format":{"type":"string","enum":["png","webp"],"description":"Output format with transparency, default png"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/danielgatis/rembg/main/examples/animal-1.jpg","format":"png"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/c1f6f4941c2932a14936ce11c038f035.png","mime_type":"image/png","bytes":404929,"expires_at":"2026-10-17T15:15:59.451Z","format":"png","width":1000,"height":667}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/vectorize":{"post":{"operationId":"vectorize","summary":"Trace a raster image into an SVG vector: color (vtracer) or black-and-white (potrace); input up to 15 MB, traced at up t","description":"Trace a raster image into an SVG vector: color (vtracer) or black-and-white (potrace); input up to 15 MB, traced at up to 1024 px. Returns a download URL valid for 1 hour, plus the SVG markup inline when it is 100 KB or less (otherwise svg is null)","tags":["Image"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a png, jpeg, webp, gif, tiff or avif image (logos and icons trace best)"},"mode":{"type":"string","enum":["color","bw"],"description":"color (default) or bw for a black-and-white trace"},"threshold":{"type":"string","description":"bw only: 1-254, pixels darker than this become black, default 128"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/github/explore/main/topics/python/python.png","mode":"color"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"mode":{"type":"string"},"svg":{"type":"string"}}},"example":{"url":"https://workshop.tusk80.com/r/cc8e63d9a66c87500e7ae304fe68c8a2.svg","mime_type":"image/svg+xml","bytes":10085,"expires_at":"2026-10-17T15:20:51.441Z","mode":"color","svg":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"288\" height=\"288\">\n<path d=\"M0 0 C2.4 0.01 4.8 0 7.2 -0.01 ...\" fill=\"#3A73A4\" transform=\"translate(139,32)\"/>\n...</svg>"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/media-convert":{"post":{"operationId":"mediaConvert","summary":"Convert a video or audio file to another format: mp4/mov/mkv (H.264+AAC), webm (VP9+Opus) or mp3, m4a, wav, ogg, flac, o","description":"Convert a video or audio file to another format: mp4/mov/mkv (H.264+AAC), webm (VP9+Opus) or mp3, m4a, wav, ogg, flac, opus (audio only); optional start/end to cut; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Media"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"format":{"type":"string","enum":["mp4","mov","mkv","webm","mp3","m4a","wav","ogg","flac","opus"],"description":"Output format"},"start":{"type":"string","description":"Start time in seconds (12.5) or as 1:05, default 0"},"end":{"type":"string","description":"End time in seconds or as 1:05, default the end of the file"}},"required":["url","format"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","format":"webm"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"start":{"type":"integer"},"duration_s":{"type":"number"},"input_bytes":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/d47a52c0a40b76aa78ac39e1f99cce3d.webm","mime_type":"video/webm","bytes":5935046,"expires_at":"2026-10-17T15:20:47.225Z","format":"webm","start":0,"duration_s":60.1,"input_bytes":5510872}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/media-trim":{"post":{"operationId":"mediaTrim","summary":"Cut a clip out of a video or audio file between start and end (frame-accurate re-encode); output mp4 for video or mp3 fo","description":"Cut a clip out of a video or audio file between start and end (frame-accurate re-encode); output mp4 for video or mp3 for audio unless format is set; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Media"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"start":{"type":"string","description":"Start time in seconds (12.5) or as 1:05, default 0"},"end":{"type":"string","description":"End time in seconds or as 1:05, default the end of the file"},"format":{"type":"string","enum":["mp4","mov","mkv","webm","mp3","m4a","wav","ogg","flac","opus"],"description":"Output format, default mp4 for video and mp3 for audio"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","start":"5","end":"15"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"start":{"type":"integer"},"duration_s":{"type":"integer"},"input_bytes":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/1b4714c56e71cd586c493fc3e8f75f2a.mp4","mime_type":"video/mp4","bytes":932084,"expires_at":"2026-10-17T15:20:47.820Z","format":"mp4","start":5,"duration_s":10,"input_bytes":5510872}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/extract-audio":{"post":{"operationId":"extractAudio","summary":"Extract the audio track of a video as mp3, m4a, wav, ogg, flac or opus; optional start/end; input up to 50 MB, 2 minutes","description":"Extract the audio track of a video as mp3, m4a, wav, ogg, flac or opus; optional start/end; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Audio"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"format":{"type":"string","enum":["mp3","m4a","wav","ogg","flac","opus"],"description":"Audio format, default mp3"},"start":{"type":"string","description":"Start time in seconds (12.5) or as 1:05, default 0"},"end":{"type":"string","description":"End time in seconds or as 1:05, default the end of the file"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","format":"mp3"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"start":{"type":"integer"},"duration_s":{"type":"number"},"input_bytes":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/fa79f739bcc49a2596b55a619110ce75.mp3","mime_type":"audio/mpeg","bytes":816015,"expires_at":"2026-10-17T15:20:48.294Z","format":"mp3","start":0,"duration_s":60.1,"input_bytes":5510872}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/video-to-gif":{"post":{"operationId":"videoToGif","summary":"Turn a video clip (at most 30 seconds, set start/end) into an animated GIF with an optimized palette; input up to 50 MB,","description":"Turn a video clip (at most 30 seconds, set start/end) into an animated GIF with an optimized palette; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Media"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"start":{"type":"string","description":"Start time in seconds (12.5) or as 1:05, default 0"},"end":{"type":"string","description":"End time in seconds or as 1:05, default the end of the file"},"fps":{"type":"string","description":"Frames per second, 1-15, default 10"},"width":{"type":"string","description":"GIF width in pixels, 64-800, default 480"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","start":"0","end":"4","fps":"10","width":"320"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"start":{"type":"integer"},"duration_s":{"type":"integer"},"input_bytes":{"type":"integer"},"width":{"type":"integer"},"fps":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/760dda4ae428bab693bf9aecb06bec17.gif","mime_type":"image/gif","bytes":472134,"expires_at":"2026-10-17T15:20:48.688Z","format":"gif","start":0,"duration_s":4,"input_bytes":5510872,"width":320,"fps":10}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/video-thumbnail":{"post":{"operationId":"videoThumbnail","summary":"Grab one frame of a video at a timestamp as a jpg, png or webp image; input up to 50 MB, 2 minutes and 1080p.","description":"Grab one frame of a video at a timestamp as a jpg, png or webp image; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Media"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"at":{"type":"string","description":"Timestamp in seconds (12.5) or as 1:05, default 0"},"format":{"type":"string","enum":["jpg","png","webp"],"description":"Image format, default jpg"},"width":{"type":"string","description":"Image width in pixels, 16-1920, default the video width"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","at":"10","format":"jpg"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"at":{"type":"integer"},"width":{"type":"integer"},"height":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/aebef93068321f68e0b8ad478e5e6a54.jpg","mime_type":"image/jpeg","bytes":50780,"expires_at":"2026-10-17T15:20:48.881Z","format":"jpg","at":10,"width":640,"height":360}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/media-compress":{"post":{"operationId":"mediaCompress","summary":"Make a video or audio file smaller: video to H.264 mp4 (small 480p, balanced 720p, high 1080p), audio to mp3 (64/96/128 ","description":"Make a video or audio file smaller: video to H.264 mp4 (small 480p, balanced 720p, high 1080p), audio to mp3 (64/96/128 kbps); optional start/end; input up to 50 MB, 2 minutes and 1080p. Returns a download URL valid for 1 hour","tags":["Media"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL of a video or audio file (mp4, mov, mkv, webm, avi, mp3, m4a, wav, ogg, flac)"},"level":{"type":"string","enum":["small","balanced","high"],"description":"Size versus quality, default balanced"},"start":{"type":"string","description":"Start time in seconds (12.5) or as 1:05, default 0"},"end":{"type":"string","description":"End time in seconds or as 1:05, default the end of the file"}},"required":["url"]},"example":{"url":"https://raw.githubusercontent.com/mediaelement/mediaelement-files/master/big_buck_bunny.mp4","level":"balanced"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"format":{"type":"string"},"start":{"type":"integer"},"duration_s":{"type":"number"},"input_bytes":{"type":"integer"},"level":{"type":"string"}}},"example":{"url":"https://workshop.tusk80.com/r/f013c68c83c95106e5351394f07c3680.mp4","mime_type":"video/mp4","bytes":2675421,"expires_at":"2026-10-17T15:20:50.945Z","format":"mp4","start":0,"duration_s":60.1,"input_bytes":5510872,"level":"balanced"}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}},"/tts":{"post":{"operationId":"tts","summary":"Text to speech with Piper neural voices, English (en) or Turkish (tr); up to 3000 characters (use POST with a JSON body ","description":"Text to speech with Piper neural voices, English (en) or Turkish (tr); up to 3000 characters (use POST with a JSON body for long text). Returns a download URL for the mp3, wav or ogg file, valid for 1 hour","tags":["Audio"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"The text to read aloud, up to 3000 characters"},"voice":{"type":"string","enum":["en","tr"],"description":"en (US English, default) or tr (Turkish)"},"format":{"type":"string","enum":["mp3","wav","ogg"],"description":"Audio format, default mp3"},"speed":{"type":"string","description":"Speaking speed, 0.5-2, default 1"}},"required":["text"]},"example":{"text":"Hello! This is FastX402 text to speech.","voice":"en","format":"mp3"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"mime_type":{"type":"string"},"bytes":{"type":"integer"},"expires_at":{"type":"string"},"voice":{"type":"string"},"format":{"type":"string"},"duration_s":{"type":"number"},"characters":{"type":"integer"}}},"example":{"url":"https://workshop.tusk80.com/r/5b4c06e7c7ef22e53a47fb1a460bdfe6.mp3","mime_type":"audio/mpeg","bytes":29938,"expires_at":"2026-10-17T15:20:52.689Z","voice":"en_US-lessac-medium","format":"mp3","duration_s":3.5,"characters":39}}}},"400":{"description":"Invalid input (not charged)"},"402":{"description":"Payment Required"},"502":{"description":"A data source failed (not charged)"}}}}}}