Skip to main content

Error Format

Errors return JSON with a detail field:
Validation errors (422) include field-level details:

Status Codes

On 403, webhook delivery on a watch requires the Business plan: use channel: "email" or upgrade. On 429, the watch cap is 3 outside Business and 100 on Business.

400 versus 422

A 422 is schema validation: a field is missing, or its type or range is wrong. FastAPI rejects it before your request reaches any business logic, and the response carries the loc array shown above. A 400 is a request that is well-formed but not allowed. POST /watches and PATCH /watches/{id} return it for:
  • a scope the board cannot be narrowed by, or an actId scope that does not exist on that board,
  • a source that is not scopable at all, meaning a board whose scopable is false such as the Federal Register,
  • a missing webhookUrl or emailAddress for the channel you asked for, or one set on a channel that does not use it,
  • a webhookUrl the API refuses as a delivery target,
  • a webhookAuth.headerName that is not a legal header name, or outbound auth set on an email-only watch.
The detail string names the specific problem, so read it rather than retrying.

409 on watches

POST /watches returns 409 when you already hold a watch on the same board, the same channel, and the same scope. Watches are unique on that triple, so this means the subscription you were about to create already exists rather than that something went wrong. PATCH /watches/{id} returns it for the same reason, when narrowing a watch’s scope would collide with another watch you already hold. List your watches with GET /watches and reuse the existing one.

Rate Limiting

Limits are enforced per API key and scale with your plan. Every 429 response includes a Retry-After header. See Rate limits for the per-plan table and a full backoff implementation.

Troubleshooting

Include the Bearer prefix: Authorization: Bearer vq_key_.... The key alone is rejected.
Set Content-Type: application/json. Check the loc field in the response to find the problematic field.

Rate limits

Per-plan request limits and a full backoff implementation.

Authentication

Create and manage your API key.
Last modified on September 6, 2026