Versions
The API lives under /wp-json/kwazi/v1. From Kwazi 1.0 on, v1 only grows: new routes, new optional parameters, new fields in answers and new webhook events. Your integration should ignore fields it does not know. A change that would break an integration gets a new version (v2) next to v1.
Before 1.0 the shape can still change; the changelog names every change.
Ids
Kwazi records have a public id (a UUID). Use it to store references; it never changes. WordPress objects keep their own number: users and staff (user_id) and forms (form.id).
Rate limits
Routes for logged-in users and application passwords have no limit of their own (your host may have one). The public routes that website visitors use are limited per IP address (hashed; an IPv6 address counts as its /64 block), per 10 minutes:
| Public route | Limit per 10 minutes |
|---|---|
| Browsing services and free times | 120 |
| Booking an appointment | 20 |
| Managing a booking with its link | 20 |
| Submitting a form | 20 requests, 5 submissions |
| Confirming or unsubscribing from marketing | 20 |
Over the limit the answer is 429 kwazi_rate_limited.
Sizes
| What | Limit |
|---|---|
A page of a list (per_page) |
100 (25 by default) |
| A CSV file to import | 5 MB, 100 columns, 50,000 rows (csv: too_large, too_many_columns, too_many_rows) |
| Webhooks per site | 20 |
| The answer of a webhook receiver | only the first 4 KB is read |
