Quickstart
From API key to evaluation result in six calls — pick a template, create a submission, upload a file, register a webhook, and start the evaluation.
This walks the full happy path: authenticate, pick a template, create a submission, upload a document, register a webhook, and start the evaluation that pushes the result back to you. Every step shows curl and the three SDKs — pick your language with the tabs.
Note
The base URL https://api.aircredit.de/partner is the real one, but it is not publicly reachable
yet. Requests in this guide will not reach a live server; they exist to show the shape of each
call.
0. Get an API key
Your API key is issued per API client from the AirCredit console. Treat it like a password: it grants full access to your client's submissions. Keep it server-side and pass it as a bearer token on every request. See Authentication for handling and rotation.
Set it once in your environment:
export AIRCREDIT_API_KEY="sk_live_your_key_here"
1. Pick a template
A template defines what a submission collects and verifies: its document slots, checks, and
data fields. list_templates returns the builtin templates (stable string keys) and any custom
templates you have authored — the default builtin is a fine starting point. See
Templates & customization for authoring your own.
curl https://api.aircredit.de/partner/v1/templates \
-H "Authorization: Bearer $AIRCREDIT_API_KEY"2. Create a submission
A submission is created from the template and keyed by your own external_submission_id. That
external id is the idempotency key — reuse it and you get the same submission back instead of a
duplicate.
curl -X POST https://api.aircredit.de/partner/v1/submissions \
-H "Authorization: Bearer $AIRCREDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template_id": "6f5f0f0a-1a11-4a7e-9c9e-9a1b0c3d2e4f",
"external_submission_id": "loan-2026-000451",
"metadata": { "branch": "muc-01" },
"language": "de"
}'A 201 Created means authorization has fully propagated and the submission is immediately usable.
If propagation is still catching up you may get 503 authz_not_applied_yet — just retry with the
same external_submission_id. Keep the returned id; you need it for everything below.
3. Upload a document
Send the file as multipart/form-data with an external_file_id text part and a file part. The
external_file_id is this upload's idempotency key. Accepted types are PDF, JPEG, PNG, and Word;
the default size limit is 100 MiB. See Uploads for the full rules.
curl -X POST \
https://api.aircredit.de/partner/v1/submissions/$SUBMISSION_ID/files \
-H "Authorization: Bearer $AIRCREDIT_API_KEY" \
-F "external_file_id=payslip-jan" \
-F "file=@./payslip-january.pdf;type=application/pdf"You get 202 Accepted with the upload in status processing. Processing is asynchronous — don't
block on the response. Until webhooks are wired up (next step), you can poll the submission and
watch each upload's upload_status move to ready:
curl https://api.aircredit.de/partner/v1/submissions/$SUBMISSION_ID \
-H "Authorization: Bearer $AIRCREDIT_API_KEY"Tip
Polling is fine to get started, but webhooks are the intended path for production. Poll no more than a few times per minute and always prefer the webhook signal.
4. Register a webhook endpoint
Register an HTTPS endpoint once and AirCredit pushes every event to it — starting with the
file.ready for the upload above. The response is the only time the endpoint's signing_secret
is ever returned — store it immediately; you need it to verify deliveries.
curl -X POST https://api.aircredit.de/partner/v1/webhook_endpoints \
-H "Authorization: Bearer $AIRCREDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example-partner.com/aircredit/webhooks",
"description": "prod receiver"
}'5. Start the evaluation
Once the documents you care about are ready, start the evaluation. It runs asynchronously —
agentically working through the template's checks and data fields to a summary verdict — see
Evaluations for the full lifecycle.
curl -X POST https://api.aircredit.de/partner/v1/submissions/$SUBMISSION_ID/evaluations \
-H "Authorization: Bearer $AIRCREDIT_API_KEY"6. Receive the result
Your endpoint now receives the story as it happens: file.ready when an upload finishes,
evaluation.started, possibly a few evaluation.progress, and finally evaluation.completed
carrying the outcome, recommendation, and risk band. Each delivery is the canonical event envelope;
the X-Airtype-Signature header lets you verify it came from AirCredit. Respond with any 2xx
within 30 seconds to acknowledge.
{
"id": "evt_2f0d9c62-6f6e-4a7e-8f8e-2d5c7a1b0c3d",
"type": "file.ready",
"created_at": "2026-02-01T10:32:04Z",
"api_client_id": "…",
"data": {
"upload": {
"id": "…",
"external_file_id": "payslip-jan",
"external_submission_id": "loan-2026-000451",
"upload_status": "ready",
"file_id": "…"
}
}
}
Verifying the signature is a few lines in every language — see the Webhooks guide for the full verification snippet per SDK. For the full typed result — per-check verdicts, extracted fields, confidence, citations — fetch the evaluation itself: Reading the result.
Where to go next
- Templates & customization — author templates, checks, and data fields.
- Uploads — content types, idempotency, slot assignment, and re-uploads.
- Evaluations — lifecycle, the typed result, confidence and citations.
- Webhooks — the signature scheme, retries, rotation, and deduplication.
- Errors — the error envelope and every code you might see.
- API reference — try each call live against the console.