API reference
80 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.
/v1/contacts/bulkcontacts:writeCreate many contacts at once from a pasted list, optionally tagging them all. Use this instead of calling create_contact repeatedly.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
texttagscreatedskippedtagsreasonscurl -X POST /api/v1/contacts/bulk \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/knowledgeknowledge:readList what the AI assistant knows about this business.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idquestionanswersourceenabledcreated_atcurl /api/v1/knowledge \ -H "Authorization: Bearer nook_sk_your_key"
/v1/conversation-ai-agentsknowledge:writeBuild the Conversation AI agent from past conversations: learns the questions customers ask and the team's answers, then turns the agent on in SUGGESTIVE mode (a person approves every reply).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
conversationsdayschannelsconversationsknowledge_addedchannelsagent_idcurl -X POST /api/v1/conversation-ai-agents \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/knowledgeknowledge:writeTeach the AI assistant a question and its answer. Used on chat, email and the phone.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
questionansweridquestionanswersourceenabledcreated_atcurl -X POST /api/v1/knowledge \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/pipelinesopportunities:writeCreate a pipeline with its stages, in order.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namedescriptionstagesidnamedescriptioncreated_atcurl -X POST /api/v1/pipelines \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/contacts/:id/notescontacts:readList the notes on a contact, newest first.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idbodycreated_atcurl /api/v1/contacts/:id/notes \ -H "Authorization: Bearer nook_sk_your_key"
/v1/contacts/:id/notescontacts:writeAdd a note to a contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
bodyidbodycreated_atcurl -X POST /api/v1/contacts/:id/notes \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/taskstasks:readList tasks, soonest due first. Completed ones are excluded by default.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
contact_iduuidOnly tasks about this contact. | |
include_completedstringPass "true" to include tasks already done. |
idtitledescriptiondue_atcompletedcontact_idcreated_atcurl /api/v1/tasks \ -H "Authorization: Bearer nook_sk_your_key"
/v1/taskstasks:writeCreate a task, optionally about a contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
titledescriptiondue_atcontact_ididtitledescriptiondue_atcompletedcontact_idcreated_atcurl -X POST /api/v1/tasks \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/tasks/:id/completetasks:writeMark a task done.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idtitlecompletedcreated_atcurl -X POST /api/v1/tasks/:id/complete \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/tasks/:idtasks:writeChange a task: its title, description, due date, who it is assigned to, or mark it done / not done.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
titledescriptiondue_atassignee_idcompletedidtitledescriptiondue_atcompletedcontact_idcreated_atcurl -X PATCH /api/v1/tasks/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/tasks/:idtasks:writeDelete a task for good.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idtitlecurl -X DELETE /api/v1/tasks/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/contacts/:idcontacts:writeDelete a contact (and its opportunities). It can be restored from the deleted list.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idfirst_namelast_nameemailcurl -X DELETE /api/v1/contacts/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/opportunities/:idopportunities:writeDelete an opportunity. It can be restored from the deleted list.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idtitlecurl -X DELETE /api/v1/opportunities/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/notes/:idcontacts:writeDelete a note from a contact (or opportunity) for good.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idcontact_idcurl -X DELETE /api/v1/notes/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/companiescontacts:readList companies, newest first. Search by name, domain, email or phone.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idnamedomainemailphonewebsitecreated_atcurl /api/v1/companies \ -H "Authorization: Bearer nook_sk_your_key"
/v1/companiescontacts:writeCreate a company.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namedomainemailphonewebsiteidnamedomainemailphonewebsitecreated_atcurl -X POST /api/v1/companies \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/companies/:idcontacts:writeUpdate a company — only the fields sent change.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namedomainemailphonewebsiteindustrycitycountryidnamedomainemailphonewebsiteindustrycitycountrycurl -X PATCH /api/v1/companies/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/companies/:idcontacts:writeDelete a company. Its contacts stay; it can be restored from the deleted list.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idnamecurl -X DELETE /api/v1/companies/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/couponsproducts:writeCreate a coupon (Payments › Coupons): a percent or fixed discount with a code, optional end date and use limit.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namecodekindvalueends_atmax_usesidnamecodekindvaluecurrencyends_atmax_usescurl -X POST /api/v1/coupons \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/productsproducts:writeCreate a product (Payments › Products) with one price — one-time or recurring.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
titledescriptionkindpricebilling_periodidtitlekindprice_idamountcurrencybilling_periodcurl -X POST /api/v1/products \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/invoicespayments:readList invoices (and estimates), newest first. Filter by status or contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
statusstringdraft, sent, paid, partially_paid, overdue or void. | |
contact_iduuidOnly this contact's invoices. |
idnumbertitlekindstatustotalamount_paidcurrencycontact_iddue_atcreated_atcurl /api/v1/invoices \ -H "Authorization: Bearer nook_sk_your_key"
/v1/productspayments:readList products, newest first. Search by title.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idtitlekindactivecreated_atcurl /api/v1/products \ -H "Authorization: Bearer nook_sk_your_key"
/v1/tagscontacts:readList the contact tags of this sub-account (name, colour, category).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idnamecolorcategorydescriptioncurl /api/v1/tags \ -H "Authorization: Bearer nook_sk_your_key"
/v1/tagscontacts:writeCreate a contact tag (Settings › Tags). An existing tag with the same name is returned as it is.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namecoloridnamecolorcurl -X POST /api/v1/tags \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/custom-fieldscontacts:readList custom fields (contact, opportunity, company or custom object), with their key and type.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
objectstringcontact, opportunity, company or a custom object key. |
idobjectkeylabeltyperequiredcurl /api/v1/custom-fields \ -H "Authorization: Bearer nook_sk_your_key"
/v1/smart-listscontacts:readList saved smart lists (saved contact / opportunity filters).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idobjectnamevisibilitycreated_atcurl /api/v1/smart-lists \ -H "Authorization: Bearer nook_sk_your_key"
/v1/formssites:readList forms, surveys and quizzes, with how many submissions each has.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
kindstringform, survey or quiz. |
idnamekindsubmissionsupdated_atcurl /api/v1/forms \ -H "Authorization: Bearer nook_sk_your_key"
/v1/forms/:id/submissionssites:readList one form's (or survey's) submissions, newest first, with the answers and the contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idcontact_idanswersscorecompletedcreated_atcurl /api/v1/forms/:id/submissions \ -H "Authorization: Bearer nook_sk_your_key"
/v1/campaignsmarketing:readList email / SMS campaigns, newest first, with status, schedule and results (sent, opened, clicked…).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
statusstringdraft, scheduled, sending, sent or paused. |
idnamechannelstatussubjectscheduled_forcompleted_atstatscreated_atcurl /api/v1/campaigns \ -H "Authorization: Bearer nook_sk_your_key"
/v1/social-postsmarketing:readList Social Planner posts, newest first: scheduled, published, failed, drafts and ones waiting for approval.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
statusstringdraft, scheduled, published or failed. |
idcontentstatusapproval_statusscheduled_forpublished_atcreated_atcurl /api/v1/social-posts \ -H "Authorization: Bearer nook_sk_your_key"
/v1/blog-postssites:readList blog posts, newest first, with status, publish date and views.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
statusstringdraft, scheduled or published. |
idtitleslugstatuspublished_atviewscreated_atcurl /api/v1/blog-posts \ -H "Authorization: Bearer nook_sk_your_key"
/v1/sitessites:readList funnels, websites and stores, with their address and whether they are published.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
kindstringfunnel, website or store. |
idnamekindslugcustom_domainis_publishedcreated_atcurl /api/v1/sites \ -H "Authorization: Bearer nook_sk_your_key"
/v1/coursessites:readList courses (memberships), newest first.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idtitlestatuscreated_atcurl /api/v1/courses \ -H "Authorization: Bearer nook_sk_your_key"
/v1/couponspayments:readList coupons with code, discount, uses and end date.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idnamecodekindvaluecurrencyused_countmax_usesends_atactivecurl /api/v1/coupons \ -H "Authorization: Bearer nook_sk_your_key"
/v1/reviewsreputation:readList reviews, newest first, with rating, text, source and whether they were replied to.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
max_ratingintegerOnly reviews at or below this many stars (e.g. 3 for the unhappy ones). |
idauthor_nameratingcommentsourcereplycontact_idcreated_atcurl /api/v1/reviews \ -H "Authorization: Bearer nook_sk_your_key"
/v1/mediasites:readList Media Library files, newest first (name, folder, type, size, address). Search by name.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
folderstringOnly this folder. |
idnamefoldermime_typesize_bytesurlcreated_atcurl /api/v1/media \ -H "Authorization: Bearer nook_sk_your_key"
/v1/phone-numbersconversations:readList this sub-account's phone numbers: name, type, default number, who it rings, forwarding.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
phone_numberfriendly_namenumber_typeis_defaultforwarding_numbercreated_atcurl /api/v1/phone-numbers \ -H "Authorization: Bearer nook_sk_your_key"
/v1/callsconversations:readList recent calls, newest first: direction, from / to, status, duration, outcome, AI summary, contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
contact_iduuidOnly this contact's calls. | |
directionstringinbound or outbound. |
iddirectionfrom_numberto_numberstatusduration_secondsoutcomesummarycontact_idcreated_atcurl /api/v1/calls \ -H "Authorization: Bearer nook_sk_your_key"
/v1/userscontacts:readList the teammates of this sub-account (to assign a contact, task or opportunity to someone).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. |
idnameemailrolecurl /api/v1/users \ -H "Authorization: Bearer nook_sk_your_key"
/v1/contactscontacts:readList contacts, newest first. Filter by search text and/or a tag.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
qstringCase-insensitive search. | |
tagstringOnly contacts carrying this tag (case-insensitive). |
idfirst_namelast_nameemailphonetagscreated_atcurl /api/v1/contacts \ -H "Authorization: Bearer nook_sk_your_key"
/v1/opportunitiesopportunities:readList opportunities, newest first. Deleted ones are excluded.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
pipeline_iduuidOnly opportunities in this pipeline. | |
stage_iduuidOnly opportunities in this stage. | |
statusstringOnly opportunities with this status: open, won, lost or abandoned. |
idtitlevaluecurrencystatuspipeline_idstage_idcontact_idcreated_atcurl /api/v1/opportunities \ -H "Authorization: Bearer nook_sk_your_key"
/v1/pipelinesopportunities:readList pipelines.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idnamedescriptionis_defaultsort_ordercurl /api/v1/pipelines \ -H "Authorization: Bearer nook_sk_your_key"
/v1/calendarscalendars:readList calendars. Deleted ones are excluded.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idnameslugtimezoneslot_durationis_activecurl /api/v1/calendars \ -H "Authorization: Bearer nook_sk_your_key"
/v1/appointmentscalendars:readList appointments, soonest first.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. | |
calendar_iduuidOnly appointments on this calendar. |
idtitlestarts_atends_atstatuscalendar_idcontact_idcurl /api/v1/appointments \ -H "Authorization: Bearer nook_sk_your_key"
/v1/conversationsconversations:readList conversations, most recently active first.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idcontact_idlast_message_atlast_message_previewmessage_countstarredcurl /api/v1/conversations \ -H "Authorization: Bearer nook_sk_your_key"
/v1/workflowsworkflows:readList workflows. Deleted ones are excluded.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
limitintegerHow many rows to return, 1–200. Values above 200 are clamped, not rejected. | |
cursorstringContinue from a previous page. Pass the next_cursor you were given; treat it as opaque. |
idnamedescriptionactive_enrolledtotal_enrolledlast_run_atcurl /api/v1/workflows \ -H "Authorization: Bearer nook_sk_your_key"
/v1/workflowsworkflows:writeCreate a workflow from a trigger and an ordered list of actions. Created as a draft; publish it in the builder.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
namedescriptiontriggertrigger_configstepsidnamestatuswarningscurl -X POST /api/v1/workflows \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/workflows/custom-triggerworkflows:writeFire a custom trigger: every published workflow listening for this event name starts for the contact, with data available as {{trigger.<key>}}.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
eventcontact_idemailphonedataeventcontact_idacceptedcurl -X POST /api/v1/workflows/custom-trigger \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/contactscontacts:writeCreate a contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
first_namelast_nameemailphoneidfirst_namelast_nameemailphonecreated_atcurl -X POST /api/v1/contacts \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/contacts/:idcontacts:writeUpdate a contact — name, email, phone, and add or remove tags. Only the fields you send are changed.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
first_namelast_nameemailphoneadd_tagsremove_tagsidfirst_namelast_nameemailphonetagscreated_atcurl -X PATCH /api/v1/contacts/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/opportunitiesopportunities:writeCreate an opportunity.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
titlevaluecurrencypipeline_idstage_idcontact_idstatuslost_reasonidtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_atcurl -X POST /api/v1/opportunities \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/opportunities/:idopportunities:writeUpdate an opportunity — move its stage, change its value, win or lose it.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
titlevaluecurrencypipeline_idstage_idcontact_idstatuslost_reasonidtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_atcurl -X PATCH /api/v1/opportunities/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/appointmentscalendars:writeBook an appointment. Availability is checked; a taken slot is refused, not queued.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
calendar_idstarts_atcontact_idguest_nameguest_emailguest_phonenotestimezonestatuscancel_reasonidcalendar_idstarts_atends_atstatuscontact_idcurl -X POST /api/v1/appointments \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/appointments/:idcalendars:writeReschedule an appointment, cancel it, or record whether they showed.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
calendar_idstarts_atcontact_idguest_nameguest_emailguest_phonenotestimezonestatuscancel_reasonidcalendar_idstarts_atends_atstatuscontact_idcurl -X PATCH /api/v1/appointments/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/marketplace/billing/chargescharges:writeCharge the account's wallet on one of your app's billing meters: price per unit × units. The same eventId is charged once; no funds → refused, nothing charged.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
meterIdunitspriceeventIduserIddescriptioneventTimeidmeterIdeventIdunitspriceamountcurrencyeventTimerefundedduplicatecurl -X POST /api/v1/marketplace/billing/charges \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/marketplace/appsmarketplace:readApps from the App Marketplace this account can install or already has (search with query) — what to suggest when someone asks for an integration. Respects the agency's Marketplace Settings.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. | |
querystringWords to look for in the app's name, developer or description. |
appsnotecurl /api/v1/marketplace/apps \ -H "Authorization: Bearer nook_sk_your_key"
/v1/marketplace/billing/chargescharges:readYour app's wallet charges on this account (filters: meterId, eventId, userId, startDate, endDate; skip, limit).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
datalimitskipcurl /api/v1/marketplace/billing/charges \ -H "Authorization: Bearer nook_sk_your_key"
/v1/marketplace/billing/charges/has-fundscharges:readWhether the account's wallet has funds for usage charges.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
hasFundsbalancecurrencycurl /api/v1/marketplace/billing/charges/has-funds \ -H "Authorization: Bearer nook_sk_your_key"
/v1/marketplace/billing/charges/:idcharges:readOne of your app's wallet charges.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idmeterIdeventIdunitspriceamountcurrencyeventTimerefundedcurl /api/v1/marketplace/billing/charges/:id \ -H "Authorization: Bearer nook_sk_your_key"
/v1/marketplace/billing/charges/:idcharges:writeDelete (refund) one of your app's wallet charges: the amount goes back to the account's wallet.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
okalreadyRefundedcurl -X DELETE /api/v1/marketplace/billing/charges/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/payments/custom-provider/connectpayments:writeConnect this app's payment gateway on the account: the test and live keys the app uses to recognise our calls.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
testliveokprovidermodecurl -X POST /api/v1/payments/custom-provider/connect \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/payments/custom-provider/connectpayments:readRead this app's gateway config on the account (keys are masked).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
providermodetestlivecurl /api/v1/payments/custom-provider/connect \ -H "Authorization: Bearer nook_sk_your_key"
/v1/payments/custom-provider/disconnectpayments:writeDisconnect this app's gateway from the account.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
liveModeokcurl -X POST /api/v1/payments/custom-provider/disconnect \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/conversations/messages/inboundconversations:writeAdd an inbound message from a conversation provider: an SMS or Email reply it received, or a Call log (inbound or outbound) for an existing contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
typephoneemailsubjectcontact_idmessagedirectionstatusduration_secondsrecording_urlexternal_idcontactIdconversationIdconversationProviderIdcallattachmentsaltIddateokconversation_idmessage_idcall_idcontact_idduplicatecurl -X POST /api/v1/conversations/messages/inbound \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/conversations/messages/outboundconversations:writeAdd an external outbound call log from a Call conversation provider (GHL's payload).
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
typephonecontact_idduration_secondsrecording_urlexternal_idcontactIdconversationIdconversationProviderIdcallattachmentsaltIddateokconversation_idcall_idcontact_idduplicatecurl -X POST /api/v1/conversations/messages/outbound \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/conversations/messages/statusconversations:writeUpdate an outbound message's delivery status (for the conversation provider that carried it).
message_idstatuserroridstatuscurl -X PATCH /api/v1/conversations/messages/status \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/conversations/messagesconversations:writeSend a message to a contact on email, SMS, WhatsApp or LINE.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
contact_idchannelbodysubjectfrom_nameidconversation_idchanneldeliveredcodecurl -X POST /api/v1/conversations/messages \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/contacts/:idcontacts:readFetch one contact.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idfirst_namelast_nameemailphonecreated_atcurl /api/v1/contacts/:id \ -H "Authorization: Bearer nook_sk_your_key"
/v1/opportunities/:idopportunities:readFetch one opportunity.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idtitlevaluecurrencypipeline_idstage_idcontact_idstatuscreated_atcurl /api/v1/opportunities/:id \ -H "Authorization: Bearer nook_sk_your_key"
/v1/appointments/:idcalendars:readFetch one appointment.
| Parameter | Value |
|---|---|
sub_account_iduuidAct on one of your sub-accounts. Agency keys only — a sub-account key is already scoped and does not need it. |
idcalendar_idstarts_atends_atstatuscontact_idcurl /api/v1/appointments/:id \ -H "Authorization: Bearer nook_sk_your_key"
/v1/locationslocations:readList the agency's sub-accounts (GHL: locations). Agency key only.
idnameemailphonewebsiteaddresscitystatecountrypostal_codetimezonepaused_atcreated_atcurl /api/v1/locations \ -H "Authorization: Bearer nook_sk_your_key"
/v1/locations/:idlocations:readOne sub-account. Agency key only.
idnameemailphonewebsiteaddresscitystatecountrypostal_codetimezonepaused_atcreated_atcurl /api/v1/locations/:id \ -H "Authorization: Bearer nook_sk_your_key"
/v1/locationslocations:writeCreate a sub-account (GHL: create location), optionally loading one of the agency's snapshots. Agency key only.
nameemailphonewebsiteaddresscitystatecountrypostal_codetimezonesnapshot_ididnameemailphonewebsiteaddresscitystatecountrypostal_codetimezonepaused_atcreated_atcurl -X POST /api/v1/locations \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/locations/:idlocations:writeUpdate a sub-account's business details. Agency key only.
nameemailphonewebsiteaddresscitystatecountrypostal_codetimezoneidnameemailphonewebsiteaddresscitystatecountrypostal_codetimezonepaused_atcreated_atcurl -X PATCH /api/v1/locations/:id \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/locations/:id/pauselocations:writePause a sub-account (its team is locked out, its workflows go to draft — GHL). Agency key only.
pause_subscriptionsidpaused_atcurl -X POST /api/v1/locations/:id/pause \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/locations/:id/resumelocations:writeResume a paused sub-account (subscriptions and the workflows that were live come back). Agency key only.
idpaused_atcurl -X POST /api/v1/locations/:id/resume \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'/v1/usersusers:readThe agency's users and the sub-accounts each belongs to (GHL: users). Agency key only.
idnameemailphonerolelocationscurl /api/v1/users \ -H "Authorization: Bearer nook_sk_your_key"
/v1/snapshotssnapshots:readThe agency's snapshots (GHL: snapshots). Agency key only.
idnamedescriptioncreated_atcurl /api/v1/snapshots \ -H "Authorization: Bearer nook_sk_your_key"
/v1/snapshots/:id/loadsnapshots:writeLoad one of the agency's snapshots into one of its sub-accounts (GHL: push snapshot). Agency key only.
location_idsnapshot_idlocation_idoutcomescurl -X POST /api/v1/snapshots/:id/load \
-H "Authorization: Bearer nook_sk_your_key" \
-H "Content-Type: application/json" \
-d '{}'