SignEnvoy docs
Sign in Start in the sandbox

Error reference

Polling too fast

One API key read one document more often than it changes.

Problem type /problems/polling-too-fast
HTTP status 429
Emitted by REST API (/v1)
Title values
This document is being read too often
Extra members events_urlpoll_interval_sretry_after_swebhooks_url
Response headers LinkRetry-AfterX-SignEnvoy-Poll-Interval
Trigger
REST API (/v1): D155 (ADR 0053): one API key read one document more than 10 times at once, then faster than once every 15 s. Carries `Retry-After`, `retry_after_s`, `poll_interval_s`, `webhooks_url`, `events_url` and the `X-SignEnvoy-Poll-Interval` header

What happened

The response is HTTP 429 with a Retry-After header in seconds. One API key read the same document more than 10 times in a burst, and then faster than once every 15 seconds. The problem body carries retry_after_s, poll_interval_s (the interval we recommend, 30), webhooks_url and events_url.

What it means

Only that document, for that key, was refused. Other documents, other keys and every other operation carry on. The workspace’s fair-use limit (rate-limited) is separate.

A document only changes when someone signs, declines or opens it, or when the sealed PDF is ready. Reading it every few seconds mostly returns the same thing.

What to do next

Subscribe a webhook to document.completed and document.sealed (and document.signed if you show progress), and read the document once when the event arrives. On localhost, senv webhook tail --forward http://localhost:3000/webhooks/signenvoy --secret YOUR_LOCAL_SECRET delivers the same events without a tunnel.

If you have to poll, wait Retry-After seconds, then read every 30 seconds. Send the ETag from your last read as If-None-Match: an unchanged document answers 304 with no body. Or add ?wait=30 and the request returns as soon as the document changes. Polling and webhooks has the details.

Problem body

Every error the API returns is an RFC 9457 problem document with media type application/problem+json. The type member is the stable identifier to switch on; docs_url is this page.

{
  "type": "/problems/polling-too-fast",
  "title": "This document is being read too often",
  "status": 429,
  "instance": "/v1/...",
  "docs_url": "https://staging.signenvoy-docs-b4g.pages.dev/errors/polling-too-fast",
  "events_url": "...",
  "poll_interval_s": "...",
  "retry_after_s": "...",
  "webhooks_url": "..."
}