curl -X POST \
-H "X-API-Key: $PARTICLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Production",
"url": "https://example.com/particle-webhooks"
}' \
"https://api.particle.pro/v1/projects/{projectId}/webhooks/connections"{
"created_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"project_id": "<string>",
"secret": "<string>",
"secret_prefix": "<string>",
"surface": "PLATFORM",
"url": "<string>",
"created_by": {
"id": "<string>",
"name": "<string>"
},
"name": "<string>",
"revoked_at": "2023-11-07T05:31:56Z"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Create a webhook connection
Creates a webhook connection (a destination URL plus a generated HMAC signing secret) that alerts can target as a WEBHOOK notification channel. The signing secret is returned only in this response — store it securely; it cannot be retrieved again. The URL must be https and must resolve to a public address. Send an Idempotency-Key to retry safely: a retry under the same key returns the same connection and secret instead of creating another.
curl -X POST \
-H "X-API-Key: $PARTICLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Production",
"url": "https://example.com/particle-webhooks"
}' \
"https://api.particle.pro/v1/projects/{projectId}/webhooks/connections"{
"created_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"project_id": "<string>",
"secret": "<string>",
"secret_prefix": "<string>",
"surface": "PLATFORM",
"url": "<string>",
"created_by": {
"id": "<string>",
"name": "<string>"
},
"name": "<string>",
"revoked_at": "2023-11-07T05:31:56Z"
}{
"detail": "Property foo is required but is missing.",
"error_code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"resolve": {
"message": "<string>",
"action": "<string>",
"endpoint": "<string>",
"method": "<string>",
"url": "<string>"
},
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example"
}Authorizations
Pass your API key in the X-API-Key header (recommended).
Headers
A key you choose, such as a UUID, to retry this request safely. Resend the same key with the same request and the first response is returned with Idempotent-Replayed: true instead of the request running again, for 24 hours after it succeeded. The same key with a different request returns 422 idempotency_key_reused; a retry while the first request is still running returns 409 idempotency_key_in_use. A request that fails does not use up its key.
8 - 128Path Parameters
Project ID (base62-encoded).
Body
Response
OK
Signing secret — shown only at create/rotate time. Store it securely; it cannot be retrieved again. Used to verify the X-Webhook-Signature header on delivered payloads.
Masked signing-secret prefix for identification. The full secret is shown only at create/rotate time and cannot be retrieved afterward.
Which Particle surface created this connection. Fixed at create time and inferred from the caller's authenticated surface context. Provenance only — an alert on either surface can deliver through it. Render it to show where the endpoint was registered.
PLATFORM, RADAR Destination URL that signed POSTs are delivered to.
User who created the connection. Null when created via an API key.
Show child attributes
Show child attributes
Optional human label for the connection.
Set when the connection was deleted/revoked; absent for active connections. A revoked connection stops delivering and is skipped by alerts that still reference it.
Was this page helpful?