> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hooksnode.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API reference

> Send events, read events and retry deliveries.

hooksnode has two HTTP surfaces:

| Surface         | Base URL                              | Auth                        | Use it to                                                                          |
| --------------- | ------------------------------------- | --------------------------- | ---------------------------------------------------------------------------------- |
| **Ingest**      | `https://hooksnode.com/p/<source-id>` | None, or a source signature | Send events.                                                                       |
| **REST API v1** | `https://hooksnode.com/api/v1`        | Workspace API key           | List projects, sources and events. Get the raw request. Retry. Stream live events. |

## Endpoints

| Method | Path                                                    | Description                                                         |
| ------ | ------------------------------------------------------- | ------------------------------------------------------------------- |
| `POST` | `/p/{sourceId}`                                         | [Send an event](/api-reference/endpoints/send-event)                |
| `GET`  | `/api/v1/projects`                                      | [List projects](/api-reference/endpoints/list-projects)             |
| `GET`  | `/api/v1/projects/{projectId}/sources`                  | [List sources](/api-reference/endpoints/list-sources)               |
| `GET`  | `/api/v1/projects/{projectId}/events`                   | [List events](/api-reference/endpoints/list-events)                 |
| `GET`  | `/api/v1/projects/{projectId}/events/{eventId}`         | [Get an event and its attempts](/api-reference/endpoints/get-event) |
| `GET`  | `/api/v1/projects/{projectId}/events/{eventId}/request` | [Get the raw request](/api-reference/endpoints/get-event-request)   |
| `POST` | `/api/v1/projects/{projectId}/events/{eventId}/retry`   | [Retry the failed deliveries](/api-reference/endpoints/retry-event) |
| `GET`  | `/api/v1/projects/{projectId}/listen`                   | [Stream live events](/api-reference/listen) (WebSocket)             |

## Quick example

```bash theme={null}
export HOOKSNODE_API_KEY=...

# Find your project
curl -s https://hooksnode.com/api/v1/projects \
  -H "Authorization: Bearer $HOOKSNODE_API_KEY" | jq '.[] | {id, name}'

# List its latest events
curl -s "https://hooksnode.com/api/v1/projects/<project-id>/events?page_size=5" \
  -H "Authorization: Bearer $HOOKSNODE_API_KEY"
```

## Field names

All responses use `snake_case`. No response holds a signing secret, a password or a destination's extra headers. A source or destination shows `signing_enabled` in place of its secret. Read secrets in the dashboard.

In `GET /api/v1/projects/{projectId}/events/{eventId}`, `event.payload` is JSON, text or base64. `event.payload_encoding` tells you which. In `attempts`, the payload and header fields are base64.

Each endpoint page shows the exact shape.

## Other tools

* The [CLI](/cli/listen) uses this API to send live webhooks to your computer.
* The dashboard uses a separate session-based API. It is not public and can change.
