---
title: "Receive one event on a webhook URL"
method: POST
path: "/api/v1/webhooks/{webhookId}/{token}"
tags: ["webhooks"]
---

# Receive one event on a webhook URL

`POST /api/v1/webhooks/{webhookId}/{token}`

## Request

- Base URL: `https://api.past.dev`
- URL: `https://api.past.dev/api/v1/webhooks/{webhookId}/{token}`
- Auth: none required

Receive one event from another system. The console issues the complete URL when the webhook is created, and the token in it is the credential: the route takes no bearer. A JSON body is read by the webhook's mapping and filters; any other body is used whole as the content. Returns 202 when the event becomes a data point and 200 when a filter or the content mapping drops it. Each event received costs 0.1 credit; an ingested event also costs the ingestion credits of its content.

## Path parameters

- `webhookId` string, required
- `token` string, required

## Response `200`

The event was dropped: a filter did not match, or the content path resolved to nothing. It costs 0.1 credit and creates no data point.

- WebhookReceipt
  - `eventId` string, required: The id of the event, beginning with evt_, assigned at receipt.
  - `requestId` string, required: The id of this call, as in the X-Request-Id header.
  - `verdict` 'ingested' | 'dropped', required
  - `droppedBy` string, nullable: On a dropped event: the first filter that did not match, or the missing content. Null on an ingested event.
  - `ingestionId` string, uuid, nullable: The ingestion id of an ingested event, read with the ingestion status operation. Null on a dropped event.
  - `dataPointId` string, nullable: The source id of the data point: the mapped id, or the event id when the webhook maps none. Null on a dropped event.
  - `unchanged` boolean, nullable: True when the event repeats a data point whose content and time are unchanged.

## Other responses

- `202`: The event was ingested as a data point. unchanged is true when it repeats a data point whose content and time are unchanged.
- `400`: audience-unknown: the audience of the webhook was deleted.
- `402`: webhooks-not-included: the plan does not include webhooks. out-of-credits: the organization's credits are spent.
- `404`: not-found: the id or the token is wrong, or the webhook is deleted. A wrong token never returns 401.
- `409`: webhook-paused: the webhook is paused. Events sent during the pause are not kept.
- `413`: webhook-body-too-large: the body is larger than 1 MiB.
- `429`: project-cap-reached or spend-cap-reached, or the webhook is past its limit of 600 events in one minute. The per-minute refusal carries no body.
- `503`: The organization is not ready or background ingestion is disabled.
- `default`: Any other failure uses the same JSON error envelope.

---

[API](https://skmtc.dev/past/apis/past-dev-memory-api.md) · [All operations](https://skmtc.dev/past/apis/past-dev-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/past/apis/past-dev-memory-api/revisions/3ddccc19f0eb?raw)
