Jobiflow LogoAPI Docs
ApiWebhooks

Create a webhook subscription

Registers a new webhook endpoint. Jobiflow will send HTTP POST requests to your URL whenever the selected events occur. Requires scope: `webhooks:manage`

POST
/public/v1/webhooks

Registers a new webhook endpoint. Jobiflow will send HTTP POST requests to your URL whenever the selected events occur.

Requires scope: webhooks:manage

Authorization

ApiKeyAuth
X-API-Key<token>

API key issued by Jobiflow. Pass it in the X-API-Key request header.

Create keys via the company dashboard (Settings → API Keys) or via POST /settings/api-keys.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/public/v1/webhooks" \  -H "Content-Type: application/json" \  -d '{    "url": "https://yourapp.example.com/webhooks/jobiflow",    "events": [      "application.created",      "application.status_changed"    ]  }'
{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda",
  "url": "http://example.com",
  "events": [
    "string"
  ],
  "active": true,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "status": 400,
  "error": "BAD_REQUEST",
  "message": "Malformed JSON body",
  "timestamp": "2026-05-17T12:00:00Z",
  "path": "/public/v1/job-listings"
}
{
  "status": 401,
  "error": "UNAUTHORIZED",
  "message": "Invalid or missing API key",
  "timestamp": "2026-05-17T12:00:00Z",
  "path": "/public/v1/job-listings"
}
{
  "status": 403,
  "error": "FORBIDDEN",
  "message": "Scope 'jobs:write' is required",
  "timestamp": "2026-05-17T12:00:00Z",
  "path": "/public/v1/job-listings"
}
{
  "status": 422,
  "error": "VALIDATION_ERROR",
  "message": "Request validation failed",
  "timestamp": "2026-05-17T12:00:00Z",
  "path": "/public/v1/job-listings",
  "details": [
    {
      "field": "position",
      "message": "must not be blank"
    }
  ]
}