← Back to blog

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/imageCredits.

Single-file file endpoints

APIURLParts
Invoice/v1/documents/invoicefile (binary)
Receipt/v1/documents/receiptfile (binary), 1–20
PAN/v1/documents/panfile (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

PartRequiredContent
first_pageyesBiodata page image/PDF
last_pageyesSecondary / 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.jpg

Passport API · Extract passport with Zapier.

Indian vehicle RC — front + back

URL: /v1/documents/indian-vehicle-rc

PartRequiredNotes
frontrecommendedRC front
backrecommendedRC back

Field names are front / back, not file. Send one or both; both sides produce the most complete merge.

Indian vehicle RC API.

Driver’s license — file + country

URL: /v1/documents/driver-license

PartTypeNotes
filebinaryLicense image/PDF
countrytextISO 3166-1 alpha-3: IND, USA, VNM, GBR, THA, IDN

Missing country → client error. Unsupported code → not found / unsupported country.

Driver’s license API.

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

  1. Part names must match the tables exactly (case-sensitive).
  2. File parts carry the binary from the previous step; text parts (country) are plain strings.
  3. After a successful call, open Zap history, expand the Custom Request step, and confirm the response envelope before building Sheets / Airtable mappings.
  4. Use a Filter after the HTTP step: continue only when success is true so failed extractions do not create blank destination rows.
  5. 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 POST to https://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 country as alpha-3 text
  • Custom URL includes the real slug
  • Zap history shows success: true before destination steps run

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).