Limits

Rate limits, token lifetimes, size limits and retry windows.

On this page

API quotas

Every channel route is metered per key on a rolling one-hour window. A 429 RATE_LIMITED names the bucket and the ceiling, and Retry-After gives the wait in seconds. To raise a ceiling, ask your WTN contact.

BucketPer hourCovers
provision30Creating a campaign (it drafts a survey).
audience300Attaching respondents (up to 1,000 rows per call).
results1,200Reading status, results, installs and devices.
workspaces600Listing workspaces.
workspaceCreate20Creating a workspace.
export30Queueing an export.
webhooks120Registering, listing and testing webhooks.
launch36,000One-time launch links, sized for about 10 per second.

App registration and the page's public routes are limited per network, not per key. Registration is idempotent for the same inputs, so a retry is safe.

Lifetimes and sizes

WhatLimit
One-time launch linksingle use, expires in 10 minutes
Signed launch tokenexp at most 30 minutes ahead; jti single use
accessToken24 hours by default
refreshToken180 days by default, renewed on every heartbeat
Idempotency-Keyreplays for 24 hours
Webhook timeout10 seconds; 5 attempts (1 min, 5 min, 30 min, 2 h, 12 h)
Webhook signature window5 minutes
attributes on a launch64 keys, 8 KB, values up to 1,024 characters
metadata on registerflat string map, up to 2 KB
externalUserRefup to 200 characters
vendorDeviceId and user.externalIdup to 128 characters
Tags in a signed tokenup to 8

A heartbeat or register that arrives within the coalescing window (15 minutes by default) does not count as a new session, so a burst of starts costs one write.