Nooks · AsyncAPI Specification
Nooks Webhooks
Version
View Spec
View on GitHub
CompanyAISales EngagementSales DialerAI SDROutbound SalesSales CoachingRevenue OperationsSales SequencingCRM IntegrationAgentsMCPAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-14'
method: searched
source: https://developer.nooks.in/openapi.yml
docs: https://nooks.help.usepylon.com/articles/8109690071-Nooks-Webhooks-Integration-Guide
spec_type: OpenAPI-webhooks
asyncapi_published: false
asyncapi_note: >-
Nooks publishes NO AsyncAPI document. Its event surface is declared as an OpenAPI 3.1 top-level
`webhooks:` block in the Sequencing API spec — machine-readable, but not AsyncAPI. Captured here
as a webhook catalog and wired as `type: Webhooks`. No AsyncAPI pointer is wired, and none is
fabricated.
delivery:
transport: HTTP POST
configuration: Integrations → Webhooks in the Nooks workspace
verification_ping: >-
On save Nooks sends an immediate validation ping; the endpoint must answer HTTP 2xx or the
endpoint is not accepted.
signing_key_issuance: >-
A signing key is displayed ONCE on successful setup (form `nooks-webhook-signing-key-...`) —
store it securely; it cannot be retrieved again.
ack_timeout: 15 seconds
ack_status: 2xx
retries: exponential backoff with jitter, up to 8 attempts over 30 minutes
fanout: delivered to every webhook URL configured for the workspace
security:
signature_header: x-webhook-signature
signature_format: 't=<unix-ms>,s=<base64-hmac-sha256>'
algorithm: HMAC-SHA256
signed_payload: '<timestamp>.<raw_request_body>'
encoding: base64
replay_protection: reject requests whose timestamp is older than 5 minutes
comparison: timing-safe comparison required (e.g. crypto.timingSafeEqual)
raw_body_required: true
raw_body_note: >-
Verification must use the literal, unparsed request body — re-serializing the JSON breaks the
signature.
reference_implementations: [Node.js, Python, Ruby]
idempotency:
dedup_key: callData.callId
do_not_use: eventId
note: >-
The guide is explicit: dedupe on `callData.callId`, not `eventId`. A redelivered call produces
the same callId but a NEW eventId, so deduping on eventId will double-process retries.
event_count: 1
events:
- name: call.logged
operationId: callLoggedWebhook
summary: Call logged
description: >-
Fires once a call is fully finalized in Nooks — status, disposition, recording, transcript,
and notes all resolved.
scope: >-
Fires for EVERY call logged in the workspace — inbound and outbound, dialer calls, manually
logged calls, and calls placed from a Nooks sequence.
payload_fields:
- event
- eventId
- occurredAt
- callData
payload_note: >-
callData carries the call record plus nested user, prospect, account, and sequence
attribution objects.
source: openapi/nooks-sequencing-openapi.yml#/webhooks/call.logged
gaps:
note: >-
One event only. Nooks' REST surface covers sequences, sequence states, tasks, emails, and
prospects, but none of those emit webhooks — an integrator polling for sequence enrollment or
task changes has no push option.
x-evidence:
- url: https://developer.nooks.in/openapi.yml
status: 200
- url: https://nooks.help.usepylon.com/articles/8109690071-Nooks-Webhooks-Integration-Guide
status: 200