{"openapi":"3.1.0","info":{"title":"402check","version":"1.0.0","description":"Verification & dossier tools for AI agents. Pay per call, no account. Free tier: 10 calls per day per IP address, no key, on every tool except proof_create (always paid). proof_get is always free and does not count. All free calls together are capped at 5,000 per UTC day; past that, keyless calls get 402 with reason \"free_tier_exhausted_today\". x402: coming soon; free tier available. Credits: coming soon; free tier available."},"servers":[{"url":"https://402check.com"}],"paths":{"/v1/ro/company/{cui}":{"get":{"operationId":"ro_company","summary":"Romanian company file by CUI: registry, VAT, address, financials.","description":"Look up a Romanian company by fiscal code (CUI) to verify a counterparty: legal name, registry status, VAT registration, address, CAEN code and yearly financials. A `null` value means \"not checked\", never \"none\"; the `coverage` field says which sources were actually fetched.","x-price-usd":0.01,"security":[{},{"bearerAuth":[]}],"parameters":[{"name":"cui","in":"path","required":true,"description":"Romanian fiscal code (CUI/CIF): 2–10 digits, optional RO prefix, e.g. RO14399840","schema":{"type":"string","maxLength":32}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_cui","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"upstream_error: the data source failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/ro/tenders":{"get":{"operationId":"ro_tenders","summary":"Search Romanian public tenders (SEAP/SICAP) by keyword or CPV code.","description":"Search Romanian public procurement notices (SEAP/SICAP) by keyword or CPV code, optionally by county and publication date, to find public tenders a business can bid on; q or cpv is required. Each result carries the procedure state (open, awarded, cancelled); award notices, winners and contract values are not returned.","x-price-usd":0.02,"security":[{},{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":false,"description":"Keyword in the contract title. q or cpv is required.","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"cpv","in":"query","required":false,"description":"8-digit CPV code. q or cpv is required.","schema":{"type":"string","pattern":"^\\d{8}$"}},{"name":"county","in":"query","required":false,"description":"Romanian county (place of performance), e.g. Cluj","schema":{"type":"string","maxLength":40}},{"name":"from","in":"query","required":false,"description":"Earliest publication date, inclusive","schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","format":"date"}},{"name":"to","in":"query","required":false,"description":"Latest publication date, inclusive; not before from","schema":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","format":"date"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of notices","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_query, with details per field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"upstream_error: the data source failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/us/court":{"get":{"operationId":"us_court","summary":"Search US court dockets and opinions on CourtListener by party.","description":"Search US court dockets (RECAP) or opinions on CourtListener by party or case name, to check the litigation history of a company or person.","x-price-usd":0.02,"security":[{},{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"description":"Party or case name","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"type","in":"query","required":false,"description":"RECAP dockets or court opinions","schema":{"type":"string","enum":["dockets","opinions"],"default":"dockets"}},{"name":"court","in":"query","required":false,"description":"CourtListener court id, e.g. nysd","schema":{"type":"string","maxLength":20}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results","schema":{"type":"integer","default":10,"minimum":1,"maximum":20}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_query, with details per field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"upstream_error: the data source failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/us/sanctions":{"get":{"operationId":"us_sanctions","summary":"(coming soon — returns 503) Screen a person or entity against OFAC sanctions lists, fuzzy matched.","description":"(coming soon — returns 503) Screen a person or entity name against the US OFAC SDN and Consolidated (non-SDN) sanctions lists with fuzzy matching, to check whether a counterparty is sanctioned. Scores compare whole names, so a surname alone is unreliable: it can fall far below the default threshold or still pass. Pass the full name, or lower minScore (e.g. 0.6) and review the candidates.","x-coming-soon":true,"x-price-usd":0.01,"security":[{},{"bearerAuth":[]}],"parameters":[{"name":"name","in":"query","required":true,"description":"Person or entity name; must contain letters or digits","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"type","in":"query","required":false,"description":"Restrict to individuals or entities","schema":{"type":"string","enum":["individual","entity","any"],"default":"any"}},{"name":"minScore","in":"query","required":false,"description":"Minimum match score; lower it for surname-only names","schema":{"type":"number","default":0.8,"minimum":0,"maximum":1}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_query, with details per field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"coming_soon: this tool is not available yet (not charged)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/us/trademark":{"get":{"operationId":"us_trademark","summary":"Search US trademark applications and registrations (USPTO) by wordmark.","description":"Search US trademark applications and registrations (USPTO) by wordmark, to check whether a brand name is already taken before using or filing it.","x-price-usd":0.02,"security":[{},{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"description":"Wordmark","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"status","in":"query","required":false,"description":"Live, dead or all marks","schema":{"type":"string","enum":["live","dead","all"],"default":"live"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of marks","schema":{"type":"integer","default":10,"minimum":1,"maximum":25}},{"name":"match","in":"query","required":false,"description":"Require all words or any word","schema":{"type":"string","enum":["all","any"],"default":"all"}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_query, with details per field","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"upstream_error: the data source failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/proof":{"post":{"operationId":"proof_create","summary":"Paid only: capture a web page as hashed, timestamped HTML and screenshot.","description":"Capture a public web page as tamper-evident proof (archived HTML and screenshot, SHA-256 hashes and an OpenTimestamps anchor), to keep verifiable evidence of what the page showed at a given time. Not part of the free tier: needs a credits key (or x402 on the HTTP API).","x-price-usd":0.25,"security":[{},{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"Public http(s) URL to capture"}},"required":["url"]}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_url: malformed, not http(s) or not public","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"invalid_key: unknown rk_ key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. Without a key, after the free tier: x402 payment requirements in the PAYMENT-REQUIRED header (exact scheme, USDC on Base, eip155:8453). With an rk_ key whose balance is too low: { error: \"insufficient_credits\", balanceUsd, priceUsd }.","content":{"application/json":{"schema":{"type":"object"}}}},"502":{"description":"upstream_error: the data source failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/proof/{id}":{"get":{"operationId":"proof_get","summary":"Fetch an earlier proof: hashes, artifact links, anchor status.","description":"Fetch a proof created earlier with proof_create by its id, to re-check its hashes, artifact links and timestamp anchor status.","x-price-usd":0,"security":[],"parameters":[{"name":"id","in":"path","required":true,"description":"Proof id (ULID) returned by proof_create","schema":{"type":"string","pattern":"^[0-9A-HJKMNP-TV-Z]{26}$"}}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"invalid_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/balance":{"get":{"operationId":"balance","summary":"Remaining credit of an rk_ credits key. Free.","description":"Return the remaining prepaid credit, in USD, of the rk_ key sent as Authorization: Bearer. Free and not counted against the free tier; without a valid key it returns invalid_key.","x-price-usd":0,"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"invalid_key: no rk_ key, or an unknown one","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/proof/{id}/html":{"get":{"operationId":"proof_html","summary":"Download the archived HTML (served sandboxed) of a proof","x-price-usd":0,"security":[],"parameters":[{"name":"id","in":"path","required":true,"description":"Proof id (ULID) returned by proof_create","schema":{"type":"string","pattern":"^[0-9A-HJKMNP-TV-Z]{26}$"}}],"responses":{"200":{"description":"The archived HTML (served sandboxed)","content":{"text/html":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"invalid_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/proof/{id}/png":{"get":{"operationId":"proof_png","summary":"Download the full-page PNG screenshot of a proof","x-price-usd":0,"security":[],"parameters":[{"name":"id","in":"path","required":true,"description":"Proof id (ULID) returned by proof_create","schema":{"type":"string","pattern":"^[0-9A-HJKMNP-TV-Z]{26}$"}}],"responses":{"200":{"description":"The full-page PNG screenshot","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"invalid_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/buy":{"get":{"operationId":"buy","summary":"Buy prepaid credits ($5 or $20) by card; the result page shows an rk_ API key once","security":[],"responses":{"200":{"description":"HTML page with checkout links","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Prepaid credits key (rk_…) from /buy"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{}}}}}}