---
title: "GitHub webhook receiver"
method: POST
path: "/github/webhook"
---

# GitHub webhook receiver

`POST /github/webhook`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/github/webhook`
- Auth: none declared. Required headers: `x-github-event`, `x-github-delivery`, `x-hub-signature-256`

Receives GitHub App webhook deliveries after signature verification. Delivery idempotency is DB-owned: completed duplicates return safe accepted responses, in-flight duplicates return a bounded retryable conflict, and handler failures leave the delivery retryable. Push events also persist per-project commit intent so API maintenance can retry deploy enqueue without relying on GitHub redelivery.

## Headers

- `x-github-event` string, required
- `x-github-delivery` string, required
- `x-hub-signature-256` string, required

## Response `202`

Webhook accepted or completed duplicate safely replayed

## Other responses

- `400`: Required webhook headers or JSON payload are invalid
- `401`: GitHub webhook signature verification failed
- `409`: Same delivery is already processing and should be retried later
- `503`: Handler failed after delivery claim; delivery remains retryable

---

[API](https://skmtc.dev/eurobase/apis/eurobase-api.md) · [All operations](https://skmtc.dev/eurobase/apis/eurobase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eurobase/apis/eurobase-api/revisions/5266a299d18a?raw)
