burneh
Product

An API your customers integrate in an afternoon.

We build the API and integration layer for products: typed endpoints, signed webhooks that retry, and SDKs. The teams building on you ship, instead of filing tickets.

Start a build
API consoleapi.burneh.dev
GET/v1/orders
200 OK142 msapplication/json
1{
2 "data": [
3 { "id": "ord_4471", "amount": 4200, "currency": "usd", "status": "paid" },
4 { "id": "ord_4470", "amount": 890, "currency": "usd", "status": "refunded" },
5 { "id": "ord_4469", "amount": 150, "currency": "usd", "status": "pending" }
6 ],
7 "has_more": true
8}

Pick an endpoint and fire it. Real typed JSON back, with a status and a latency.

Send the wrong shape, get a 422 that names the field.

Not a silent 500 three services deep. Flip a field to the wrong type and watch the response change.

POST/v1/refunds
1{
2 "order": "ord_4471",
3 "amount": 4200
4}
flip a field to the wrong type
201 Createdapplication/json
1{
2 "id": "re_2091",
3 "order": "ord_4471",
4 "amount": 4200,
5 "status": "succeeded"
6}

Webhooks that don't get lost.

Signed so the receiver can trust it, idempotent so a repeat is safe, retried with backoff until it lands. Make the endpoint flaky and watch it keep trying.

POST https://acme.io/webhooks
event order.refunded · X-Burneh-Signature: sha256=9f2a7c…e41b
#1200delivered in 180ms

One spec. Every SDK.

The curl call, the Node SDK, and the Python SDK all come off one source of truth, so they never drift. Your customer picks a language and the shape is identical.

1curl https://api.burneh.dev/v1/refunds \
2 -H "Authorization: Bearer sk_live_..." \
3 -H "Content-Type: application/json" \
4 -d '{ "order": "ord_4471", "amount": 4200 }'

An API the teams building on you actually enjoy.

Typed endpoints, signed webhooks that retry, and SDKs off one spec. They ship, instead of filing tickets.