Webhooks
Addresses Nifty tells when things change, with a signed POST for each event.
On this page
List webhooks
GET/webhooks
Oldest first. Never includes the secret. Not paged.
curl "$NIFTY_URL/api/v1/webhooks" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Response
200 OK Errors: 401 403 429
{
"data": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Automations",
"url": "https://hooks.example.com/nifty",
"events": [
"task.created"
],
"enabled": true,
"last_delivery": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
null
],
"cc": [
null
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
null
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": null,
"month": null,
"year": null,
"created_at": null,
"updated_at": null
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": null,
"updated_at": null
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": null,
"updated_at": null
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": null,
"platform": "website",
"platform_detected": null,
"label": "Blog",
"created_at": null,
"updated_at": null
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": null,
"updated_at": null
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
]
}
Add a webhook
POST/webhooks
The signing secret is in this response only (Cache-Control: no-store); POST /webhooks/{id}/rotate_secret makes a new one. url and events are required. A blank name takes the
address's host. Ignores Idempotency-Key, so the secret is never stored to replay.
curl -X POST "$NIFTY_URL/api/v1/webhooks" \
-H "Authorization: Bearer $NIFTY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"webhook":{"name":"Automations","url":"https://hooks.example.com/nifty","events":["task.created","task.completed"],"enabled":true}}'
Request body
| Name | Description |
|---|---|
webhookobject | |
webhook.namestring or null · optional | Spaces are squished. Blank on create takes the address's host; blank on update is a 422. |
webhook.urlstring · optional | Required on create. An https:// or http:// address. |
webhook.eventsWebhookEvent[] · optional | Required on create. The events to send; at least one, each once. |
webhook.enabledboolean · optional | False sends nothing (but POST /webhooks/{id}/test). True on create unless sent. |
Response
201 Created Errors: 400 401 403 415 422 429
{
"data": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Automations",
"url": "https://hooks.example.com/nifty",
"events": [
"task.created"
],
"enabled": true,
"last_delivery": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": null,
"content_type": "application/pdf",
"byte_size": null,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z",
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw"
}
}
Get a webhook
GET/webhooks/{id}
curl "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Response
200 OK Errors: 401 403 404 429
{
"data": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Automations",
"url": "https://hooks.example.com/nifty",
"events": [
"task.created"
],
"enabled": true,
"last_delivery": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": null,
"content_type": "application/pdf",
"byte_size": null,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
}
Change a webhook
PATCH/webhooks/{id}
Only the fields sent change. Turning one off (enabled false) sends nothing until it's turned on again; events meanwhile are missed.
curl -X PATCH "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e" \
-H "Authorization: Bearer $NIFTY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"webhook":{"name":"Automations","url":"https://hooks.example.com/nifty","events":["task.created","task.completed"],"enabled":true}}'
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Request body
| Name | Description |
|---|---|
webhookobject | |
webhook.namestring or null · optional | Spaces are squished. Blank on create takes the address's host; blank on update is a 422. |
webhook.urlstring · optional | Required on create. An https:// or http:// address. |
webhook.eventsWebhookEvent[] · optional | Required on create. The events to send; at least one, each once. |
webhook.enabledboolean · optional | False sends nothing (but POST /webhooks/{id}/test). True on create unless sent. |
Response
200 OK Errors: 400 401 403 404 415 422 429
{
"data": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Automations",
"url": "https://hooks.example.com/nifty",
"events": [
"task.created"
],
"enabled": true,
"last_delivery": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": null,
"content_type": "application/pdf",
"byte_size": null,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
}
Remove a webhook
DELETE/webhooks/{id}
Permanent, with its deliveries. Deliveries not yet sent aren't.
curl -X DELETE "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Response
204 Deleted Errors: 401 403 404 429
Make a new signing secret
POST/webhooks/{id}/rotate_secret
Replaces the secret at once: deliveries from now on are signed with the new one, which is in this response
only (Cache-Control: no-store). Takes no body; ignores Idempotency-Key.
curl -X POST "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e/rotate_secret" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Response
200 OK Errors: 401 403 404 415 429
{
"data": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Automations",
"url": "https://hooks.example.com/nifty",
"events": [
"task.created"
],
"enabled": true,
"last_delivery": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": null,
"content_type": "application/pdf",
"byte_size": null,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z",
"secret": "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw"
}
}
Send a test event
POST/webhooks/{id}/test
Sends a test event now, even to a webhook that's off, waiting up to 10 seconds, and returns the delivery
with what came back. A delivery that failed is still a 200, with outcome failed. Takes no body; ignores
Idempotency-Key.
curl -X POST "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e/test" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Response
200 OK Errors: 401 403 404 415 429
{
"data": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": "string",
"content_type": "application/pdf",
"byte_size": 1,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
}
}
List a webhook's deliveries
GET/webhooks/{id}/deliveries
Its newest 50, newest first, with what was sent and what came back. Not paged.
curl "$NIFTY_URL/api/v1/webhooks/01j9zq3k8m5x2v7c4n6b0t1r9e/deliveries" \
-H "Authorization: Bearer $NIFTY_TOKEN"
Path parameters
| Name | Description |
|---|---|
idULID | A record's ID. |
Response
200 OK Errors: 401 403 404 429
{
"data": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"event": "task.created",
"outcome": "pending",
"http_status": 100,
"error": "The address answered 500.",
"duration_ms": 0,
"payload": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"type": "task.created",
"created_at": "2026-10-10T09:30:00Z",
"data": {
"task": {
"planned_start_on": "2026-10-10",
"delays": 0,
"deadline_moves": 0,
"delegated_at": "2026-10-10T09:30:00Z",
"now_since": "2026-10-10T09:30:00Z",
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Book the plumber",
"status": "open",
"start_on": "2026-10-10",
"deadline_on": "2026-10-10",
"expires_on": "2026-10-10",
"completed_at": "2026-10-10T09:30:00Z",
"archived_at": "2026-10-10T09:30:00Z",
"task_list_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"assignee_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"position": 1,
"description_html": "<p>Ask about the boiler too.</p>",
"description_text": "Ask about the boiler too.",
"has_documents": true,
"document_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"expired": true,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"document": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "pdf",
"name": "Boiler warranty",
"dated_on": "2026-10-10",
"dated_on_set": true,
"folder_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"to": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"cc": [
{
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"sent_at": "2026-10-10T09:30:00Z",
"forwarded": true,
"forward_note": "string",
"forwarded_at": "2026-10-10T09:30:00Z",
"has_html": true,
"remote_images": true,
"body_url": "https://example.com",
"attachments": [
{
"filename": null,
"content_type": "application/pdf",
"byte_size": null,
"status": "saved",
"document_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
]
},
"from_email": {
"subject": "string",
"from": {
"name": "Ada Lovelace",
"address": "[email protected]",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
},
"sent_at": "2026-10-10T09:30:00Z",
"forwarded_at": "2026-10-10T09:30:00Z"
},
"note_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"task_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"links": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"note_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"project_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"task_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
}
],
"file": {
"filename": "string",
"byte_size": 1,
"content_type": "application/pdf",
"width": 1,
"height": 1,
"url": "https://example.com",
"download_url": "https://example.com",
"thumbnail_url": "https://example.com"
},
"analysis": {
"status": "reading",
"type": "payslip",
"type_label": "Payslip"
},
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"person": {
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"name": "Maya Okafor",
"aliases": [
"Mum"
],
"is_me": true,
"time_zone": "America/New_York",
"avatar": {
"url": "https://example.com",
"thumb_url": "https://example.com",
"large_url": "https://example.com"
},
"key_dates": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "birthday",
"label": "Graduation",
"day": 1,
"month": 1,
"year": 1,
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"email_addresses": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"address": "[email protected]",
"label": "Work",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"phone_numbers": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"number": "+44 20 7946 0958",
"label": "Mobile",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"social_profiles": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"url": "https://example.com",
"platform": "website",
"platform_detected": true,
"label": "Blog",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"positions": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Head of Design",
"company_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
}
],
"connections": [
{
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"kind": "spouse",
"note": "Met at university"
}
],
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"note": {
"received_via_api": {
"at": "2026-10-10T09:30:00Z",
"source": "Zapier"
},
"id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Coffee with Maya",
"name": "Coffee with Maya",
"title_generated": true,
"category_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"mood": "anxious",
"kind": "meeting",
"kind_source": "owner",
"tag_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"person_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"project_ids": [
"01j9zq3k8m5x2v7c4n6b0t1r9e"
],
"body_html": "<p>Talked about the move.</p>",
"body_text": "Talked about the move.",
"pinned": true,
"pinned_at": "2026-10-10T09:30:00Z",
"event": {
"link_key": "string",
"entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
"title": "Planning",
"all_day": true,
"starts_at": "2026-10-10T09:30:00Z",
"start_on": "2026-10-10",
"linked_at": "2026-10-10T09:30:00Z"
},
"edit_version": 1,
"edited_at": "2026-10-10T09:30:00Z",
"created_at": "2026-10-10T09:30:00Z",
"updated_at": "2026-10-10T09:30:00Z"
},
"previous": {
"deadline_on": "2026-10-10",
"start_on": "2026-10-10"
}
}
},
"response_body": "string",
"created_at": "2026-10-10T09:30:00Z",
"sent_at": "2026-10-10T09:30:00Z"
}
]
}
Deliveries
Each event a webhook asks for is sent at most once, in the background, a few seconds at most
after the change: a JSON WebhookPayload with Content-Type: application/json. There's no retry: an address
that's down, slow (over 10 seconds) or answers other than 2xx misses that event. Redirects aren't followed. The
newest 50 deliveries of each webhook are kept, with what came back (GET /webhooks/{id}/deliveries).
Signatures
Each request is signed as Standard Webhooks sign theirs, so
their libraries check it. The headers are webhook-id (the payload's id), webhook-timestamp (Unix seconds)
and webhook-signature: v1, then the Base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, keyed
with the secret's bytes (the Base64 after whsec_). Compare in constant time, and refuse old timestamps.
Events
Each payload's data holds the record as its GET shows it, under task, document, person or
note:
task.created,task.completed,task.deadline_changedandtask.start_changed(a date added, changed or removed, the old one inprevious),task.expired(archived on passing itsexpires_on). A new task sends onlytask.created, whatever its dates; one change can send several.document.uploaded;document.summarized, once AI has read it (the analysis isGET /documents/{id}/analysis).person.created.note.saved: a note was added or changed. Saves while it's being written are gathered: at most one a minute per note, with the note as it is then.
test is sent only by POST /webhooks/{id}/test. More events will come; ignore types you don't know.
Webhooks are this server's own: they aren't synced, and have no updated_since or deletion records. They need a
token with full access (or a session): a read token gets 403 read_only_token even to list them, as an address
is often a password.