Skip to main content
Any endpoint that accepts sync=false will return immediately with a task_id and process in the background. When complete, the result is available via polling or delivered to your webhook URL.

Async processing

Webhook payload

When the task completes, we POST the result to your webhook_url:

Verifying webhooks

Every webhook includes two security headers: Verify the signature to ensure the payload is authentic and hasn’t been tampered with:
Always verify the X-TDA-Signature header before trusting a webhook payload. Without verification, anyone who discovers your webhook URL could send forged payloads.

Retry policy

Failed webhook deliveries are retried automatically:
  • 4xx responses are treated as permanent failures (not retried)
  • 5xx responses and timeouts are retried
  • Your endpoint should return 200 to acknowledge receipt

Checking delivery status

If you didn’t receive a webhook, check the delivery log:
Delivery statuses:
  • pending — Not yet attempted
  • delivered — Successfully received (2xx response)
  • failed — Will be retried
  • dead — Exhausted all retry attempts or permanent 4xx failure

Deduplication

Use the X-TDA-Delivery-ID header to deduplicate retries. If your server crashes after processing but before responding, the retry will carry the same delivery ID.