Skip to content
AttestLayerAttestLayer

API Quickstart

Two ways to get started: Browser-first (no code) or API-first (curl).

Flow A — Browser-First (No Code)

  1. Go to the Pilot page and start a 48h pilot preview.
  2. Preview access is instant.
  3. To run live submissions, unlock submit access with email verification and a refundable $1 card hold or manual approval.
  4. Once submit access is unlocked, open the Pilot Console.
  5. Drag & drop your ZIP, click Submit, and watch the status poll live.
  6. On PASS: download buttons appear for kit.zip, manifest, receipt, and offline verifier.
  7. On FAIL: download fail_report.json with a machine-readable resubmit checklist.

Start 48h Pilot Preview →

Flow B — API-First (curl)

Every command below is copy-pastable. Pipe responses through jq to capture IDs automatically.

Step 1 — Get a Submit Token

Start at the Pilot page. Preview access is instant. To run live API submissions, first unlock submit access with email verification and a refundable $1 card hold or manual approval.

Once submit access is approved, use your 48-hour submit token in the API calls below.

# Use your approved 48-hour submit token
PILOT_TOKEN=$(curl -s -X POST https://api.attestlayer.com/v1/pilot/tokens \
  -H "Content-Type: application/json" \
  -d '{"email":"pilot@demo.attestlayer.com","company":"Demo Corp"}' \
  | jq -r '.pilot_token')

echo "Token: $PILOT_TOKEN"

If you have an MMC subscription, use your X-API-Key header instead.

Step 2 — Create a Job

JOB_ID=$(curl -s -X POST https://api.attestlayer.com/v1/intake/jobs \
  -H "X-Pilot-Token: $PILOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"lane": "KIT-ZIP"}' \
  | jq -r '.job_id')

echo "Job: $JOB_ID"

Step 3 — Upload ZIP

curl -X POST https://api.attestlayer.com/v1/intake/jobs/$JOB_ID/upload \
  -H "X-Pilot-Token: $PILOT_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @evidence.zip

Accepted formats inside ZIP: PDF, DOCX, XLSX, PNG, JPG, CSV, JSON. Max upload: 500 MB (pilot), plan-dependent for MMC.

Step 4 — Poll Status

curl -s https://api.attestlayer.com/v1/intake/jobs/$JOB_ID \
  -H "X-Pilot-Token: $PILOT_TOKEN" | jq .

Status values: PENDINGUPLOADINGRUNNINGPASS | FAIL

Also returns: verify_status, sla_deadline_at (on PASS), delivered_at, diff_status.

Step 5 — Download Deliverables

curl -s https://api.attestlayer.com/v1/intake/jobs/$JOB_ID/artifacts \
  -H "X-Pilot-Token: $PILOT_TOKEN" | jq .

On PASS:

  • kit.zip (client-forwardable evidence kit)
  • normalized_tree.zip, mapping.json, classification_report.json
  • diff.json (if diff enabled)

On FAIL:

  • fail_report.json (reason codes + resubmit checklist)
  • normalized_tree.zip, mapping.json, classification_report.json
Billing: Pilot jobs are free. Paid jobs: FAIL = $0 credits (no burn). PASS burns 1 credit only at issued Verify PASS. Buyer-safe resubmit: each FAIL includes 1 priority resubmit within 7 days.
← All Documentation · Start 48h Pilot Preview · Home