curl --request GET \
--url https://api.trysnapit.com/api/v1/invoices/{id} \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.trysnapit.com/api/v1/invoices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.trysnapit.com/api/v1/invoices/{id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"processingStatus": "completed",
"status": "extracted",
"direction": "payable",
"ready": true,
"validationErrors": [],
"isDuplicate": false,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"data": {
"invoice_number": "INV-1042",
"invoice_date": "2026-09-01",
"due_date": "2026-09-30",
"vendor_name": "Acme Supplies",
"vendor_address": "<string>",
"vendor_tax_id": "<string>",
"vendor_email": "<string>",
"customer_name": "<string>",
"currency": "MYR",
"payment_terms": "<string>",
"subtotal": 100,
"discount": 0,
"tax_amount": 6,
"service_charge": 0,
"shipping_cost": 0,
"total_amount": 106,
"paid_amount": 0,
"balance_amount": 106,
"line_items": [
{
"description": "Coca Cola 330ml x24",
"line_no": 1,
"sku": "CC-330-24",
"quantity": 2,
"unit": "ctn",
"unit_price": 50,
"discount": 0,
"tax": 6,
"line_total": 100
}
],
"raw_text": "<string>"
},
"ocrConfidence": 92.5,
"extractionTier": 2,
"extractionProvider": "mistral",
"routingReason": "<string>",
"processingError": "<string>",
"vendor": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendorName": "Acme Supplies"
}
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized"
}Get extracted invoice JSON (API key)
Poll after upload. While ready is false, extraction is still running and data is null. When ready is true, data is the structured invoice JSON (human corrections included).
curl --request GET \
--url https://api.trysnapit.com/api/v1/invoices/{id} \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.trysnapit.com/api/v1/invoices/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.trysnapit.com/api/v1/invoices/{id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"processingStatus": "completed",
"status": "extracted",
"direction": "payable",
"ready": true,
"validationErrors": [],
"isDuplicate": false,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"data": {
"invoice_number": "INV-1042",
"invoice_date": "2026-09-01",
"due_date": "2026-09-30",
"vendor_name": "Acme Supplies",
"vendor_address": "<string>",
"vendor_tax_id": "<string>",
"vendor_email": "<string>",
"customer_name": "<string>",
"currency": "MYR",
"payment_terms": "<string>",
"subtotal": 100,
"discount": 0,
"tax_amount": 6,
"service_charge": 0,
"shipping_cost": 0,
"total_amount": 106,
"paid_amount": 0,
"balance_amount": 106,
"line_items": [
{
"description": "Coca Cola 330ml x24",
"line_no": 1,
"sku": "CC-330-24",
"quantity": 2,
"unit": "ctn",
"unit_price": 50,
"discount": 0,
"tax": 6,
"line_total": 100
}
],
"raw_text": "<string>"
},
"ocrConfidence": 92.5,
"extractionTier": 2,
"extractionProvider": "mistral",
"routingReason": "<string>",
"processingError": "<string>",
"vendor": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendorName": "Acme Supplies"
}
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized"
}Authorizations
Bearer sk_live_… (include the Bearer prefix)
Path Parameters
Invoice id returned from upload
Response
Processing status and extracted invoice JSON
queued, processing, completed, failed, needs_review "completed"
pending, processing, extracted, reviewed, approved, rejected, duplicate "extracted"
Payable (vendor bill) or receivable (customer invoice).
payable, receivable "payable"
True when extraction has finished (completed, needs_review, or failed). Keep polling while false.
true
[]
false
Extracted invoice fields. Null while queued/processing with no result yet.
Show child attributes
Show child attributes
92.5
Platform admin only. Omitted from tenant responses.
2
Platform admin only. Omitted from tenant responses.
"mistral"
Platform admin only. Omitted from tenant responses.
Show child attributes
Show child attributes

