---
title: "Register a webhook endpoint"
method: POST
path: "/api/v1/webhooks"
tags: ["webhooks"]
---

# Register a webhook endpoint

`POST /api/v1/webhooks`

## Request

- Base URL: `https://index365.co`
- URL: `https://index365.co/api/v1/webhooks`
- Auth: HTTP bearer

Subscribe an https URL to events. The response includes the HMAC signing secret EXACTLY ONCE; verify x-index365-signature (t=<unix>,v1=<hmac-sha256 of '<t>.<body>'>) and reject timestamps older than 5 minutes. Events: run.completed, run.failed

## Request body

- object
  - `url` string, uri, required: https only.
  - `events` string[], required
  - `description` string

## Response `201`

Endpoint created; response carries the one-time secret.

## Other responses

- `400`: invalid_json | validation_failed.
- `401`: Missing/unknown/revoked API key.
- `403`: Key lacks the required scope (error.code=insufficient_scope).
- `409`: limit_reached: max endpoints for this org.
- `429`: Rate limit exceeded (60 req/min per key). Honor Retry-After.

---

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