Claim Standardization
Standardize claims from photos, documents, and metadata (includes optional anonymization step).
How it works: You send photos and/or documents (multipart) plus optional metadata and your X-API-Key; the pipeline runs selected steps (anonymize, OCR, damage, structure) and returns standardized output.
The Claim Standardization API is a pipeline endpoint that can run multiple steps on your claim inputs:
- Anonymize (optional): face + plate anonymization on photos
- OCR (optional): extract text from documents
- Damage (optional): detect damage on (anonymized) photos
- Structure (optional): return a structured standardized output
You control which steps run via the steps query parameter. To get a key, register and purchase at vehicore.pro/api-keys.
Standardize claim
POST /api/claim/standardize
Request
Headers
| Field | Type | Required | Description |
|---|---|---|---|
X-API-Key | string | Yes | Your API key. |
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
steps | string | No | Comma-separated steps. Example: anonymize,ocr,damage,structure. Default: all. |
Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
photos | file[] | No* | Vehicle photos (can include faces/plates). |
documents | file[] | No* | Claim documents (PDF/images). |
metadata | string | No | JSON string (e.g. {\"userLanguage\":\"en\"}) |
* Provide at least one of photos or documents.
Example request (full pipeline)
curl -X POST "https://api.vehicore.pro/api/claim/standardize?steps=anonymize,ocr,damage,structure" \
-H "X-API-Key: YOUR_API_KEY" \
-F "photos=@/path/to/photo-1.jpg" \
-F "photos=@/path/to/photo-2.jpg" \
-F "documents=@/path/to/document-1.pdf" \
-F "metadata={\"userLanguage\":\"en\"}"import fs from 'node:fs';
const formData = new FormData();
formData.append('photos', new Blob([fs.readFileSync('/path/to/photo-1.jpg')], { type: 'image/jpeg' }), 'photo-1.jpg');
formData.append('photos', new Blob([fs.readFileSync('/path/to/photo-2.jpg')], { type: 'image/jpeg' }), 'photo-2.jpg');
formData.append('documents', new Blob([fs.readFileSync('/path/to/document-1.pdf')], { type: 'application/pdf' }), 'document-1.pdf');
formData.append('metadata', JSON.stringify({ userLanguage: 'en' }));
const url = new URL('https://api.vehicore.pro/api/claim/standardize');
url.searchParams.set('steps', 'anonymize,ocr,damage,structure');
const response = await fetch(url, {
method: 'POST',
headers: { 'X-API-Key': process.env.VEHICORE_API_KEY },
body: formData,
});
const data = await response.json();import os
import json
import requests
url = "https://api.vehicore.pro/api/claim/standardize"
headers = {"X-API-Key": os.environ["VEHICORE_API_KEY"]}
params = {"steps": "anonymize,ocr,damage,structure"}
files = [
("photos", open("/path/to/photo-1.jpg", "rb")),
("photos", open("/path/to/photo-2.jpg", "rb")),
("documents", open("/path/to/document-1.pdf", "rb")),
]
data = {"metadata": json.dumps({"userLanguage": "en"})}
response = requests.post(url, headers=headers, params=params, files=files, data=data)
print(response.json())“Claim anonymization” (run only anonymize step)
If you only need anonymized photos (privacy pass), call the same endpoint with:
steps=anonymize
curl -X POST "https://api.vehicore.pro/api/claim/standardize?steps=anonymize" \
-H "X-API-Key: YOUR_API_KEY" \
-F "photos=@/path/to/photo-1.jpg" \
-F "photos=@/path/to/photo-2.jpg"This runs anonymization first and skips OCR/damage/structuring.
Process mixed files (auto-detect + pipeline)
If your integration uploads a mixed bag of files (photos, document images, PDFs) and you want VehiCore to decide what each file is, use:
POST /api/claim/process
VehiCore will:
- Categorize each file as
photoordocument - For photos: (planned) detect/extract personal info → anonymize → damage recognition
- For documents: OCR (image documents supported; PDF OCR may be added later)
- Return a per-file result array (so you can see what happened for each file)
Privacy / personal info
The pipeline is designed so personal info is extracted first, then images are anonymized before any downstream AI/LLM steps. Extracted personal info is returned in the response alongside other outputs.
Request
Headers
| Field | Type | Required | Description |
|---|---|---|---|
X-API-Key | string | Yes | Your API key. |
Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
files | file[] | Yes | Mixed list of files (photos/documents/PDFs). |
metadata | string | No | JSON string (e.g. {\"carSide\":\"passenger\",\"userLanguage\":\"en-US\"}) |
Example request
curl -X POST "https://api.vehicore.pro/api/claim/process" \
-H "X-API-Key: YOUR_API_KEY" \
-F "files=@/path/to/photo-1.jpg" \
-F "files=@/path/to/document-1.jpg" \
-F "files=@/path/to/document-2.pdf" \
-F "metadata={\"carSide\":\"passenger\",\"userLanguage\":\"en-US\"}"Response
The API returns:
receivedAtfiles[]: per-file results (detected kind, executed steps, extracted personal info, anonymization status, OCR/damage outputs, errors)
See Swagger for the full schema.
Response
The response is a structured JSON result containing standardized claim outputs produced by the chosen steps. See Swagger for the full schema.
Possible errors
All error responses use the shape { "message": "Human-readable text", "code": "OPTIONAL_CODE" }. See Error responses for details.
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Bad Request — missing inputs, invalid metadata JSON, invalid step name. |
| 401 | UNAUTHORIZED | Unauthorized — missing or invalid X-API-Key. |
| 402 | INSUFFICIENT_CREDITS | Payment Required — insufficient credits. Purchase more from Billing. |
| 500 | — | Internal Server Error — unexpected server error; retry later. |