Digital Agency Tools Docs

Scopes

Every key carries one scope. Scopes nest: admin can do everything write can, and write everything read can.

ScopeAllowsTypical use
readEvery GET: list and retrieve.Reporting, dashboards, exports, a BI tool.
writeread, plus create, update and delete business records.Syncing a CRM, creating tasks from a form, Zapier.
adminwrite, plus managing API keys, webhook endpoints and the business's details.Your own provisioning scripts. Rarely needed.
Choose the narrowest scope that works. A read key cannot form a request that changes anything, which is the point of having one.

Checking a key's scope

GET /v1/me returns the calling key's scope. A request that needs more than the key carries answers 403 forbidden and changes nothing.

Response · 403

{
  "error": {
    "type": "forbidden",
    "message": "This API key does not carry the \"write\" scope."
  },
  "meta": { "request_id": "req_316f1c2a9e0b7d4c" }
}

Endpoints by scope

Generated from the live route table.

read

EndpointWhat it does
GET /v1/pingCheck the API is reachable
GET /v1/meInspect the calling API key
GET /v1/businessRetrieve the business
GET /v1/contactsList contacts
GET /v1/contacts/{id}Retrieve a contact
GET /v1/contacts/{id}/notesList a contact's notes
GET /v1/dealsList deals
GET /v1/deals/forecastPipeline forecast
GET /v1/deals/{id}Retrieve a deal
GET /v1/deal-statusesList pipeline statuses
GET /v1/projectsList projects
GET /v1/projects/{id}Retrieve a project
GET /v1/projects/{id}/milestonesList a project's milestones
GET /v1/projects/{id}/deliverablesList a project's deliverables
GET /v1/projects/{id}/scope-itemsList a project's scope
GET /v1/projects/{id}/requestsList requests to the client
GET /v1/projects/{id}/clientsList the client logins on a project
GET /v1/projects/{id}/updatesList client updates
GET /v1/projects/{id}/portalRetrieve the client portal settings
GET /v1/tasksList tasks
GET /v1/tasks/{id}Retrieve a task
GET /v1/task-statusesList task statuses
GET /v1/task-categoriesList task categories
GET /v1/planner/eventsList planner events
GET /v1/planner/unscheduledList the backlog
GET /v1/meetingsList the calendar (meetings and bookings)
GET /v1/meetings/{id}Retrieve a meeting
GET /v1/meetings/{id}/notesRead a meeting's notes
GET /v1/bookingsList bookings
GET /v1/bookings/{id}Retrieve a booking
GET /v1/availabilityCheck a product's free slots
GET /v1/productsList products
GET /v1/products/{id}Retrieve a product
GET /v1/products/{id}/schedulesList a product's schedules
GET /v1/categoriesList product categories
GET /v1/categories/{id}Retrieve a product category
GET /v1/packagesList packages
GET /v1/packages/{id}Retrieve a package
GET /v1/couponsList coupons
GET /v1/coupons/{id}Retrieve a coupon
GET /v1/coupons/{id}/usageA coupon's redemptions
GET /v1/invoicesList invoices
GET /v1/invoices/{id}Retrieve an invoice
GET /v1/invoices/{id}/line-itemsList an invoice's line items
GET /v1/invoices/{id}/paymentsList an invoice's payments
GET /v1/invoices/{id}/pdfDownload an invoice as PDF
GET /v1/invoices/{id}/pay-linkGet an invoice's pay link
GET /v1/proposalsList proposals
GET /v1/proposals/{id}Retrieve a proposal
GET /v1/proposals/{id}/pdfDownload a proposal as PDF
GET /v1/discoveriesList discoveries
GET /v1/discoveries/{id}Retrieve a discovery
GET /v1/ticketsList tickets
GET /v1/tickets/{id}Retrieve a ticket
GET /v1/tickets/{id}/repliesList a ticket's replies
GET /v1/ticket-categoriesList ticket categories
GET /v1/formsList forms
GET /v1/forms/{id}Retrieve a form
GET /v1/forms/{id}/submissionsList a form's submissions
GET /v1/submissions/{id}Retrieve a submission
GET /v1/subscribersList subscribers
GET /v1/campaignsList campaigns
GET /v1/campaigns/{id}Retrieve a campaign
GET /v1/staffList staff
GET /v1/notificationsList notifications
GET /v1/eventsList webhook event types

write

EndpointWhat it does
POST /v1/contactsCreate a contact
PATCH /v1/contacts/{id}Update a contact
DELETE /v1/contacts/{id}Delete a contact
POST /v1/contacts/{id}/notesAdd a note to a contact
DELETE /v1/contacts/{id}/notes/{note_id}Delete a contact note
PATCH /v1/deals/{id}/statusMove a deal to another status
POST /v1/deal-statusesCreate a pipeline status
PATCH /v1/deal-statuses/{id}Update a pipeline status
DELETE /v1/deal-statuses/{id}Delete a pipeline status
POST /v1/projectsCreate a project
PATCH /v1/projects/{id}Update a project
DELETE /v1/projects/{id}Delete a project
POST /v1/projects/{id}/milestonesAdd a milestone
PATCH /v1/projects/{id}/milestones/{milestone_id}Update a milestone
DELETE /v1/projects/{id}/milestones/{milestone_id}Delete a milestone
POST /v1/projects/{id}/deliverablesAdd a deliverable
PATCH /v1/projects/{id}/deliverables/{deliverable_id}Update a deliverable
DELETE /v1/projects/{id}/deliverables/{deliverable_id}Delete a deliverable
POST /v1/projects/{id}/scope-itemsAdd a scope item
PATCH /v1/projects/{id}/scope-items/{scope_id}Update a scope item
DELETE /v1/projects/{id}/scope-items/{scope_id}Delete a scope item
POST /v1/projects/{id}/requestsAsk the client for something
DELETE /v1/projects/{id}/requests/{request_id}Delete a request
POST /v1/projects/{id}/clientsGive a client login access
DELETE /v1/projects/{id}/clients/{user_id}Remove a client login
POST /v1/projects/{id}/updatesDraft a client update
POST /v1/projects/{id}/updates/{update_id}/sendSend a client update
POST /v1/projects/{id}/portalCreate or regenerate the portal link
POST /v1/tasksCreate a task
PATCH /v1/tasks/{id}Update a task
DELETE /v1/tasks/{id}Delete a task
POST /v1/task-statusesCreate a task status
PATCH /v1/task-statuses/{id}Update a task status
DELETE /v1/task-statuses/{id}Delete a task status
POST /v1/task-categoriesCreate a task category
PATCH /v1/task-categories/{id}Update a task category
DELETE /v1/task-categories/{id}Delete a task category
POST /v1/tasks/{id}/scheduleSchedule a task
DELETE /v1/tasks/{id}/scheduleUnschedule a task
POST /v1/meetingsCreate a meeting
PATCH /v1/meetings/{id}Update a meeting
PUT /v1/meetings/{id}/statusSet a meeting's status
PATCH /v1/meetings/{id}/statusSet a meeting's status (PATCH)
POST /v1/meetings/{id}/notesAdd to a meeting's notes
PATCH /v1/bookings/{id}/statusSet a booking's status
POST /v1/bookings/{id}/payment-linkCreate a payment link for the balance
POST /v1/bookings/{id}/payment-reminderEmail a balance reminder
POST /v1/bookings/{id}/cash-paymentRecord a cash payment
POST /v1/bookings/{id}/refundRefund a booking
POST /v1/productsCreate a product
PATCH /v1/products/{id}Update a product
DELETE /v1/products/{id}Delete a product
PUT /v1/products/{id}/schedulesReplace a product's schedules
POST /v1/categoriesCreate a product category
PATCH /v1/categories/{id}Update a product category
DELETE /v1/categories/{id}Delete a product category
POST /v1/packagesCreate a package
PATCH /v1/packages/{id}Update a package
DELETE /v1/packages/{id}Delete a package
POST /v1/couponsCreate a coupon
PATCH /v1/coupons/{id}Update a coupon
DELETE /v1/coupons/{id}Delete a coupon
POST /v1/invoicesCreate a draft invoice
PATCH /v1/invoices/{id}Update a draft invoice
DELETE /v1/invoices/{id}Delete a draft invoice
POST /v1/invoices/{id}/line-itemsAdd a line item
PATCH /v1/invoices/{id}/line-items/{line_id}Update a line item
DELETE /v1/invoices/{id}/line-items/{line_id}Remove a line item
POST /v1/invoices/{id}/issueIssue an invoice
POST /v1/invoices/{id}/sendEmail an invoice again
POST /v1/invoices/{id}/voidVoid an invoice
POST /v1/invoices/{id}/paymentsRecord a payment
POST /v1/proposalsCreate a proposal
PATCH /v1/proposals/{id}Update a draft proposal
DELETE /v1/proposals/{id}Delete a proposal
POST /v1/proposals/{id}/sendSend a proposal
POST /v1/proposals/{id}/regenerate-linkIssue a new client link
POST /v1/proposals/{id}/convertCreate the project from an accepted proposal
POST /v1/proposals/{id}/deposit-invoiceIssue a deposit invoice
POST /v1/discoveriesCreate a discovery
PATCH /v1/discoveries/{id}Update a discovery
DELETE /v1/discoveries/{id}Delete a discovery
POST /v1/discoveries/{id}/proposalCreate a proposal from the brief
POST /v1/discoveries/{id}/extractExtract a brief with AI
POST /v1/discoveries/{id}/researchWrite research notes with AI
POST /v1/discoveries/{id}/questionsDraft client questions with AI
POST /v1/ticketsOpen a ticket
PATCH /v1/tickets/{id}Update a ticket
DELETE /v1/tickets/{id}Delete a ticket
POST /v1/tickets/{id}/repliesReply to a ticket
POST /v1/subscribersAdd a subscriber
DELETE /v1/subscribers/{id}Remove a subscriber
POST /v1/campaignsCreate a draft campaign
PATCH /v1/campaigns/{id}Update a draft campaign
POST /v1/campaigns/{id}/sendSend a campaign
POST /v1/notifications/read-allMark every notification read
POST /v1/notifications/{id}/readMark a notification read

admin

EndpointWhat it does
PATCH /v1/businessUpdate the business
POST /v1/staff/{id}Add a user to the business
PATCH /v1/staff/{id}Change a staff member's role
DELETE /v1/staff/{id}Remove a user from the business
GET /v1/api-keysList API keys
POST /v1/api-keysCreate an API key
DELETE /v1/api-keys/{id}Revoke an API key
GET /v1/webhook-endpointsList webhook endpoints
POST /v1/webhook-endpointsCreate a webhook endpoint
GET /v1/webhook-endpoints/{id}Retrieve a webhook endpoint
PATCH /v1/webhook-endpoints/{id}Update a webhook endpoint
DELETE /v1/webhook-endpoints/{id}Delete a webhook endpoint
POST /v1/webhook-endpoints/{id}/rotate-secretRotate an endpoint's signing secret
POST /v1/webhook-endpoints/{id}/testSend a test event
GET /v1/webhook-endpoints/{id}/deliveriesList recent deliveries
POST /v1/webhook-endpoints/{id}/deliveries/{delivery_id}/retryRedeliver