https://api.vflo.app/api/public with your X-API-Key header.
Before you start
- Create the lead (or use a case): Create a lead.
- Open the template (Settings > Templates > Agreements), then its Settings tab, and open API for the template ID and a request with the template’s own field names.
- For the API to send a template, it needs sign areas. A Word template with sign-here placeholders (
client_signature,client_sign_date,rcic_signatureand so on) has them.GET /template/listsayssendable: truefor those that do.
Make it and send it
- The client signs first; the firm signs after, in VisaFlo. Until then the status is
awaiting_countersign. valuessets the template’s variables by exact name. Whatever you leave out fills from the record, the lead’scustomFieldsof the same name, or the template’s default. Money and dates are written the way your workspace writes them.signersis optional: without it, the record’s own contact signs. For more people, send"signers": [{ "role": "Client", "name": "Jane Doe", "email": "jane@example.com" }, { "role": "Spouse", "email": "sam@example.com" }].subjectandmessagechange the invitation email.metadatais your own reference. It comes back on every read and in every webhook event.- The same call within 24 hours returns the first agreement with
"duplicate": trueand sends nothing twice, so retries are safe. - Everything is checked before anything is sent. If it can’t go, you get a
422with acode(missing_fields,no_sign_areas,no_signer_emailand so on) and the list of problems indata.issues.
Follow it
status is draft, sent, awaiting_countersign or completed. Each signer is pending, viewed or signed, with viewedAt and signedAt. documents[].downloadUrl and certificateUrl need your API key.
Rather than asking again and again, set up a webhook.
Download the signed PDF
version=original (the default) is the document as sent. version=signed is the copy everyone has signed so far, and answers 409 not_signed until someone has.
Zapier and Make
- Send
"send": "true"as text if your tool only sends text. - Map fields to
values__consultation_fee,signers__Spouse__emailandmetadata__booking_idwhen the tool can’t build nested JSON. - Numbers and booleans can be sent as text.
Limits
- No cancel or delete through the API yet. Do that in VisaFlo.
- 50
valueskeys, 20metadatakeys, 6 signers.