Pass That Payload
Open Console

Self-hosted · MIT-licentie

Geef de payload door. Wij regelen de rest.

Een lean alternatief voor hosted QStash-achtige ingress. Multi-tenant queue, HTTP-delivery met retries, cron-schedules en strikt-geordende message groups — allemaal op je eigen Postgres.

Gebouwd voor productie-queues

Zes primitives. Eén Postgres. Geen externe afhankelijkheden.

Multi-tenant projecten

Per-user projecten met Postgres Row-Level Security. Genereer per-project API-tokens die exact één tenant zien — leaks reiken nooit verder.

Per-project API-tokens

Bearer pk_xxx:sk_yyy, bcrypt-gehashed in de DB. Eenmaal getoond bij aanmaak, direct intrekbaar vanuit het dashboard.

Losse berichten

POST één HTTP-job: origin, path, method, headers, body, retries, optioneel runAt of delaySeconds, optioneel idempotencyKey.

Message groups

Eén origin + meerdere paths, strikt op volgorde verwerkt. Postgres dwingt sibling-volgorde af bij claim time — overleeft herstarts en meerdere workers.

Cron-schedules

Per-rij cron-expressie + timezone. Eén centrale dispatch-tick enqueue't due schedules; schedule_runs dedupliceert overlappende workers.

Retries & backoff

Mislukte pogingen gaan naar pending_retry met backoff. Na max_retries: dead. Elke poging wordt gelogd in delivery_attempts.

Drie regels HTTP

Werkt met curl, de SDK, of welke HTTP-client dan ook.

curl -X POST https://api.passthatpayload.com/api/v1/messages \
  -H "Authorization: Bearer pk_xxx:sk_yyy" \
  -H "Content-Type: application/json" \
  -d '{
    "origin": "https://api.example.com",
    "path": "/hooks/order-created",
    "body": { "orderId": 42 },
    "maxRetries": 5
  }'

Use cases

Wat je anders zelf zou moeten bouwen.

01

Webhook fan-out

Eén binnenkomend event naar veel downstream URLs, elk met een eigen retry-policy. Verlies geen enkele delivery aan een wankele third-party API.

02

Cron-gedreven workflows

Schedule cron-expressies per rij. Eén centrale dispatch-tick triggert de due schedules — geen OS-cron per schedule, geen Vercel-cron per job.

03

Strikt-geordende HTTP-pijplijnen

Moet stap 2 wachten op stap 1? Message groups garanderen volgorde op database-niveau — zelfs over meerdere dispatchers.

Self-host of gebruik de hosted editie

Dezelfde engine, twee manieren om hem te draaien.

FeatureHostedSelf-host
InfrastructuurDraait op api.passthatpayload.com — geen ops aan jouw kant.Eén container + Postgres op je eigen server. Hetzner-runbook in de README.
Data-eigendomOpgeslagen in onze gedeelde Postgres, per project geïsoleerd via RLS.Jouw database, jouw backups, jouw retentie.
QuotaRoyale gratis tier tijdens beta.Geen quota — alleen begrensd door je Postgres + bandbreedte.
SupportCommunity + best-effort.Community + GitHub issues.

Prijzen

Gratis tijdens beta. Self-host blijft altijd gratis.

Free

€0/maand

Voor iedereen die de hosted editie gebruikt tijdens beta.

  • Onbeperkt projecten
  • Alle API-endpoints
  • Community-support
Token aanmaken

Self-host

€0voor altijd

Draai Pass That Payload op je eigen server.

  • Volledige broncode (MIT)
  • Hetzner-runbook erbij
  • Geen gebruikslimieten
Bekijk op GitHub

Pro

binnenkort

Hogere quota, SLA, priority support.

  • Hogere quota
  • SLA + priority support
  • Audit-log-export
Houd me op de hoogte

Veelgestelde vragen

Hoe verschilt dit van QStash?
QStash is prima, maar alleen hosted. Pass That Payload biedt dezelfde primitives — HTTP-enqueue, retries, schedules — maar self-hostable op één Postgres + Node-container, met multi-tenant projecten en RLS ingebakken.
Werkt het met localhost / private URLs?
Ja, als de dispatcher in Node draait (worker of nodejs route runtime). De dispatcher fetcht de target-URL zelf, dus alles wat vanaf zijn netwerk bereikbaar is werkt.
Wat gebeurt er als de retries op zijn?
Het bericht gaat naar status "dead" na max_retries mislukte pogingen. Binnen een message group draait de volgende sibling gewoon door — één failure breekt niet de hele keten af.
Hoe garandeer je volgorde over meerdere workers?
De volgorde wordt afgedwongen in Postgres bij claim time: de volgende rij in een groep wordt pas gepakt als eerdere siblings pending, pending_retry of processing hebben verlaten. Alle dispatchers respecteren dezelfde regel.
Welke regio's zijn beschikbaar?
De hosted editie draait in Hetzner Falkenstein (Duitsland, EU). Self-host overal waar je Node + Postgres 16 kunt draaien.
Is het open source?
Ja — MIT-licentie op GitHub. Zie de Console-repo voor de broncode, de SDK en het operator-runbook.