---
title: "Inbound nudge from the publishing instance"
method: POST
path: "/api/federation/webhook/{id}"
tags: ["Federation"]
---

# Inbound nudge from the publishing instance

`POST /api/federation/webhook/{id}`

## Request

- Base URL: `http://localhost:38200`
- URL: `http://localhost:38200/api/federation/webhook/{id}`
- Auth: none required

Public route — excluded from the global `/api/*` auth gate because the caller is a remote instance with no tenant credential of its own against this subscriber. Authenticated instead by the per-subscription `webhook_secret` as an HMAC-SHA256 signature over the raw request body (`x-federation-signature: sha256=<hex>`), constant-time compared. Carries no delta payload — it only triggers the same pull path a scheduled tick would.

## Path parameters

- `id` integer, required

## Headers

- `x-federation-signature` string, required

## Response `200`

Subscription exists but is not active — no job enqueued.

- object
  - `ok` boolean
  - `enqueued` false
  - `reason` string

## Other responses

- `202`: Sync job enqueued (or already-throttled no-op).
- `401`: Invalid or missing webhook signature.
- `404`: Resource not found (or not visible to the caller).

---

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