{"openapi":"3.1.0","info":{"title":"Source Claim Verification API","version":"1.0.0","description":"Checks whether one specific source supports one specific claim and returns a verdict with verbatim evidence. It does not decide whether a claim is true in the world. Operated by Active Life Hub LLC."},"servers":[{"url":"https://sourceclaimverification.online"}],"paths":{"/api/v1/verify":{"post":{"operationId":"verifyClaim","summary":"Verify a claim against a source (x402 paid)","description":"One price per verification, quoted before any work and bound into the x402 payment requirement. You are charged only when the source was retrieved and a verdict was produced: SOURCE_UNAVAILABLE and model/provider failures are not charged (the payment authorization is not settled). Requests rejected by validation are never charged. Retrying with the same Idempotency-Key never charges twice. Price: 0.048 USDC.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,128}$"}},{"name":"PAYMENT-SIGNATURE","in":"header","required":false,"schema":{"type":"string"},"description":"x402 v2 payment payload (base64 JSON)"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Verdict (charged unless SOURCE_UNAVAILABLE)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Verification"}}}},"202":{"description":"In progress; retry with the same Idempotency-Key"},"400":{"description":"Validation error or unsafe URL (not charged)"},"402":{"description":"Payment required (x402 challenge) or payment rejected (not charged)"},"409":{"description":"Idempotency-Key or payment reused for a different request"},"413":{"description":"Request too large"},"429":{"description":"Rate limited"},"503":{"description":"Not configured, provider failure (not charged), or settlement needs reconciliation"}}}},"/api/v1/quote":{"post":{"operationId":"quote","summary":"Free validation and price quote (no payment, no retrieval)","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Valid; price and payment requirement"},"400":{"description":"Invalid"}}}},"/api/v1/verifications/{id}":{"get":{"operationId":"getVerification","summary":"Retrieve a stored verification","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string"},"description":"Bearer <original Idempotency-Key>"}],"responses":{"200":{"description":"Verification"},"401":{"description":"Missing token"},"404":{"description":"Not found"}}}},"/api/v1/pricing":{"get":{"operationId":"pricing","summary":"Current price and charging policy","responses":{"200":{"description":"Pricing"}}}},"/api/v1/health":{"get":{"operationId":"health","summary":"Liveness and configuration (no database)","responses":{"200":{"description":"OK"},"503":{"description":"Not configured"}}}}},"components":{"schemas":{"VerifyRequest":{"type":"object","additionalProperties":false,"required":["claim"],"properties":{"claim":{"type":"string","minLength":3,"maxLength":1000},"source_url":{"type":"string","format":"uri","maxLength":2048,"description":"Public http(s) URL. Exactly one of source_url or source_text."},"source_text":{"type":"string","maxLength":100000,"description":"Source text supplied by you; reported as provided_by_requester."},"source_label":{"type":"string","maxLength":200},"source_language":{"type":"string","description":"BCP-47 language tag, e.g. en, ja, pt-BR"},"output_language":{"type":"string","description":"Language for explanations, notes and evidence translations. Default: the claim's language, else en."},"strictness":{"type":"string","enum":["standard","strict"],"default":"standard"},"max_source_age_seconds":{"type":"integer","minimum":0,"maximum":86400,"default":600}}},"Verification":{"type":"object","properties":{"object":{"const":"claim_verification"},"verification_id":{"type":"string","format":"uuid"},"verdict":{"type":"string","enum":["SUPPORTED","CONTRADICTED","PARTIALLY_SUPPORTED","AMBIGUOUS","NOT_FOUND_IN_SOURCE","SOURCE_UNAVAILABLE","UNABLE_TO_VERIFY"],"description":"- SUPPORTED: The source provides sufficient evidence for the material meaning of the claim.\n- CONTRADICTED: The source materially conflicts with the claim.\n- PARTIALLY_SUPPORTED: The source supports only part of the claim, or supports it only with material limitations (missing qualifier, attribution, narrower scope).\n- AMBIGUOUS: The source contains potentially relevant material, but the relationship to the claim is not sufficiently clear.\n- NOT_FOUND_IN_SOURCE: The source was retrieved and examined, but material supporting or contradicting the claim was not found. This is NOT evidence that the claim is false.\n- SOURCE_UNAVAILABLE: The source could not be retrieved or reliably parsed. No charge is made for this outcome.\n- UNABLE_TO_VERIFY: Evidence was examined but no defensible determination could be made."},"verdict_label":{"type":"string"},"verdict_meaning":{"type":"string"},"confidence":{"type":"string","enum":["HIGH","MEDIUM","LOW"]},"scope":{"const":"claim_to_source_relationship"},"claim":{"type":"object","properties":{"text":{"type":"string"},"language":{"type":"string"}}},"source":{"type":"object","properties":{"mode":{"type":"string","enum":["url","provided_text"]},"provided_by_requester":{"type":"boolean"},"url":{"type":["string","null"]},"final_url":{"type":["string","null"]},"label":{"type":["string","null"]},"title":{"type":["string","null"]},"published_at":{"type":["string","null"]},"modified_at":{"type":["string","null"]},"retrieved_at":{"type":["string","null"]},"language":{"type":"string"},"language_basis":{"type":"string","enum":["detected","declared","requester","none"]},"content_type":{"type":["string","null"]},"content_sha256":{"type":["string","null"],"description":"SHA-256 of the normalized extracted text that was examined"},"content_chars":{"type":"integer"},"cache":{"type":"object","properties":{"used":{"type":"boolean"},"original_retrieved_at":{"type":["string","null"]}}},"examination":{"type":"object","properties":{"blocks_total":{"type":"integer"},"passages_total":{"type":"integer"},"passages_examined":{"type":"integer"},"chars_examined":{"type":"integer"},"complete":{"type":"boolean"},"method":{"type":"string","enum":["full_text","lexical_selection","cross_language_selection"]}}},"unavailable_reason":{"type":["string","null"]}}},"evidence":{"type":"array","items":{"type":"object","properties":{"passage":{"type":"string","description":"Verbatim excerpt of the source in its original language"},"language":{"type":"string"},"location":{"type":"object","properties":{"passage_id":{"type":"string"},"block_index":{"type":"integer"},"heading":{"type":["string","null"]},"char_start":{"type":"integer"}}},"relation":{"type":"string","enum":["SUPPORTS","CONTRADICTS","PARTIALLY_SUPPORTS","CONTEXT"]},"assertion_type":{"type":"string","enum":["DIRECT_SOURCE_STATEMENT","ATTRIBUTED_STATEMENT","SECONDARY_REPORTING","INFERENCE"]},"attributed_to":{"type":["string","null"]},"translation":{"type":["object","null"],"properties":{"language":{"type":"string"},"text":{"type":"string"},"derived":{"const":true},"note":{"type":"string"}}}}}},"analysis":{"type":["object","null"],"properties":{"subject_match":{"type":["boolean","null"]},"action_or_fact_match":{"type":["boolean","null"]},"quantity_match":{"type":["boolean","null"]},"time_match":{"type":["boolean","null"]},"location_match":{"type":["boolean","null"]},"polarity_match":{"type":["boolean","null"]},"qualifiers_preserved":{"type":["boolean","null"]},"attribution_preserved":{"type":["boolean","null"]},"missing_qualifiers":{"type":"array","items":{"type":"string"}},"mismatches":{"type":"array","items":{"type":"object"}},"components":{"type":"array","items":{"type":"object"}}}},"explanation":{"type":["string","null"]},"output_language":{"type":"string"},"guards":{"type":"array","items":{"type":"string"},"description":"Deterministic checks that changed or qualified the verdict"},"limitations":{"type":"array","items":{"type":"string"}},"payment":{"type":"object","properties":{"amount":{"type":"string"},"currency":{"const":"USDC"},"network":{"type":"string"},"charged":{"type":"boolean"},"transaction":{"type":["string","null"]}}}}}}}}