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

# Fire Webhook Trigger

> Trigger an automation via its webhook endpoint

## Fire Webhook Trigger

Trigger an automation via webhook. The webhook payload will be mapped to application/candidate fields based on the trigger's field mapping configuration.

### Endpoints

```
POST /external/v1/automations/webhooks/{public_id}/fire/
GET  /external/v1/automations/webhooks/{public_id}/fire/
```

### Authentication

> \[!NOTE]
> This endpoint is authenticated via the unique webhook URL (`public_id`) and does **not** require an API key.

### Path Parameters

| Parameter   | Type          | Required | Description                     |
| ----------- | ------------- | -------- | ------------------------------- |
| `public_id` | string (UUID) | Yes      | The webhook trigger's public ID |

### Request Body (POST)

The request body structure depends on the field mapping configuration of the webhook trigger.

```json theme={null}
{
  "candidate": {
    "email": "john@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "phone": "+1234567890",
    "id": "ext_12345"
  },
  "flow_id": "hiring_flow_uuid",
  "custom_fields": {
    "years_experience": "5"
  }
}
```

### Example Request

```bash theme={null}
curl -X POST "https://api.firstwork.com/external/v1/automations/webhooks/a1b2c3d4-e5f6-7890-abcd-ef1234567890/fire/" \
  -H "Content-Type: application/json" \
  -d '{
    "candidate": {
      "email": "john@example.com",
      "first_name": "John",
      "last_name": "Doe"
    },
    "flow_id": "hiring-flow-uuid"
  }'
```

### Responses

#### 202: Accepted

Webhook received and queued for async processing.

#### 400: Bad Request

Automation inactive, empty payload, or validation error.

#### 404: Not Found

Webhook trigger not found.

#### 409: Conflict

Idempotency conflict during concurrent request processing.

#### 429: Too Many Requests

Rate limit exceeded.

#### 503: Service Unavailable

Service temporarily unavailable (rate limiting infrastructure down).

### Notes

* The automation executes asynchronously — the response confirms the trigger was received
* Both GET and POST methods are supported
* The webhook payload fields should match the automation's field mapping configuration
