CT ClaimTrace by AXIONYX.io Get a key

ClaimTrace API reference (v1)

Base URL: https://claimtrace.dev. Authentication: header X-API-Key: afk_…. The v1 transport contract is stable: no field is removed or changes meaning without a major version.

Endpoints

MethodPathPurpose
POST/v1/signupSelf-serve key (email → afk_… key, shown once, 50 trial credits)
POST/v1/fetchBlocking call — full FetchResultV1 JSON
GET/v1/fetch/streamSSE stream — metaentity… → done
GET/v1/requests/{request_id}Re-read a result (24 h TTL, isolated per key)
GET/v1/usageYour tier, remaining credits, requests today
GET/v1/statsPublic service counters of the day (no key required)
GET/v1/healthService status + schema version

Request — POST /v1/fetch

{
  "thematique": "restaurants menus du jour",
  "lieu": "Neuchâtel",
  "prompt": "the actual daily menu, with prices if published",
  "depth": "standard",
  "max_entities": 8,
  "day": "2026-08-08"
}
FieldTypeConstraints
thematiquestringrequired, 2–200 chars — what kind of entities
promptstringrequired, 2–4000 chars — the fact you want established
lieustringoptional, ≤ 200 chars — geographic scope
depthstringfast · standard (default) · deep (Pack M+)
max_entitiesint1–30, default 8
daystringoptional, YYYY-MM-DD — for dated data (e.g. daily menus)

Response — FetchResultV1

FieldTypeMeaning
schema_version"1"Contract version
request_idstringRe-read handle for /v1/requests/{id} (24 h)
queryQueryEchoV1Echo: thematique, lieu, day, depth, vertical
entitiesEntityV1[]The resolved entities
verificationVerificationV1truth_rules_version, verified_live, checked_at, notes
usageUsageV1credits_charged, cache_hits, cost_class
warningsstring[]Degradations, stated instead of hidden
attributionstring[]e.g. © OpenStreetMap contributors (ODbL)

EntityV1

FieldTypeMeaning
idstringStable entity id within the response
titlestringEntity name
summarystring \nullShort description when available
locationGeoV1 \nulladdress, city, country, lat, lng
contactContactV1 \nullphone, email, website
attributesobjectVertical-specific attributes
claimsClaimV1[]The verified facts — see below
imagesImageV1[]url, role, caption
confidencefloat \nullEntity-level confidence, 0–1
not_foundNotFoundV1 \nullPresent when the requested data is not published

ClaimV1 — the heart of the product

FieldTypeMeaning
fieldstringWhich fact, e.g. menu_du_jour
valueanyThe fact itself — null is allowed and assumed
provenance.source_urlstring \nullThe page or document the fact was read from
provenance.fetched_atstring \nullWhen it was read (ISO 8601 UTC)
provenance.verbatimstring \nullShort proof excerpt, literally from the source
provenance.page_kindstring \nulle.g. menu_du_jour, carte
provenance.domain_owned_by_entitybool \nullWhether the source belongs to the entity
confidencefloat \null0–1
verified_livebool \nullTri-state: live-confirmed / contradicted / not checked

NotFoundV1 — absence is an answer

FieldTypeMeaning
reasonstringe.g. not_published, source_unreachable
detailstring \nullHuman-readable explanation
source_checkedstring \nullThe source that was actually read

What v1 never returns

Fields whose only source is Google Places — ratings, review counts, price levels, Google-hosted images — are excluded from the payload for legal reasons (Google Maps Platform terms of service prohibit exporting or re-sharing Places content). Claims come exclusively from sources owned by the entity, enforced by a domain-ownership whitelist.

Errors

CodeMeaning
401Missing or invalid API key
402Credits exhausted — top up or wait for the monthly refill
404On /v1/requests/{id}: unknown or expired result for this key
409On /v1/signup: an active key already exists for this email
422Validation error — a field violates the constraints above
429Rate limit — response carries Retry-After

Refusals are never charged.