API Documentation
Integrate Bitcheck into your workflow with our REST API. Copy-paste the examples below or explore the full OpenAPI reference on Swagger UI . To plug Bitcheck into tools like Telegram or Gmail, start with our Adapters guide.
1. Authentication
Generate an API key from the API Keys page. Include it on every request as a Bearer token:
Authorization: Bearer <your_api_key>The full secret is shown only once when you create the key. The keys list page displays a public prefix only. Store your secret securely.
curl -sS -D - "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/costs/" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION"2. Text Verification
/api/verifications/verify/text/Submit plain text for AI-generated content detection and factual verification. Send a JSON body with the text field.
Response (200)
{ detail, verification { id, modality, status, verdict, score, bits_charged, … }, cost_bits }curl -X POST "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/verify/text/" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION" \
-d '{
"text": "Breaking: sample claim to verify.",
"modality": "text"
}'3. Image Verification
/api/verifications/verify/image/Upload an image as multipart form data. The API accepts JPEG, PNG, and WebP formats. Include the file in the file field.
Response (200)
{ detail, verification { id, modality, status, verdict, score, predicted_label, result_summary, … }, cost_bits }curl -X POST "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/verify/image/" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION" \
-F 'file=@/path/to/image.jpg'4. Document Verification
/api/verifications/verify/document/Upload a PDF (or PNG/JPEG scan) as multipart form data. Cost is typically higher than image verification — see token costs. Max upload size is 20 MB.
Response (200)
{ detail, verification { id, modality, status, verdict, trust_score, bits_charged, result_summary, … } }curl -X POST "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/verify/document/" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION" \
-F 'file=@/path/to/document.pdf'5. List & Retrieve Verifications
/api/verifications/Returns all verifications for the authenticated user.
/api/verifications/<id>/Retrieve the full detail of a single verification by ID.
curl -sS "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION"curl -sS "https://bitscheck-849221325853.europe-west1.run.app/api/verifications/<id>/" \
-H "Authorization: Bearer YOUR_FULL_SECRET_FROM_KEY_CREATION"6. Token Costs
/api/verifications/costs/Public endpoint — no auth required. Returns the cost in bits for each supported modality.
7. Error Reference
Your wallet doesn't have enough bits for this verification. Top up your balance and retry. Response body includes required and available fields.
Missing or invalid API key, revoked credentials, or insufficient permissions for the requested resource.
Too many requests. Implement exponential backoff and check the Retry-After response header.
Always cross-check request and response schemas in Swagger when integrating — the backend may add fields before this page is updated. For Telegram, Gmail, and other integrations, see the Adapters guide.