Launch offer: 40% off your first 3 months with code

All guides

Other integrations · 7 min

Use the API, webhooks and Zapier

Create API keys for the REST API and Zapier, send signed webhooks to your own systems, and see every delivery.

Before you start

API keys, webhooks and Zapier are on the Team plan. They belong to the workspace, and only owners and admins can manage them.

Go to Settings → Integrations and open the API & webhooks card in the AI & automation group. On another plan the card explains this and links to See plans.

Create an API key

  1. 1
    In the API & webhooks card, type a name under New key, such as the tool that will use it, and choose Create key.
  2. 2
    Copy the key straight away. It starts with veew_live_ and is shown only once. Veew keeps only a hash, so it can't show the key again.
  3. 3
    Store it in the tool that will call Veew. The card lists each key with when it was created and last used.

Revoke a key

Choose Revoke next to a key. Anything using it stops working at once, including a Zap connected with it. A key acts as the admin who made it, with their permissions, so it also stops working if that person leaves the workspace or the workspace leaves the Team plan.

Call the REST API

The base URL is https://veew.ai/api/v1. Send the key in an Authorization header: Authorization: Bearer veew_live_ followed by the rest of your key. For example:

curl -H "Authorization: Bearer veew_live_..." "https://veew.ai/api/v1/documents?status=accepted&limit=5"

Each key can make 60 requests a minute. A list returns at most 50 items. Errors come back as JSON with an error sentence and a code, such as unauthorized (401), plan_required (403), not_found (404) or rate_limited (429).

  • GET /me
    What it does
    The key's member and workspace. Handy for checking a key works
  • GET /deals
    What it does
    List deals, most recent activity first. Takes query and limit
  • GET /deals/:id
    What it does
    One deal with its details, brief, meetings and documents
  • POST /deals
    What it does
    Create a deal from company_name and optional company, contact, deal and notes. Returns the existing deal for a company you already have
  • GET /documents
    What it does
    List documents. Filter by deal_id, status (draft, live, accepted, expired, archived) or query
  • GET /documents/:id
    What it does
    One document. Add blocks=1 for its full content
  • POST /documents
    What it does
    Create a document from a template under a deal. Set draft to true to have Veew write the copy, which takes up to a minute
  • POST /documents/:id/draft
    What it does
    Have Veew draft or revise a document, with optional instructions. Allow 90 seconds
  • GET /documents/:id/insights
    What it does
    Opens, visitors, sections read, countries, devices and recent activity
  • GET /templates
    What it does
    List templates. The template value is what POST /documents takes
  • GET /templates/:ref
    What it does
    One template's fields and sections
  • POST /meetings
    What it does
    Add meeting notes to a deal from deal_id and notes, with an optional title and occurred_at

Add a webhook endpoint

A webhook sends events to your own server as they happen. Veew POSTs JSON to your URL.

  1. 1
    In the API & webhooks card, under Webhook endpoints, enter an Endpoint URL. It must be an https:// URL on a public host. A Name is optional.
  2. 2
    Tick the Events you want. document.accepted is ticked to start with.
  3. 3
    Choose Add endpoint, then copy the Signing secret. It is shown only once, and your receiver needs it to verify deliveries.
  4. 4
    Choose Send a test event on the endpoint. Veew sends a ping event at once and tells you the response it got.

Events

  • document.published
    When it is sent
    Document published (link went live)
  • document.sent
    When it is sent
    Document sent to recipients by email
  • document.opened
    When it is sent
    Document opened by a buyer (first open per reader per hour)
  • document.accepted
    When it is sent
    Document accepted
  • document.commented
    When it is sent
    Buyer asked a question or replied on a document
  • document.expiring
    When it is sent
    Link about to expire
  • document.quiet
    When it is sent
    Document gone quiet, or never opened
  • space.opened
    When it is sent
    Deal Space opened by a buyer
  • deal.created
    When it is sent
    Deal created

What a delivery looks like

Each delivery is a POST with a JSON body containing id, type (the event), created_at, workspace_id and data. Document events include the document's title, status, company, deal and its edit, insights and live links.

Every delivery also carries three headers: Veew-Event (the event name), Veew-Delivery-Id, and Veew-Signature, which looks like t=1759425691,v1= followed by a hex signature.

Verify the signature

  1. 1
    Read the raw request body exactly as received. Don't parse and re-serialize it first, because any change breaks the signature.
  2. 2
    Split the Veew-Signature header into t (a Unix timestamp in seconds) and v1.
  3. 3
    Compute HMAC-SHA256 of the timestamp, a period, and the raw body, using the endpoint's signing secret, as a hex string.
  4. 4
    Accept the delivery only if your result matches v1 in a constant-time comparison and t is within a few minutes of now.

Retries, the delivery log and switching off

Any 2xx response counts as delivered. Veew waits 10 seconds for a reply and doesn't follow redirects. If a delivery fails, Veew retries it for about a day, waiting longer between each try, then gives up.

If an endpoint fails 20 times in a row, Veew switches it off and emails the person who added it. Events aren't queued while it is off. Once your receiver is back, choose Switch on to start it again and reset the count. You can also choose Switch off or Remove yourself. Removing an endpoint deletes its delivery log too.

Recent deliveries in the card lists the latest 25, each with its event, endpoint, response and status: Pending, Retrying, Delivered or Gave up. Choose Re-send to try a delivery again now.

Connect Zapier

Zapier uses an API key, so it is on the Team plan and an owner or admin creates the key.

  1. 1
    Create an API key in the API & webhooks card, named something like Zapier.
  2. 2
    In Zapier, make a Zap and search for Veew as the trigger or action app.
  3. 3
    Paste the key when Zapier asks you to connect Veew.

What Zapier can do

Your Zaps' triggers show in the API & webhooks card as subscribed Zapier triggers. Zapier manages them, so turn the Zap off to remove one. Documents a Zap creates are drafts: someone reviews and publishes them in Veew, and nothing is sent to a buyer without them.

  • New Accepted Document (trigger)
    What it does
    A buyer accepts a proposal, deck or one-pager. Includes the buyer, their note and the package chosen
  • New Document Open (trigger)
    What it does
    A buyer opens a live document, once per reader per hour
  • New Buyer Comment (trigger)
    What it does
    A buyer asks a question or replies on a document
  • New Deal (trigger)
    What it does
    A deal is created in Veew, by hand, from a CRM or by an AI app
  • Create Deal (action)
    What it does
    Creates a deal for a company, or returns the existing one. Notes become its first meeting
  • Create Document (action)
    What it does
    Creates a draft from a template under a deal. Can have Veew write the copy now
  • Add Meeting Notes (action)
    What it does
    Adds notes, such as a call summary or email thread, to a deal
  • Find Deal (search)
    What it does
    Finds a deal by company, deal or contact name

Last updated 2026-10-15.