unified webhooks for llm batches

Stop Polling.
Start Shipping.

afterbatch watches provider batch jobs and notifies your app with a signed webhook when they hit a terminal state. No SDK migration. No lock-in.

Connect your provider keys, point one webhook endpoint, and start receiving completion events immediately.

OpenAIAnthropicGemini
Sync Checkpoint
Provider sync state tracks discovery cursor progress.
provider_batch_sync_state
{
  "user_id": "user_123",
  "provider": "anthropic",
  "key_connected_at": "2026-02-17T10:00:00Z",
  "latest_batch_id": "msgbatch_013...",
  "last_synced_at": "2026-02-17T10:00:30Z"
}

afterbatch uses `after` cursors and `has_more` pagination to discover new batches without rescanning old windows.

Observe Mode
Keep your existing batch code. Connect provider keys once and receive completion webhooks from every provider.
At-least-once Delivery
Built-in retries, delivery IDs, and signed payloads make webhook ingestion predictable and easy to dedupe.
One Endpoint
Configure a single webhook URL and route internally by provider, metadata, and event type.

step 01

Submit Batches Normally
Use your provider SDK and workflow exactly as-is.

step 02

Connect Provider Keys
Add provider keys and one webhook endpoint in the dashboard.

step 03

Receive Signed Events
Handle completion in your webhook without adding polling workers.