Integrations

REST API

Custom REST integration against 130+ endpoints at integrate.zivvy.xyz/docs.

The snag

Every business is a little different, and no pre-built integration will cover the fifth-nine edge case you actually care about.

How Zivvy helps

The Zivvy REST API exposes 130+ resource endpoints under integrate.zivvy.xyz/v1/... with OpenAPI 3.1, cursor pagination, and per-request idempotency.

What you get

  • 130+ REST endpoints under /v1/...
  • OpenAPI 3.1 schema + auto-generated SDK stubs
  • Idempotency-Key support on every mutating call

Workflow stream

Internal tool integrating with /v1/customers + /v1/sales-orders

Common uses

  1. 01

    Internal tool integrating with /v1/customers + /v1/sales-orders

  2. 02

    Backfill job hitting bulk /v1/items

  3. 03

    One-off script that reconciles /v1/payment-entries

Integration code

Open API reference

List sales orders

curl "https://integrate.zivvy.xyz/v1/sales-orders?limit=25&status=Submitted" \
  -H "Authorization: Bearer $ZIVVY_API_KEY"

Typed SDK usage

import Zivvy from "@zivvy/node";

const zivvy = new Zivvy({ apiKey: process.env.ZIVVY_API_KEY });

const orders = await zivvy.salesOrders.list({
  status: "Submitted",
  limit: 25
});

for (const so of orders.data) {
  console.log(so.name, so.grand_total);
}

Requests + pagination

import os, requests

url = "https://integrate.zivvy.xyz/v1/sales-orders"
headers = {"Authorization": f"Bearer {os.environ['ZIVVY_API_KEY']}"}
cursor = None

while True:
    params = {"limit": 100}
    if cursor: params["cursor"] = cursor
    r = requests.get(url, headers=headers, params=params).json()
    for so in r["data"]:
        print(so["name"], so["grand_total"])
    cursor = r.get("next_cursor")
    if not cursor: break

API endpoints

GET /v1/customersPOST /v1/sales-ordersPOST /v1/sales-invoicesGET /v1/reports/{report}

Events emitted

HMAC-SHA256 signed webhooks, retried for 24 hours.

  • customers.created
  • sales-orders.submitted
  • sales-invoices.paid

0

free seats forever

0

card required to start

1

workspace for the workflow

Questions

Ready to try it?

Free plan. Two seats. No card.