Skip to main content
POST
/
webhook-endpoints
Create webhook endpoint
curl --request POST \
  --url https://api.scripe.io/v1/webhook-endpoints \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Production CRM",
  "url": "https://hooks.example.com/scripe",
  "events": [
    "post.created",
    "job.completed"
  ],
  "projectId": "proj_a1b2c3d4e5f6g7h8"
}
'
{
  "data": {
    "id": "whe_a1b2c3d4e5f6g7h8",
    "url": "https://hooks.example.com/scripe",
    "name": "Production CRM",
    "events": [
      "post.created",
      "job.completed"
    ],
    "isActive": true,
    "disabledReason": "<string>",
    "projectId": "<string>",
    "secretLast4": "<string>",
    "createdAt": "2023-11-07T05:31:56Z",
    "secret": "whsec_4f9d3b6a1e2c8f0d7b5a4e9c2d1f8a3b6c5e0d9f2a1b4c7e8d3f6a5b2c1e0d4f",
    "updatedAt": "2023-11-07T05:31:56Z"
  }
}

Documentation Index

Fetch the complete documentation index at: https://apidocs.scripe.io/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Pass Authorization: Bearer scripe_sk_live_<...> (or scripe_sk_test_<...> for test keys) on every request. Keys are scoped to a single workspace and can be revoked from the Scripe dashboard.

Headers

Scripe-Api-Version
string

Pin the API version. Format YYYY-MM-DD. Omit to receive the currently rolling default. Unknown versions return 400 version_unsupported.

Example:

"2026-08-01"

Idempotency-Key
string

Opaque string (1–64 chars, [A-Za-z0-9_-]) used to dedup retried writes. Within 24h of the first request, the same key

  • same body returns the original response (Idempotent-Replayed: true). Same key + different body returns 409 idempotency_key_conflict.

Strongly recommended for every write — see /docs/api/v1/idempotency.

Pattern: ^[A-Za-z0-9_-]{1,64}$

Body

application/json
name
string
required
Required string length: 1 - 128
Example:

"Production CRM"

url
string<uri>
required
Maximum string length: 1024
Example:

"https://hooks.example.com/scripe"

events
enum<string>[]
required
Minimum array length: 1

Closed list of subscribable events. Adding a new event name is a contract change — bump the docs + this enum in lockstep with the producer.

Available options:
note.created,
post.created,
post.updated,
post.scheduled,
post.unscheduled,
source.created,
job.completed,
job.failed,
knowledge.indexed
Example:
["post.created", "job.completed"]
projectId
string | null

Optional project scope. When set, the endpoint only receives events for that project. null (default) delivers events for every project in the workspace.

Example:

"proj_a1b2c3d4e5f6g7h8"

Response

Endpoint created. Response carries the plaintext secret.

data
object
required

Display-safe shape of a webhook endpoint. The plaintext signing secret is never present here — only secretLast4. Use WebhookEndpointWithSecret (returned by create + rotate) when the plaintext matters.