Send Multipart Form Data to Cryvis from Zapier
Cryvis multipart field names for Zapier Custom Request: file, passport first_page/last_page, RC front/back, driver-license country, and custom extractors.
Every Cryvis extraction call is multipart/form-data. In Zapier you send that shape with Webhooks by Zapier → Custom Request (or any step that can attach file binaries as form parts). Wrong part names look like “missing file” even when the trigger delivered a valid PDF.
Hub: Zapier + Cryvis. Prefer Make.com? See Send multipart from Make.
HTTP baseline
Method: POST
URL: https://api.cryvis.com/v1/documents/<type>
Header: Authorization: Bearer <API_KEY>
Body: multipart/form-data
Parts: (see tables below — names are case-sensitive)Do not invent a JSON body with a base64 string. Cryvis expects real multipart parts. Do not set Content-Type: application/json — the client must set the multipart boundary.
Base host: https://api.cryvis.com. MIME for files: PDF, JPEG, PNG, WebP. Credits: 1 per page/image — Credits.
Single-file file endpoints
| API | URL | Parts |
|---|---|---|
| Invoice | /v1/documents/invoice | file (binary) |
| Receipt | /v1/documents/receipt | file (binary), 1–20 |
| PAN | /v1/documents/pan | file (binary) |
| Custom | /v1/custom-extractors/<slug> | file (binary) |
In the Custom Request payload, one part named file maps to the binary from Drive / Gmail / Forms.
Product links: Invoice, Receipt, PAN, Custom.
Aadhaar — up to two file parts
URL: /v1/documents/aadhaar
Add one or two multipart parts both named file (front and/or back). Duplicate part names are intentional — do not rename them front / back.
Aadhaar API · Walkthrough: Extract Aadhaar with Zapier.
Passport — first_page + last_page
URL: /v1/documents/passport
| Part | Required | Content |
|---|---|---|
first_page | yes | Biodata page image/PDF |
last_page | yes | Secondary / MRZ page |
There is no file part on passport. Mapping a single PDF into file will fail.
# Wrong
multipart part: file = passport.pdf
# Right
multipart part: first_page = biodata.jpg
multipart part: last_page = final.jpgPassport API · Extract passport with Zapier.
Indian vehicle RC — front + back
URL: /v1/documents/indian-vehicle-rc
| Part | Required | Notes |
|---|---|---|
front | recommended | RC front |
back | recommended | RC back |
Field names are front / back, not file. Send one or both; both sides produce the most complete merge.
Driver’s license — file + country
URL: /v1/documents/driver-license
| Part | Type | Notes |
|---|---|---|
file | binary | License image/PDF |
country | text | ISO 3166-1 alpha-3: IND, USA, VNM, GBR, THA, IDN |
Missing country → client error. Unsupported code → not found / unsupported country.
Custom extractors
URL: /v1/custom-extractors/<slug>
Only file. Schema lives in Console; Zapier does not send the schema on each call. Docs: Custom extractors.
ASCII cheat sheet
invoice/receipt/pan/custom → file
aadhaar → file [, file]
passport → first_page + last_page
indian-vehicle-rc → front + back
driver-license → file + country (alpha-3)Zapier wiring tips
- Part names must match the tables exactly (case-sensitive).
- File parts carry the binary from the previous step; text parts (
country) are plain strings. - After a successful call, open Zap history, expand the Custom Request step, and confirm the response envelope before building Sheets / Airtable mappings.
- Use a Filter after the HTTP step: continue only when
successis true so failed extractions do not create blank destination rows. - For branching (high amount, MRZ fail, masked Aadhaar), use Paths after the Filter — keep each path’s destination mapping separate.
Example success envelope
All document endpoints share the same wrapper. Map from data.*:
{
"success": true,
"data": {
"invoice_number": "INV-2024-00142",
"seller": { "name": "Acme Cloud Services" },
"total_amount": 1193.77
},
"meta": {}
}Checklist
- Custom Request method is
POSTtohttps://api.cryvis.com/... - Header is
Authorization: Bearer <API_KEY>(single space after Bearer) - Body is multipart/form-data with correct part names
- Passport/RC not using
file - Driver license includes
countryas alpha-3 text - Custom URL includes the real slug
- Zap history shows
success: truebefore destination steps run
Related tutorials
- Extract invoice data → Google Sheets
- Invoice → Airtable
- Automate invoice processing from Gmail
- Extract receipt data
Ready to call: sign up, create a key, pick an endpoint from pricing / the Invoice API, and wire the first Custom Request against the OpenAPI docs (e.g. extractInvoice).