API reference

27 operations, generated from the same declaration the router dispatches on — so it cannot describe an endpoint that does not exist, or miss one that does. Paste a key to run any of them against your own data.

API reference

Every endpoint below is generated from the router itself, so it cannot drift out of date.

Used only by the “Try it” buttons on this page, in your browser. Create one in Settings → API keys.

Sign in to 360Nook and open Settings → API keys to create one.

POST/v1/contacts/bulkcontacts:write

Create many contacts at once from a pasted list, optionally tagging them all. Use this instead of calling create_contact repeatedly.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
text
tags
Returns: createdskippedtagsreasons
curl -X POST /api/v1/contacts/bulk \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
GET/v1/knowledgeknowledge:read

List what the AI assistant knows about this business.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idquestionanswersourceenabledcreated_at
curl /api/v1/knowledge \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
POST/v1/knowledgeknowledge:write

Teach the AI assistant a question and its answer. Used on chat, email and the phone.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
question
answer
Returns: idquestionanswersourceenabledcreated_at
curl -X POST /api/v1/knowledge \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/pipelinesopportunities:write

Create a pipeline with its stages, in order.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
name
description
stages
Returns: idnamedescriptioncreated_at
curl -X POST /api/v1/pipelines \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
GET/v1/contacts/:id/notescontacts:read

List the notes on a contact, newest first.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idbodycreated_at
curl /api/v1/contacts/:id/notes \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
POST/v1/contacts/:id/notescontacts:write

Add a note to a contact.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
body
Returns: idbodycreated_at
curl -X POST /api/v1/contacts/:id/notes \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
GET/v1/taskstasks:read

List tasks, soonest due first. Completed ones are excluded by default.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

contact_iduuid

Only tasks about this contact.

include_completedstring

Pass "true" to include tasks already done.

Returns: idtitledescriptiondue_atcompletedcontact_idcreated_at
curl /api/v1/tasks \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
POST/v1/taskstasks:write

Create a task, optionally about a contact.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
title
description
due_at
contact_id
Returns: idtitledescriptiondue_atcompletedcontact_idcreated_at
curl -X POST /api/v1/tasks \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/tasks/:id/completetasks:write

Mark a task done.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Returns: idtitlecompletedcreated_at
curl -X POST /api/v1/tasks/:id/complete \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
GET/v1/contactscontacts:read

List contacts, newest first.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

qstring

Case-insensitive search.

Returns: idfirst_namelast_nameemailphonecreated_at
curl /api/v1/contacts \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/opportunitiesopportunities:read

List opportunities, newest first. Deleted ones are excluded.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

pipeline_iduuid

Only opportunities in this pipeline.

Returns: idtitlevaluecurrencypipeline_idstage_idcontact_idcreated_at
curl /api/v1/opportunities \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/pipelinesopportunities:read

List pipelines.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idnamedescriptionis_defaultsort_order
curl /api/v1/pipelines \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/calendarscalendars:read

List calendars. Deleted ones are excluded.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idnameslugtimezoneslot_durationis_active
curl /api/v1/calendars \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/appointmentscalendars:read

List appointments, soonest first.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

calendar_iduuid

Only appointments on this calendar.

Returns: idtitlestarts_atends_atstatuscalendar_idcontact_id
curl /api/v1/appointments \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/conversationsconversations:read

List conversations, most recently active first.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idcontact_idlast_message_atlast_message_previewmessage_countstarred
curl /api/v1/conversations \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/workflowsworkflows:read

List workflows. Deleted ones are excluded.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

limitinteger

How many rows to return, 1–200. Values above 200 are clamped, not rejected.

cursorstring

Continue from a previous page. Pass the next_cursor you were given; treat it as opaque.

Returns: idnamedescriptionactive_enrolledtotal_enrolledlast_run_at
curl /api/v1/workflows \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
POST/v1/workflowsworkflows:write

Create a workflow from a trigger and an ordered list of actions. Created as a draft; publish it in the builder.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
name
description
trigger
trigger_config
steps
Returns: idnamestatuswarnings
curl -X POST /api/v1/workflows \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/contactscontacts:write

Create a contact.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
first_name
last_name
email
phone
Returns: idfirst_namelast_nameemailphonecreated_at
curl -X POST /api/v1/contacts \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
PATCH/v1/contacts/:idcontacts:write

Update a contact. Only the fields you send are changed.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
first_name
last_name
email
phone
Returns: idfirst_namelast_nameemailphonecreated_at
curl -X PATCH /api/v1/contacts/:id \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/opportunitiesopportunities:write

Create an opportunity.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
title
value
currency
pipeline_id
stage_id
contact_id
status
lost_reason
Returns: idtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_at
curl -X POST /api/v1/opportunities \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
PATCH/v1/opportunities/:idopportunities:write

Update an opportunity — move its stage, change its value, win or lose it.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
title
value
currency
pipeline_id
stage_id
contact_id
status
lost_reason
Returns: idtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_at
curl -X PATCH /api/v1/opportunities/:id \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/appointmentscalendars:write

Book an appointment. Availability is checked; a taken slot is refused, not queued.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
calendar_id
starts_at
contact_id
guest_name
guest_email
guest_phone
notes
timezone
status
cancel_reason
Returns: idcalendar_idstarts_atends_atstatuscontact_id
curl -X POST /api/v1/appointments \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
PATCH/v1/appointments/:idcalendars:write

Reschedule an appointment, cancel it, or record whether they showed.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
calendar_id
starts_at
contact_id
guest_name
guest_email
guest_phone
notes
timezone
status
cancel_reason
Returns: idcalendar_idstarts_atends_atstatuscontact_id
curl -X PATCH /api/v1/appointments/:id \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
POST/v1/conversations/messagesconversations:write

Send a message to a contact on email, SMS, WhatsApp or LINE.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Request body (JSON)
contact_id
channel
body
subject
from_name
Returns: idconversation_idchanneldeliveredcode
curl -X POST /api/v1/conversations/messages \
  -H "Authorization: Bearer nook_sk_your_key" \
  -H "Content-Type: application/json" \
  -d '{}'
Paste a key above to run this.
GET/v1/contacts/:idcontacts:read

Fetch one contact.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Returns: idfirst_namelast_nameemailphonecreated_at
curl /api/v1/contacts/:id \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/opportunities/:idopportunities:read

Fetch one opportunity.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Returns: idtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_at
curl /api/v1/opportunities/:id \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
GET/v1/appointments/:idcalendars:read

Fetch one appointment.

ParameterValue
sub_account_iduuid

Act on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it.

Returns: idcalendar_idstarts_atends_atstatuscontact_id
curl /api/v1/appointments/:id \
  -H "Authorization: Bearer nook_sk_your_key"
Paste a key above to run this.
API reference · 360Nook