(alle endpoints)Standard svar-struktur
GET list: { data, page, limit, total }. GET single: { data }. POST: { data: { _id } }. PUT/PATCH/DELETE: { ok: true }. Fejl: { error }.
394 dokumenterede endpoints. Base URL: https://app.salesbase.dk/api/v1. Maskinlæsbar JSON: /api/v1/docs?full=true.
Alle endpoints returnerer JSON med konsistent struktur.
(alle endpoints)GET list: { data, page, limit, total }. GET single: { data }. POST: { data: { _id } }. PUT/PATCH/DELETE: { ok: true }. Fejl: { error }.
Integration endpoints use a workspace API key (Bearer sb_…). API keys are created in the Salesbase app under Settings → Workspace → Automation → API Keys. Mobile app endpoints (voice, notifications, timers, assistant, devices, workspaces switch) require JWT login and are not part of this integration reference.
(alle endpoints)Authorization: Bearer <YOUR_API_KEY>. Nøgler starter med sb_.
(alle endpoints)120 requests per minute, 50,000 requests per day. HTTP 429 ved overskridelse.
Create companies, people, leads, and deals in one request. Ideal for form submissions and integrations.
/api/v1/inboundCreate or find-and-update company/person/lead/deal from a single payload. Supports JSON, form-urlencoded, and Elementor webhook formats.
Request body
{
"companyName": {
"type": "string",
"description": "Company name (for company lookup/creation)"
},
"companyCvr": {
"type": "string",
"description": "Danish CVR number (for exact company match)"
},
"companyEmail": {
"type": "string"
},
"companyPhone": {
"type": "string"
},
"personFirstName": {
"type": "string"
},
"personLastName": {
"type": "string"
},
"personEmail": {
"type": "string"
},
"personPhone": {
"type": "string"
},
"personTitle": {
"type": "string"
},
"leadTitle": {
"type": "string",
"description": "Lead title (auto-generated if not provided)"
},
"leadSource": {
"type": "string"
},
"leadStatus": {
"type": "string"
},
"leadNotes": {
"type": "string"
},
"dealTitle": {
"type": "string"
},
"dealValue": {
"type": "number"
},
"dealFlowId": {
"type": "string",
"description": "Pipeline ID"
},
"dealStageId": {
"type": "string",
"description": "Stage ID within pipeline"
},
"customFields": {
"type": "object",
"description": "Key-value pairs for custom fields"
},
"tags": {
"type": "string[]",
"description": "Array of tag names to apply"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/inbound' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/inboundReturns API documentation for the inbound endpoint
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/inbound' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Identity for the authenticated API key or MCP session.
/api/v1/whoamiReturn workspace name, user name, API key prefix, and effective scopes for the current session. Any valid key or MCP token works (no extra scope required). MCP clients should call this first.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/whoami' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/docsAPI documentation index or a section. Query: section, subsection, type, index=true, full=true. No authentication required.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/docs' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/docs/markdownFull API documentation as Markdown.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/docs/markdown' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/searchSearch across CRM entities, projects, offers, and tasks
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| q | string | Ja | Search query (minimum 2 characters) |
| types | string | Nej | Comma-separated entity types: company,person,lead,deal,support-ticket,project,offer,task (default: all) |
| limit | number | Nej | Max results per entity type (max 50) |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/cvr/matchMatch a Danish CVR company by LinkedIn URL, domain, or exact name (Chrome extension).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| string | Nej | ||
| domain | string | Nej | |
| name | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/cvr/match' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/contributionGet workspace Bidrag til Salesbase-data status.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/extension/contribution' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/contributionAdmin: enable or disable contribution.
Request body
{
"enabled": {
"type": "boolean",
"required": true
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/extension/contribution' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/observationsIngest observation batches (contribute scope).
Request body
{
"observations": {
"type": "array",
"required": true
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/extension/observations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/captures/presignPresign S3 uploads for a page capture (contribute scope).
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/extension/captures/presign' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/networkGive-to-get network contacts and signals (contributing workspaces only).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| string | Nej | ||
| handle | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/extension/network' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/extension/domainsKnown company domains for the extension local filter.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/extension/domains' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companiesList companies. view=full returns stored fields including integration ids (ordrestyringCustomerNumber, economicCustomerNumber, …). fields= projects any schema field at Mongo. limit max 500. MCP defaults to view=summary.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| q | string | Nej | |
| view | string | Nej | |
| fields | string | Nej | Comma-separated stored field names |
| updatedSince | string | Nej | |
| dateFrom | string | Nej | |
| dateTo | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/lookupLook up a company by LinkedIn URL or website domain (Chrome extension).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| string | Nej | ||
| domain | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/lookup' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companiesCreate a company
Request body
{
"name": {
"type": "string",
"required": true
},
"cvr": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"zip": {
"type": "string"
},
"country": {
"type": "string"
},
"website": {
"type": "string"
},
"industry": {
"type": "string"
},
"employees": {
"type": "number"
},
"customFields": {
"type": "array"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/companies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:idGet company by ID. Optional fields= query projects stored fields (including integration ids).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| fields | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:idUpdate company. May set website, avatar (logo) and logoUrl. avatar/logoUrl accept an https image URL (re-hosted as a workspace image) or a data:image/...;base64 URL (max 2 MB). customFields is a partial key→value merge (definitions: GET /api/v1/custom-fields?entityType=company).
Request body
{
"website": {
"type": "string"
},
"avatar": {
"type": "string",
"description": "Image URL (re-hosted as a workspace image), data:image/...;base64 URL (max 2 MB), or empty to clear"
},
"logoUrl": {
"type": "string",
"description": "Image URL (re-hosted as a workspace image), data:image/...;base64 URL (max 2 MB), or empty to clear"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/companies/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:idDelete company
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/companies/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/find-web-presenceFind and fill empty website, logo/avatar and LinkedIn from CVR, the company e-mail domain and a web search (page verified by name or CVR). Same as CRM action Find hjemmeside og logo. Does not overwrite filled fields. Response data.status: updated | already_filled | not_found; data.hint says what to do next when nothing was found.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/companies/{id}/find-web-presence' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/peopleList people connected to company
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/{id}/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/dealsList deals connected to company
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/{id}/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/activitiesList activities for company
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/{id}/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/activity-feedUnified activity feed for company
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/companies/{id}/activity-feed' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/peopleLink person to company
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/companies/{id}/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/companies/:id/peopleUnlink person from company
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/companies/{id}/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/peopleList people. view=full returns stored fields including integration ids. fields= projects any schema field at Mongo. limit max 500. MCP defaults to view=summary.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/lookupLook up a person by LinkedIn URL (Chrome extension).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| string | Ja |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/lookup' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/peopleCreate a person
Request body
{
"firstName": {
"type": "string",
"required": true
},
"lastName": {
"type": "string"
},
"emails": {
"type": "array",
"description": "[{ email, label }]"
},
"phones": {
"type": "array",
"description": "[{ phone, label }]"
},
"title": {
"type": "string"
},
"companyId": {
"type": "string"
},
"customFields": {
"type": "array"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:idGet person by ID. Optional fields= query.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| fields | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:idUpdate person. May set avatar: an https image URL (re-hosted as a workspace image) or a data:image/...;base64 URL (max 2 MB). customFields is a partial key→value merge (definitions: GET /api/v1/custom-fields?entityType=person).
Request body
{
"avatar": {
"type": "string",
"description": "Image URL (re-hosted as a workspace image), data:image/...;base64 URL (max 2 MB), or empty to clear"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/people/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:idDelete person
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/people/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:id/find-avatarFind and fill an empty avatar from public sources (Gravatar, LinkedIn, company site). Same as CRM action Find billede. Does not overwrite an existing avatar. Response data.status: updated | already_filled | not_found, plus data.hint.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/people/{id}/find-avatar' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:id/companiesList companies connected to person
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/{id}/companies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:id/dealsList deals connected to person
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/{id}/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:id/activitiesList activities for person
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/{id}/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/people/:id/activity-feedUnified activity feed for person
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/people/{id}/activity-feed' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leadsList leads. view=full returns stored documents. fields= projects any schema field. limit max 500. MCP defaults to view=summary.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| status | string | Nej | |
| source | string | Nej | |
| search | string | Nej | |
| view | string | Nej | |
| fields | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/leads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leadsCreate a lead. Score and scoreBreakdown are calculated automatically from active lead-scoring rules after create (do not rely on a client-supplied score). Score 0 with empty breakdown means no active rules matched; configure rules via GET/POST /api/v1/lead-scoring/rules.
Request body
{
"title": {
"type": "string",
"required": true
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"status": {
"type": "string"
},
"source": {
"type": "string"
},
"score": {
"type": "number",
"description": "Ignored for scoring: server recalculates from rules after create"
},
"value": {
"type": "number"
},
"notes": {
"type": "string"
},
"companyRef": {
"type": "string",
"description": "Company ID"
},
"personRef": {
"type": "string",
"description": "Person ID"
},
"customFields": {
"type": "object"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/leads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leads/:idGet lead by ID (includes score and scoreBreakdown from the last automatic calculation)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/leads/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leads/:idUpdate lead. customFields is a partial key→value merge (definitions: GET /api/v1/custom-fields?entityType=lead). Score is recalculated automatically after update from active lead-scoring rules; score 0 means no rules matched.
Request body
{
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/leads/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leads/:idDelete lead
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/leads/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leads/:id/activity-feedUnified activity feed for lead
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/leads/{id}/activity-feed' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/leads/:id/activitiesList activities for lead
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/leads/{id}/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dealsList deals. Unknown query params return 400. Use view=summary for slim payloads; updatedSince for incremental sync.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| q | string | Nej | |
| status | string | Nej | |
| flowId | string | Nej | Pipeline id (alias: flowRef) |
| stageId | string | Nej | Stage id/number (alias: stage) |
| ownerId | string | Nej | Owner user id (alias: owner) |
| sortBy | string | Nej | title|value|updatedAt|createdAt|status|lostDate|wonDate|stage |
| sortOrder | string | Nej | |
| view | string | Nej | |
| fields | string | Nej | |
| updatedSince | string | Nej | ISO — updatedAt >= |
| createdAfter | string | Nej | |
| dateFrom | string | Nej | createdAt >= (aliases: startDate, from) |
| dateTo | string | Nej | createdAt <= (aliases: endDate, to) |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dealsCreate a deal
Request body
{
"title": {
"type": "string",
"required": true
},
"value": {
"type": "number"
},
"flowId": {
"type": "string"
},
"stageId": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"probability": {
"type": "number"
},
"company": {
"type": "string",
"description": "Company ID"
},
"personRef": {
"type": "string",
"description": "Person ID"
},
"leadRef": {
"type": "string",
"description": "Lead ID"
},
"customFields": {
"type": "object"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:idGet deal by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/deals/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:idUpdate deal (logs field/stage changes to activity feed, same as UI). customFields is a partial key→value merge (definitions: GET /api/v1/custom-fields?entityType=deal).
Request body
{
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/deals/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:idDelete deal
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/deals/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:id/moveMove deal to a different stage
Request body
{
"stageId": {
"type": "string",
"required": true
},
"flowId": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/deals/{id}/move' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:id/activitiesList activities for deal
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/deals/{id}/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/deals/:id/activity-feedUnified activity feed for deal
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/deals/{id}/activity-feed' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Aktiviteter / activity feed — list and create feed rows (noter, opkald, deals m.m.)
/api/v1/activitiesList activities (aktiviteter). Unknown query params return 400.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| type | string | Nej | |
| companyId | string | Nej | |
| personId | string | Nej | |
| dealId | string | Nej | |
| leadId | string | Nej | |
| dateFrom | string | Nej | Activity date >= (aliases: startDate, from) |
| dateTo | string | Nej | Activity date <= (aliases: endDate, to) |
| updatedSince | string | Nej | |
| createdAfter | string | Nej | |
| view | string | Nej | |
| q | string | Nej | |
| ownerId | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/activitiesCreate activity / aktivitet (creates a feed row). Body: type (required), summary or title, description, companyId/personId/dealId/leadId, entityType+entityId, noteRef, date, metadata
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/activities' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/activities/:idGet activity by ID (aktivitet)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/activities/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/tasksList tasks. Coarse status is to_do, in_progress, blocked, or done (not open or cancelled). The task list Status column and done checkbox follow stage from GET /api/v1/task-flow.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| status | string | Nej | |
| priority | string | Nej | |
| ownerId | string | Nej | Assignee (aliases: owner, assignee) |
| project | string | Nej | |
| q | string | Nej | |
| view | string | Nej | |
| updatedSince | string | Nej | |
| dateFrom | string | Nej | |
| dateTo | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/tasksCreate a task (Mine opgaver or project task). Requires title plus exactly one parent: project, customObjectRecord (+ customObjectSlug), company, personRef, leadRef, or dealRef. Field name is company (not companyRef).
Request body
{
"title": {
"type": "string",
"required": true
},
"project": {
"type": "string",
"description": "Project ID (omit when linking only to company/person/lead/deal)"
},
"customObjectRecord": {
"type": "string",
"description": "Custom object record ID; requires customObjectSlug"
},
"customObjectSlug": {
"type": "string"
},
"company": {
"type": "string",
"description": "Company ID (standalone task on company; not companyRef)"
},
"personRef": {
"type": "string",
"description": "Person ID (standalone task on person)"
},
"leadRef": {
"type": "string",
"description": "Lead ID"
},
"dealRef": {
"type": "string",
"description": "Deal ID"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"to_do",
"in_progress",
"blocked",
"done"
]
},
"priority": {
"type": "string"
},
"assignees": {
"type": "string[]",
"description": "User IDs; defaults to API caller"
},
"deadline": {
"type": "string",
"description": "ISO date"
},
"tags": {
"type": "string[]"
},
"customFields": {
"type": "object"
},
"estimatedHours": {
"type": "number"
},
"taskValue": {
"type": "number"
},
"owner": {
"type": "string",
"description": "User ID; defaults to API caller"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/tasks/:idGet task
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/tasks/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/tasks/:idUpdate task. status done also sets stage to completedStageId from GET /api/v1/task-flow. stage sets status. The list Status column and done checkbox read stage.
Request body
{
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"to_do",
"in_progress",
"blocked",
"done"
],
"description": "Coarse status. done moves stage to the flow completedStageId so the list and checkbox show Færdig."
},
"stage": {
"type": "number",
"description": "Task-flow stage id from GET /api/v1/task-flow. Wins over status when both are sent. completedStageId marks the task done."
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"assignees": {
"type": "string[]"
},
"deadline": {
"type": "string",
"description": "ISO date"
},
"tags": {
"type": "string[]"
},
"estimatedHours": {
"type": "number"
},
"taskValue": {
"type": "number"
},
"owner": {
"type": "string",
"description": "User ID"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge. Definitions: GET /api/v1/project-custom-fields?entityType=task"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/tasks/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/tasks/:idDelete task
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/tasks/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/notesList notes. Supports q search; unknown params → 400.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| q | string | Nej | |
| personRef | string | Nej | |
| company | string | Nej | |
| leadRef | string | Nej | |
| dealRef | string | Nej | |
| dateFrom | string | Nej | |
| dateTo | string | Nej | |
| updatedSince | string | Nej | |
| createdAfter | string | Nej | |
| view | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/notes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/notesCreate note (also creates linked activity for Noter tab / activity feed). Requires entity ref: company, personRef, leadRef, dealRef, or customObjectRecord
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/notes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/notes/:idGet note
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/notes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/notes/:idUpdate note (syncs linked activity)
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/notes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/notes/:idDelete note (removes linked activity)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/notes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/callsList calls
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/calls' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/callsCreate call record (also creates call activity in feed)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/calls' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calls/:idGet call by ID including transcriptText, transcriptSummary, and slim conversation turns (speaker/text/timing). Recording download URLs are JWT/session-only.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/calls/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calls/:idUpdate call (syncs linked activity)
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/calls/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calls/:idDelete call (removes linked activity)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/calls/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/eventsList events
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/events' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/eventsCreate event
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/events' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/events/:idGet event
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/events/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/events/:idUpdate event
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/events/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/events/:idDelete event
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/events/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Three field systems: (1) CRM defs via /api/v1/custom-fields for lead/deal/company/person (and support ticket values via entity PUT). (2) Project/task defs via GET /api/v1/project-custom-fields. (3) Custom object fields via GET /api/v1/custom-objects/:slug. Entity values: PUT customFields:{key:value} on the entity (partial merge). Custom object values: PATCH record with field-slug keys (or customFields alias).
/api/v1/custom-fieldsList CRM custom field definitions (lead, deal, company, person)
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| entityType | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-fields' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fieldsCreate custom field definition
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-fields' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fields/:idGet custom field
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-fields/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fields/:idUpdate custom field
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/custom-fields/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fields/:idDelete custom field
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/custom-fields/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fields/searchSearch entities by custom field values
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-fields/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-fields/searchReturns search endpoint documentation
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-fields/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/project-custom-fieldsList project/task custom field definitions (CustomFieldDefinition). Use keys when setting customFields on project/task PUT.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| entityType | string | Nej | Optional filter |
| forCreateDialog | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/project-custom-fields' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flowsList pipelines
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/flows' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flowsCreate pipeline
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/flows' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:idGet pipeline
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/flows/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:idUpdate pipeline
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/flows/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:idDelete pipeline
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/flows/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:id/stagesCreate stage in pipeline
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/flows/{id}/stages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:id/stagesUpdate stage
Request body
{
"id": {
"type": "string",
"required": true
},
"title": {
"type": "string"
},
"order": {
"type": "number"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/flows/{id}/stages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/flows/:id/stagesDelete stage
Request body
{
"id": {
"type": "string",
"required": true
}
}Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/flows/{id}/stages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Custom AI agents. They do not own a cron. Start them from Automations with the Kør agent action. Schedule on create/update is always Via automation.
/api/v1/agentsList AI agents in the workspace
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/agents' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/agentsCreate an AI agent. Enable it, then start it from an automation.
Request body
{
"name": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"goal": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"icon": {
"type": "string"
},
"modelTier": {
"type": "string",
"description": "fast, balanced or thorough"
},
"enabled": {
"type": "boolean"
},
"permissions": {
"type": "object",
"description": "trustLevel, allowedModules, webAccess, maxActionsPerRun, maxDailyActions"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/agents' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/agents/:idGet one AI agent
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/agents/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/agents/:idReplace agent fields
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/agents/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/agents/:idUpdate agent fields
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/agents/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/agents/:idDelete an AI agent and its runs
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/agents/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/listsList all lists
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/lists' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/listsCreate list
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/lists' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:idGet list
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/lists/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:idUpdate list
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/lists/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:idDelete list
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/lists/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:id/itemsList items in a list
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/lists/{id}/items' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:id/itemsAdd items to list
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/lists/{id}/items' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lists/:id/itemsRemove items from list
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/lists/{id}/items' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'List and send mailbox emails. Single send uses html and/or text (not bodyHtml). Bulk send is POST /api/v1/emails/bulk (queues by default). There is no signatureId on send: fetch a signature via GET /api/v1/email-signatures and inline its HTML into html.
/api/v1/emailsList emails with inbox account access enforced. Unknown query params return 400. Use view=summary for slim payloads.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/emails' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emailsSend one email from a connected mailbox. Required: accountId, to, subject; html and/or text for content. bodyHtml is rejected on single send. No signatureId: inline signature HTML in html.
Request body
{
"accountId": {
"type": "string",
"required": true,
"description": "Connected email account ID (GET /api/v1/email-accounts)"
},
"to": {
"type": "string|string[]",
"required": true,
"description": "Recipient address or list of addresses"
},
"subject": {
"type": "string",
"required": true
},
"html": {
"type": "string",
"description": "HTML body. Preferred for rich mail. Not bodyHtml (templates only on single send)."
},
"text": {
"type": "string",
"description": "Plain-text body (optional; use with or instead of html)"
},
"cc": {
"type": "string|string[]",
"description": "CC recipients"
},
"bcc": {
"type": "string|string[]",
"description": "BCC recipients"
},
"linkPersonId": {
"type": "string",
"description": "Link sent message to person"
},
"linkCompanyId": {
"type": "string",
"description": "Link sent message to company"
},
"linkDealId": {
"type": "string",
"description": "Link sent message to deal"
},
"trackOpens": {
"type": "boolean",
"description": "Enable open tracking when supported"
},
"replyToMessageId": {
"type": "string",
"description": "Existing message ID when this send is a reply"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/emails' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emails/bulkBulk email. Requires write scope, email.create, and admin/owner. Queues by default (process-email-queue cron). Set immediate=true for sync send (max 10). Max 500 recipients. Prefer html/text; bodyHtml is accepted as an html alias here.
Request body
{
"accountId": {
"type": "string",
"required": true,
"description": "Connected email account ID"
},
"subject": {
"type": "string",
"required": true
},
"html": {
"type": "string",
"description": "Shared HTML body (alias: bodyHtml)"
},
"text": {
"type": "string",
"description": "Shared plain-text body"
},
"recipients": {
"type": "array",
"required": true,
"description": "Email strings and/or { email, name?, personId?, companyId?, personalizedSubject?, personalizedHtml? } (to is accepted as email alias)"
},
"trackOpens": {
"type": "boolean"
},
"immediate": {
"type": "boolean",
"description": "If true and recipients <= 10, send synchronously; otherwise queue"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/emails/bulk' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emails/:idGet email by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/emails/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emails/:id/calendar-inviteGet calendar invite for email
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/emails/{id}/calendar-invite' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emails/:id/calendar-inviteRSVP to calendar invite
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/emails/{id}/calendar-invite' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/emails/threads/:threadIdGet email thread
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/emails/threads/:threadId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-accountsList connected email accounts
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/email-accounts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Create and manage email templates. Send bodyHtml (+ optional bodyCss and layoutSettings); Salesbase renders the full document. compiledHtml is accepted as a legacy full-document input. Supports {{contact.*}} placeholders and default filter syntax {{field | default:"fallback"}}.
/api/v1/email-templatesList email templates
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/email-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-templatesCreate email template (admin scope)
Request body
{
"name": {
"type": "string",
"required": true
},
"category": {
"type": "string",
"enum": [
"marketing",
"transactional",
"reminder",
"follow-up",
"notification",
"quote",
"newsletter",
"other"
],
"description": "Invalid values return 400 (not 500). Default when omitted: other."
},
"bodyHtml": {
"type": "string",
"description": "Body content with {{placeholders}} (preferred; no document wrapper)"
},
"bodyCss": {
"type": "string",
"description": "Optional CSS rules for bodyHtml"
},
"compiledHtml": {
"type": "string",
"description": "Legacy: full HTML document with {{placeholders}}"
},
"plainText": {
"type": "string"
},
"metadata": {
"type": "object",
"description": "{ subject, preheader }"
},
"layoutSettings": {
"type": "object",
"description": "width (full|fixed), align (left|center|right, fixed only), containerWidth, textAlign, padding*, backgroundColor, outerBackground, fullWidthBackground. Deprecated aliases accepted: layoutMode (minimal|styled), useTableWrapper, containerAlign, outerBackgroundColor"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/email-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-templates/:idGet template by ID (includes bodyHtml, bodyCss, compiledHtml, layoutSettings, projectData)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/email-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-templates/:idUpdate template (admin scope)
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/email-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-templates/:idDelete template (admin scope)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/email-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Requires API key scope `sms` (not covered by `write` alone). Message text field is body (aliases message and text). Sender field is fromNumber (alias from). Bulk send queues by default.
/api/v1/smsList SMS messages. Unknown query params return 400. Use view=summary for slim payloads. Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/smsSend one SMS. Requires scope: sms. Canonical body fields: to, body; optional fromNumber, linkPersonId, linkCompanyId, linkDealId.
Request body
{
"to": {
"type": "string",
"required": true,
"description": "Recipient phone (E.164 preferred)"
},
"body": {
"type": "string",
"required": true,
"description": "Plain-text SMS. Aliases: message, text. Not html/bodyHtml."
},
"fromNumber": {
"type": "string",
"description": "Workspace Twilio number (alias: from). Defaults to workspace default."
},
"linkPersonId": {
"type": "string"
},
"linkCompanyId": {
"type": "string"
},
"linkDealId": {
"type": "string"
},
"isAlphanumericSender": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sms' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/:idGet SMS by ID (Mongo ObjectId). Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/:idUpdate SMS flags (unread, starred). Requires scope: sms.
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/sms/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/conversationsList SMS conversation threads (one row per counterparty phone). Alias of /sms/threads. Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms/conversations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/threadsList SMS conversation threads (same as /sms/conversations). Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms/threads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/bulkBulk SMS. Requires scope: sms and admin/owner. Queues by default (process-sms-queue cron). Set immediate=true for sync send (max 50). Max 100 recipients.
Request body
{
"body": {
"type": "string",
"required": true,
"description": "Shared SMS text. Aliases: message, text."
},
"recipients": {
"type": "array",
"required": true,
"description": "Phone strings and/or { phone, personId?, companyId? } objects (to is accepted as phone alias)"
},
"fromNumber": {
"type": "string",
"description": "Alias: from"
},
"immediate": {
"type": "boolean",
"description": "If true and recipients <= 50, send synchronously; otherwise queue"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sms/bulk' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/scheduleSchedule SMS for later. Requires scope: sms.
Request body
{
"to": {
"type": "string",
"required": true
},
"body": {
"type": "string",
"required": true,
"description": "Aliases: message, text"
},
"scheduledAt": {
"type": "string",
"required": true,
"description": "Future ISO datetime"
},
"fromNumber": {
"type": "string",
"description": "Alias: from"
},
"linkPersonId": {
"type": "string"
},
"linkCompanyId": {
"type": "string"
},
"linkDealId": {
"type": "string"
},
"isAlphanumericSender": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sms/schedule' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/scheduledList scheduled SMS. Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms/scheduled' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/scheduled/:idCancel scheduled SMS. Requires scope: sms.
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/sms/scheduled/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/threads/:phoneNumberGet SMS thread by phone number (messages + resolved contact). Requires scope: sms.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms/threads/:phoneNumber' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms/threads/:phoneNumberMark inbound unread messages in the thread as read. Body: { unread: false }. Requires scope: sms.
Request body
{
"unread": {
"type": "boolean",
"description": "Set false to mark read"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/sms/threads/:phoneNumber' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sms-templatesList SMS templates
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sms-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Subscribe to CRM events via outbound webhooks. See the Webhooks section for available events.
/api/v1/webhooks/subscriptionsList webhook subscriptions
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/webhooks/subscriptions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptionsCreate webhook subscription
Request body
{
"url": {
"type": "string",
"required": true
},
"events": {
"type": "string[]",
"required": true,
"description": "Array of event names to subscribe to"
},
"name": {
"type": "string"
},
"active": {
"type": "boolean",
"default": true
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/webhooks/subscriptions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idGet subscription (secret masked)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idUpdate subscription
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idDelete subscription
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/zapierZapier inbound webhook — creates person, lead, and deal in one request (Bearer API key)
Request body
{
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"leadTitle": {
"type": "string"
},
"dealTitle": {
"type": "string"
},
"dealValue": {
"type": "number"
},
"source": {
"type": "string",
"default": "zapier"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/webhooks/zapier' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Lookup and connect CRM data with external systems
/api/v1/crm-connect/lookupLook up entity by phone/email
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/crm-connect/lookup' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/crm-connect/callsLog or connect call events for integration
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/crm-connect/calls' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Workspace sender profile and offer defaults used by {{company.*}} and {{bank.*}} placeholders, plus communication, numbering, units, and contract defaults. PATCH merges nested objects and replaces arrays. Write requires a workspace admin or owner (write scope). Products, offer types, templates, and offers are separate resources.
/api/v1/workspace/offer-settingsRead workspace offer settings. Creates defaults on first read.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/workspace/offer-settings' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/workspace/offer-settingsUpdate companyInfo (name, cvr, address.street/postalCode/city, phone, email, website, logo), bankInfo (bankName, registrationNumber, accountNumber, iban, swift), defaults, branding, emailSettings, smsSettings, acceptanceSettings, trackingSettings, sequenceSettings, orderConfirmationSettings, numbering, contractSettings, defaultTerms, defaultPaymentTerms, lineItemUnits, billingFrequencies, setupCompleted. Admin or owner.
Request body
{
"companyInfo": {
"type": "object",
"description": "Sender profile. Maps to {{company.name}}, {{company.cvr}}, {{company.phone}}, {{company.email}}, {{company.street}}, {{company.postalCode}}, {{company.city}}, {{company.logo}}"
},
"bankInfo": {
"type": "object",
"description": "bankName, registrationNumber, accountNumber, iban, swift. Maps to {{bank.name}}, {{bank.reg}}, {{bank.account}}, {{bank.iban}}, {{bank.swift}}"
},
"defaults": {
"type": "object",
"description": "vatRate, currency, defaultValidityDays, paymentTerms, defaultTemplateId, defaultOfferTypeId"
},
"numbering": {
"type": "object",
"description": "{ prefix, nextNumber }"
},
"lineItemUnits": {
"type": "array",
"description": "[{ value, label, sortOrder }]. Replaces the list."
},
"billingFrequencies": {
"type": "array",
"description": "Replaces workspace billing periods."
}
}Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/workspace/offer-settings' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Create draft offers linked to offer types and templates. The visual layout comes from the template (native elements, not a HTML page on the offer). Prices are lineItems, rendered by the template line_items and totals elements. Send creates an immutable snapshot and public link.
/api/v1/offersList offers
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offersCreate offer
Request body
{
"title": {
"type": "string",
"required": true
},
"offerTypeId": {
"type": "ObjectId"
},
"templateId": {
"type": "ObjectId"
},
"companyRef": {
"type": "ObjectId"
},
"personRef": {
"type": "ObjectId"
},
"dealRef": {
"type": "ObjectId"
},
"quoteInput": {
"type": "object",
"description": "{ contact, address, facts, calculatorInputs }"
},
"lineItems": {
"type": "array",
"description": "Preferred write field for offer lines. Each item: name (or description), quantity, unitPrice, optional unit/vatRate. Server generates id and totals."
},
"calculatorResult": {
"type": "object",
"description": "Readback/result shape { lineItems, subtotal, vatAmount, total }. lineItems without id/name are normalized on write (same as top-level lineItems)."
},
"validUntil": {
"type": "Date"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:idGet offer (by _id or publicId)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offers/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:idUpdate draft offer
Request body
{
"title": {
"type": "string"
},
"templateId": {
"type": "ObjectId"
},
"offerTypeId": {
"type": "ObjectId"
},
"quoteInput": {
"type": "object"
},
"lineItems": {
"type": "array",
"description": "Replace draft offer lines. Same shape as POST."
},
"calculatorResult": {
"type": "object"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/offers/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:idDelete draft offer
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/offers/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:id/sendSend offer — snapshot, activity, automations, offer.sent webhook. Returns publicId.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offers/{id}/send' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:id/cancelCancel offer
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offers/{id}/cancel' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:id/send-emailSend or resend offer email to customer
Request body
{
"emailTo": {
"type": "string",
"description": "Optional recipient override"
},
"senderAccountId": {
"type": "ObjectId",
"description": "Optional sender email account"
},
"templateId": {
"type": "ObjectId",
"description": "Optional email template"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offers/{id}/send-email' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:id/send-smsSend or resend offer link via SMS
Request body
{
"phoneTo": {
"type": "string",
"description": "Optional phone override"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offers/{id}/send-sms' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offers/:id/preview-tokenPreview URL for draft offers (short-lived token) or public link when sent
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offers/{id}/preview-token' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Contracts are offers with kind=contract and a multi-signer envelope. Send delivers per-signer links (sequential or parallel). Status accepted means fully signed. Signer tokens are never exposed.
/api/v1/contractsList contracts
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/contracts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/contractsCreate draft contract with signers
Request body
{
"title": {
"type": "string"
},
"templateId": {
"type": "ObjectId",
"description": "Contract template (kind=contract)"
},
"companyRef": {
"type": "ObjectId"
},
"personRef": {
"type": "ObjectId"
},
"dealRef": {
"type": "ObjectId"
},
"signers": {
"type": "array",
"required": true,
"description": "[{ name, email, phone?, title?, role?: 'signer'|'cc' }] in signing order"
},
"mode": {
"type": "string",
"description": "sequential (default) | parallel"
},
"signatureLevel": {
"type": "string",
"description": "standard (default) | mitid"
},
"deadlineAt": {
"type": "Date",
"description": "Signing deadline"
},
"contract": {
"type": "object",
"description": "{ startDate, endDate } agreement period"
},
"lineItems": {
"type": "array",
"description": "Optional price lines"
},
"sourceOfferId": {
"type": "ObjectId",
"description": "Accepted offer this contract was generated from"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/contracts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/contracts/:idGet contract incl. envelope status and signer progress
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/contracts/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/contracts/:id/sendSend to signers (snapshot + links). Webhooks: contract.sent, contract.signed, contract.completed, contract.declined, contract.expired, contract.voided
Request body
{
"channels": {
"type": "object",
"description": "{ email: true, sms: false }"
},
"message": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/contracts/{id}/send' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/contracts/:id/voidVoid (annullér) a sent contract
Request body
{
"reason": {
"type": "string"
},
"notifySigners": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/contracts/{id}/void' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Visual page-builder templates with pages[], headerElements, footerElements, and branding. Build pages from native elements (text, heading, image, table, columns, line_items, totals, button, divider, spacer, signer fields). See ?section=offerTemplates&subsection=nativeElements before writing layout. type html is a last resort.
/api/v1/offer-templatesList templates (summary without full pages)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-templatesCreate template with full layout (admin scope)
Request body
{
"name": {
"type": "string",
"required": true
},
"pages": {
"type": "array",
"description": "Page[] with native elements. Catalog: ?section=offerTemplates&subsection=nativeElements. Do not default pages to html."
},
"headerElements": {
"type": "array"
},
"footerElements": {
"type": "array"
},
"branding": {
"type": "object",
"description": "colors, typography, logo"
},
"defaultTerms": {
"type": "string"
},
"defaultPaymentTerms": {
"type": "string"
},
"isDefault": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offer-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-templates/:idGet full template including pages and elements
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-templates/:idUpdate template (admin scope)
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/offer-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-templates/:idDelete template (admin scope)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/offer-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-templates/:id/duplicateDuplicate template (admin scope)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offer-templates/{id}/duplicate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Prisregler: seller questions (requiredInputFields, incl. computed m² fields) and Hvis … så … pricing rules. Workflow: rule-reference → draft → validate → simulate → POST/PATCH. Full guide: ?section=pricingRules.
/api/v1/offer-typesList prisregler (offer types)
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | |
| limit | number | Nej | max 100 |
| includeInactive | boolean | Nej | true to include inactive |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-types' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-typesCreate prisregler (admin). Validated like /offer-types/validate; 400 returns details[] with path + error. Rule id/order/phase are filled in when omitted.
Request body
{
"name": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"isDefault": {
"type": "boolean",
"description": "Preselect on new offers"
},
"defaultTemplateId": {
"type": "ObjectId",
"description": "OfferTemplate _id"
},
"requiredInputFields": {
"type": "array",
"description": "[{ fieldId, label, type: number|text|select|checkbox|radio|slider|computed, unit?, options?, required?, expression? }]. See ?section=pricingRules&subsection=fieldTypes"
},
"pricingRules": {
"type": "object",
"description": "{ rules: [{ name, when: { all, any }, then }], vatRate?, currency?, vatDisplayMode? }. See ?section=pricingRules&subsection=actionTypes"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offer-types' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/rule-referenceBuilder vocabulary for this workspace: products (_id, name, unitPrice), subjects + keys (BBR only when the module is on), operators, action types, expression ops
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-types/rule-reference' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/rule-templatesStarter rules (Start fra skabelon) with fresh ids, the fields each needs, and placeholders to fill (product ids)
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| industry | string | Nej | IT | Håndværk | Generelt |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-types/rule-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/validateRead-only. Validate a draft { requiredInputFields, pricingRules } and get errors[], warnings[] and Danish ruleSummaries. Nothing is saved.
Request body
{
"requiredInputFields": {
"type": "array"
},
"pricingRules": {
"type": "object"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offer-types/validate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/simulateRead-only dry run of the engine. Returns lines, subtotal, computedFields, warnings, blocks and trace. Nothing is saved.
Request body
{
"offerTypeId": {
"type": "ObjectId",
"description": "Saved prisregler (or send offerType)"
},
"offerType": {
"type": "object",
"description": "Unsaved draft { requiredInputFields, pricingRules }"
},
"fields": {
"type": "object",
"description": "{ fieldId: value } answers"
},
"lines": {
"type": "array",
"description": "[{ offerProductId, quantity, unitPrice? } | { name, unitPrice, quantity }]"
},
"customer": {
"type": "object",
"description": "{ industry, country, postalCode, isExisting }"
},
"offer": {
"type": "object",
"description": "{ manualDiscountPercent }"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/offer-types/simulate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/:idGet prisregler. ?describe=true adds ruleSummaries (Danish Hvis … så … text per rule)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/offer-types/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/:idUpdate prisregler (admin). pricingRules merges with existing VAT/currency settings; pricingRules.rules and requiredInputFields replace the whole array. Validated when either is sent.
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/offer-types/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/offer-types/:idDelete prisregler (admin)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/offer-types/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/productsList products
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/products' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/productsCreate product
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/products' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/products/:idGet product
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/products/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/products/:idUpdate product
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/products/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/products/:idDelete product
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/products/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/catalogList catalog items
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/catalog' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/catalogCreate catalog item
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/catalog' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/catalog/:idGet catalog item
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/catalog/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/catalog/:idUpdate catalog item
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/catalog/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/catalog/:idDelete catalog item
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/catalog/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projectsList projects
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projectsCreate project
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:idGet project
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:idUpdate project. customFields is a partial key→value merge (definitions: GET /api/v1/project-custom-fields?entityType=project).
Request body
{
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"priority": {
"type": "string"
},
"owner": {
"type": "string"
},
"tags": {
"type": "string[]"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/projects/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:idDelete project
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/projects/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/moveMove project to different stage
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/{id}/move' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/statsGet project statistics
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/{id}/stats' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/tasksList project tasks
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/{id}/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/tasksCreate project task
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/{id}/tasks' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskIdGet project task
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskIdUpdate project task. Send stage (from GET /api/v1/task-flow) or status. status done sets stage to completedStageId. The task list Status column and done checkbox read stage, not status alone. customFields is a partial key→value merge.
Request body
{
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"to_do",
"in_progress",
"blocked",
"done"
],
"description": "Coarse status. done also sets stage to completedStageId."
},
"stage": {
"type": "number",
"description": "Stage id from GET /api/v1/task-flow. Wins over status when both are sent. Use completedStageId to mark Færdig."
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"owner": {
"type": "string",
"description": "User ID"
},
"assignees": {
"type": "string[]"
},
"startDate": {
"type": "string"
},
"deadline": {
"type": "string"
},
"estimatedHours": {
"type": "number"
},
"taskType": {
"type": "string"
},
"billable": {
"type": "boolean"
},
"tags": {
"type": "string[]"
},
"order": {
"type": "number"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge. Definitions: GET /api/v1/project-custom-fields?entityType=task"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskIdDelete project task
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskId/moveMove a project task to another task-flow stage. stage or status is enough. status done sets stage to completedStageId from GET /api/v1/task-flow.
Request body
{
"stage": {
"type": "number",
"description": "Stage id from GET /api/v1/task-flow. Sets status (completedStageId becomes done)."
},
"status": {
"type": "string",
"enum": [
"to_do",
"in_progress",
"blocked",
"done"
],
"description": "Coarse status. Also sets stage. Ignored for status when stage is sent."
},
"order": {
"type": "number",
"description": "Order within the stage"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId/move' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/task-flowGet the workspace task flow (opgavestatusser), including stages and completedStageId. Use completedStageId as stage when marking a project task Færdig so the list Status column and done checkbox update.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/task-flow' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskId/commentsList comments on a project task, including internal team notes. Each item has internal (boolean) and visibility (customer or internal). Internal notes are never shown in the customer portal. Task must belong to a project.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| visibility | string | Nej | Optional. customer returns the portal thread only. internal returns team notes only. Omit to return both. |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId/comments' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskId/commentsCreate a team comment on a project task. Without internal, it is the same thread as CRM Kommentarer and the customer portal when comments are enabled. With internal: true or visibility: internal, the note is team-only: hidden in the customer portal and not emailed to the customer.
Request body
{
"content": {
"type": "string",
"required": true,
"description": "Comment text. HTML is stripped. Max 5000 characters."
},
"internal": {
"type": "boolean",
"description": "True saves an internal team note. False or omitted is visible to the customer when portal comments are on."
},
"visibility": {
"type": "string",
"enum": [
"customer",
"internal"
],
"description": "customer (default) or internal. Same as internal: true when set to internal. Do not contradict the internal flag."
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId/comments' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskId/comments/:commentIdUpdate a project task comment (admin/owner). Change content and/or move between customer thread and internal notes via internal/visibility. Requires content and/or internal.
Request body
{
"content": {
"type": "string",
"description": "New text. HTML stripped. Max 5000 characters."
},
"internal": {
"type": "boolean",
"description": "true = internal team note; false = customer-visible thread"
},
"visibility": {
"type": "string",
"enum": [
"customer",
"internal"
],
"description": "Same meaning as internal flag"
}
}Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId/comments/:commentId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/tasks/:taskId/comments/:commentIdDelete a project task comment (admin/owner).
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/projects/tasks/:taskId/comments/:commentId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/time-entriesList time entries on a project.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| taskId | string | Nej | Only entries attached to this project task |
| page | number | Nej | |
| limit | number | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/{id}/time-entries' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/time-entriesRegister time on a project (and optionally a task). Uses the same rate, clip-card, and min-words rules as the UI timer.
Request body
{
"hours": {
"type": "number",
"required": true,
"description": "Hours to log. Can be combined with minutes. Must be greater than 0."
},
"minutes": {
"type": "number",
"description": "Optional extra minutes added to hours (e.g. 30 = 0.5 hours)."
},
"taskId": {
"type": "string",
"description": "Optional project task to attach the time entry to."
},
"description": {
"type": "string",
"description": "Work description. Required when the project has timeEntryMinWords set."
},
"date": {
"type": "string",
"description": "ISO date of the work. Defaults to now."
},
"billable": {
"type": "boolean",
"description": "Default true. Non-billable entries still consume clip-card hours."
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/{id}/time-entries' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/time-entries/:entryIdUpdate time entry
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/projects/time-entries/:entryId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/time-entries/:entryIdDelete time entry
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/projects/time-entries/:entryId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/expensesList expenses
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/projects/{id}/expenses' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/:id/expensesCreate expense
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/{id}/expenses' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Authenticated workspace API (API key). Create/cancel/reschedule/slots use the same pipeline as the public booking page. For a custom website UI without an API key, see GET /api/v1/docs?section=publicBooking.
/api/v1/bookingsList bookings. dateFrom/dateTo filter createdAt. startFrom/startTo filter startDateTime (when the meeting starts).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| status | string | Nej | |
| dateFrom | string | Nej | createdAt >= ISO |
| dateTo | string | Nej | createdAt <= ISO |
| startFrom | string | Nej | startDateTime >= ISO |
| startTo | string | Nej | startDateTime <= ISO |
| sortBy | string | Nej | |
| view | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/bookings' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookingsCreate booking (slot check, calendar, CRM, emails, automations, webhooks)
Request body
{
"configId": {
"type": "string",
"required": true
},
"slotStart": {
"type": "string",
"required": true,
"description": "ISO datetime"
},
"attendeeInfo": {
"type": "object",
"required": true,
"description": "{ name, email, phone?, notes? }"
},
"meetingTypeId": {
"type": "string"
},
"selectedAgentId": {
"type": "string"
},
"customFieldsData": {
"type": "object"
},
"invitedParticipants": {
"type": "array"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/bookings' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/:idGet booking by ID or publicId
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/bookings/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/:id/cancelCancel booking (calendar + notifications)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/bookings/{id}/cancel' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/:id/approveApprove pending booking
Request body
{
"notes": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/bookings/{id}/approve' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/:id/rejectReject pending booking
Request body
{
"reason": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/bookings/{id}/reject' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/:id/rescheduleReschedule booking
Request body
{
"newSlotStart": {
"type": "string",
"required": true
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/bookings/{id}/reschedule' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/bookings/available-slotsGet available time slots for a booking config
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| configId | string | Ja | |
| startDate | string | Ja | |
| endDate | string | Ja | |
| meetingTypeId | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/bookings/available-slots' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/booking-configsList booking configurations
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/booking-configs' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/booking-configs/:idGet booking configuration
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/booking-configs/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/booking-configs/:idUpdate booking configuration (admin scope)
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/booking-configs/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/pipelinePipeline report. byStage entries include stageId + stageName (stage keeps the name for back-compat).
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/pipeline' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/leadsLeads report
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/leads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/offersOffers report
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/offers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/supportSupport report
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/support' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/historyHistory/activity report (daily counts)
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| stat | string | Ja | |
| startDate | string | Ja | ISO date (aliases: dateFrom, from) |
| endDate | string | Ja | ISO date (aliases: dateTo, to) |
| userId | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/history' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/organizationOrganization overview
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/organization' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/usersUsers report
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/users' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/reports/users/:userIdIndividual user report
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/reports/users/:userId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Rules that compute lead.score (0-100) on create/update. Score is not writable on POST/PUT /leads. Admin required to create/update/delete rules.
/api/v1/lead-scoring/rulesList lead scoring rules (sorted by sortOrder)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/lead-scoring/rules' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-scoring/rulesCreate scoring rule. Admin/owner required.
Request body
{
"name": {
"type": "string",
"required": true,
"description": "Unique rule name in the workspace"
},
"description": {
"type": "string"
},
"field": {
"type": "string",
"required": true,
"description": "Eval field: hasEmail, hasPhone, hasValue, source, contactType, value, tags, customFields.<key>, contact.<field>, etc."
},
"condition": {
"type": "string",
"required": true,
"enum": [
"exists",
"not_exists",
"equals",
"not_equals",
"contains",
"not_contains",
"greater_than",
"less_than",
"in",
"not_in"
]
},
"value": {
"type": "mixed",
"description": "Comparison value (omit for exists/not_exists). Arrays for in/not_in."
},
"points": {
"type": "number",
"required": true,
"description": "Points to add (positive) or subtract (negative). Total clamped 0-100."
},
"isActive": {
"type": "boolean",
"default": true
},
"sortOrder": {
"type": "number",
"default": 0
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/lead-scoring/rules' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-scoring/rules/:idUpdate scoring rule (partial). Admin/owner required.
Request body
{
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"field": {
"type": "string"
},
"condition": {
"type": "string"
},
"value": {
"type": "mixed"
},
"points": {
"type": "number"
},
"isActive": {
"type": "boolean"
},
"sortOrder": {
"type": "number"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/lead-scoring/rules/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-scoring/rules/:idDelete scoring rule. Admin/owner required.
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/lead-scoring/rules/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-routing/rulesList lead routing rules
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/lead-routing/rules' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-routing/rulesCreate routing rule
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/lead-routing/rules' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-routing/rules/:idUpdate routing rule
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/lead-routing/rules/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/lead-routing/rules/:idDelete routing rule
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/lead-routing/rules/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Import requires API key scope `import`; export requires `export`. Neither is covered by `write` alone. Admin/owner role is also required.
/api/v1/import/companiesImport companies from CSV/data. Requires scope: import.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/companies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/peopleImport people. Requires scope: import.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/leadsImport leads. Requires scope: import.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/leads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/dealsImport deals. Requires scope: import.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/validateValidate import data before importing. Requires scope: import.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/validate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/historyList import history. Requires scope: import.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/import/history' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/leadsExport leads (POST only). Body: limit (max 10000), page, skip, cursor (_id), sortBy, sortOrder, fields, dateFrom, dateTo, filters. total is workspace match count. Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/leads' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/dealsExport deals (POST only). Body: limit, page, skip, cursor, sortBy, sortOrder, fields, dateFrom, dateTo, filters. Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/deals' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/peopleExport people (POST only). Body: limit, page, skip, cursor, sortBy, sortOrder, fields, dateFrom, dateTo, filters. Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/people' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/companiesExport companies (POST only). Body: limit (max 10000), page, skip, cursor (_id of last row), sortBy, sortOrder, fields (any stored field), dateFrom, dateTo, filters. Returns total, hasMore, nextCursor. Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/companies' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/lists/:listIdExport list items (POST only). Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/lists/:listId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/custom-objects/:slugExport custom object records (POST only). Requires scope: export. Admin/owner role required.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filesList files
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/files' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filesUpload file
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/files' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/:idGet file metadata
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/files/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/:idDelete file
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/files/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/:id/linkLink file to entity
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/files/{id}/link' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/:id/linkUnlink file from entity
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/files/{id}/link' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/cloud/accountsList accessible Google Drive / OneDrive accounts
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/files/cloud/accounts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/cloud/browseBrowse or search cloud files (parentId, driveId, query, recent, roots=true for shared drives, withPath)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/files/cloud/browse' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/cloud/linkLink cloud files to an entity
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/files/cloud/link' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/files/cloud/createCreate a cloud document in Salesbase/<entity> and link it
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/files/cloud/create' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/foldersList folders
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/folders' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/foldersCreate folder
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/folders' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/folders/:idDelete folder
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/folders/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Manage workspace members
/api/v1/usersList workspace members
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| search | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/users' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/users/:idGet user by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/users/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/users/:idUpdate user (name, phone)
Request body
{
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"phone": {
"type": "string"
},
"defaultUserPhone": {
"type": "string"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/users/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Authenticated workspace API (API key) for the agent inbox. For a custom website chat UI without an API key, see GET /api/v1/docs?section=publicChat. Category is a workspace-defined string from the support portal Kategori field (GET /api/v1/support-tickets/categories). Public visitors use the portal form, not this API.
/api/v1/support-ticketsList support tickets
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| status | string | Nej | |
| priority | string | Nej | |
| assignee | string | Nej | |
| category | string | Nej | Workspace-defined category value |
| search | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-tickets' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/categoriesList ticket category options for this workspace (from support portal Felter → Kategori). Use these values in POST/PUT category.
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-tickets/categories' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-ticketsCreate support ticket. Requires an existing support flow. category is a workspace-defined string (GET /categories). Defaults to the first portal category, or general.
Request body
{
"title": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"urgent"
]
},
"category": {
"type": "string",
"description": "Workspace-defined category. Use GET /api/v1/support-tickets/categories."
},
"assignee": {
"type": "string",
"description": "User ID"
},
"company": {
"type": "string",
"description": "Company ID"
},
"personRef": {
"type": "string",
"description": "Person ID"
},
"tags": {
"type": "string[]"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/support-tickets' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:idGet support ticket by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-tickets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:idUpdate support ticket. customFields is a partial key→value merge.
Request body
{
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"open",
"in_progress",
"waiting",
"resolved",
"closed"
]
},
"category": {
"type": "string",
"description": "Workspace-defined category. Use GET /api/v1/support-tickets/categories."
},
"assignee": {
"type": "string"
},
"tags": {
"type": "string[]"
},
"resolution": {
"type": "string"
},
"customFields": {
"type": "object",
"description": "Partial key → typed value merge"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/support-tickets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:idDelete support ticket
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/support-tickets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:id/replyAdd reply to ticket
Request body
{
"content": {
"type": "string",
"required": true
},
"type": {
"type": "string",
"enum": [
"agent_reply",
"internal_note"
],
"default": "agent_reply"
},
"visibility": {
"type": "string",
"enum": [
"public",
"internal"
],
"default": "public"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/support-tickets/{id}/reply' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:id/moveMove ticket to kanban stage
Request body
{
"stageId": {
"type": "number",
"required": true
},
"flowId": {
"type": "string",
"description": "Optional support flow ID"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/support-tickets/{id}/move' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:id/messagesList ticket messages
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| limit | number | Nej | |
| visibility | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-tickets/{id}/messages' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:id/time-entriesList time entries on ticket
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-tickets/{id}/time-entries' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-tickets/:id/time-entriesCreate time entry on ticket
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/support-tickets/{id}/time-entries' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-flowGet (or lazily create) the workspace's default support flow (kanban stages)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-flow' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-customersList support customers (grouped identity across tickets by person, email, or chat visitor)
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| search | string | Nej | |
| q | string | Nej | Alias for search |
| sortBy | string | Nej | |
| sortOrder | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-customers' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/support-customers/detailGet full detail for one support customer: tickets, time stats, and time entries
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| type | string | Ja | |
| value | string | Ja | personRef ID, email address, or chatVisitorRef ID depending on type |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/support-customers/detail' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Saved filter configurations for lists and views
/api/v1/filter-presetsList filter presets
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| area | string | Nej | Filter by area (e.g. companies, leads, deals) |
| page | string | Nej | |
| limit | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/filter-presets' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filter-presetsCreate filter preset
Request body
{
"name": {
"type": "string",
"required": true
},
"area": {
"type": "string"
},
"columnFilters": {
"type": "object"
},
"filterTree": {
"type": "object"
},
"filterMode": {
"type": "string",
"enum": [
"and",
"or"
]
},
"sorting": {
"type": "array"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"private",
"group",
"user"
]
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/filter-presets' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filter-presets/:idGet filter preset
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/filter-presets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filter-presets/:idUpdate filter preset
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/filter-presets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/filter-presets/:idDelete filter preset
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/filter-presets/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-signaturesList email signatures
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/email-signatures' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-signaturesCreate signature
Request body
{
"name": {
"type": "string",
"required": true
},
"content": {
"type": "string",
"required": true,
"description": "HTML content"
},
"textContent": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/email-signatures' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-signatures/:idGet signature
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/email-signatures/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-signatures/:idUpdate signature
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/email-signatures/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/email-signatures/:idDelete signature
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/email-signatures/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Manage prepaid service hour cards for projects
/api/v1/clip-cardsList clip cards
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| status | string | Nej | |
| projectId | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/clip-cards' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/clip-cardsCreate clip card
Request body
{
"project": {
"type": "string",
"required": true,
"description": "Project ID"
},
"title": {
"type": "string"
},
"totalHours": {
"type": "number",
"required": true
},
"hourlyRate": {
"type": "number",
"required": true
},
"allowOverdraft": {
"type": "boolean"
},
"overdraftRate": {
"type": "number"
},
"expiresAt": {
"type": "string",
"description": "ISO date"
},
"notes": {
"type": "string"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/clip-cards' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/clip-cards/:idGet clip card
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/clip-cards/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/clip-cards/:idUpdate clip card
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/clip-cards/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/clip-cards/:idDelete clip card
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/clip-cards/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Manage saved dashboard configurations
/api/v1/dashboard-layoutsList dashboard layouts
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/dashboard-layouts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dashboard-layoutsCreate layout
Request body
{
"name": {
"type": "string",
"required": true
},
"layout": {
"type": "object"
},
"visibleComponents": {
"type": "string[]"
},
"chartWidgets": {
"type": "array"
},
"visibility": {
"type": "string",
"enum": [
"workspace",
"private",
"group",
"user"
]
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/dashboard-layouts' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dashboard-layouts/:idGet layout
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/dashboard-layouts/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dashboard-layouts/:idUpdate layout
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/dashboard-layouts/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/dashboard-layouts/:idDelete layout
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/dashboard-layouts/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Workspace-defined object types and records. Schema/field mutations require admin scope; record CRUD uses write scope.
/api/v1/custom-objectsList custom object definitions
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objectsCreate custom object definition (admin scope). Sending color without useAccentNavIcon enables accent nav icons.
Request body
{
"slug": {
"type": "string",
"required": true
},
"singular": {
"type": "string",
"required": true
},
"plural": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"icon": {
"type": "string"
},
"color": {
"type": "string",
"description": "Accent hex. Implies useAccentNavIcon true unless that flag is set explicitly."
},
"useAccentNavIcon": {
"type": "boolean",
"description": "Show object color on sidebar icons. Defaults true when color is set."
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-objects' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/searchSearch records across all searchable objects
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| q | string | Ja | |
| limit | number | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/search' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slugGet definition with field schemas
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slugUpdate definition metadata (admin scope). Supports singular/plural/icon/color/sidebar fields plus titleField, favoriteFieldKeys, searchableFields, views, piiFields. Patching color without useAccentNavIcon enables accent nav icons.
Request body
{
"color": {
"type": "string",
"description": "Accent hex. Implies useAccentNavIcon true unless that flag is set explicitly."
},
"useAccentNavIcon": {
"type": "boolean"
},
"icon": {
"type": "string"
},
"singular": {
"type": "string"
},
"plural": {
"type": "string"
},
"showInSidebar": {
"type": "boolean"
},
"titleField": {
"type": "string",
"description": "Field slug used as display title"
},
"favoriteFieldKeys": {
"type": "string[]",
"description": "Up to 5 field slugs for previews"
},
"searchableFields": {
"type": "string[]"
},
"views": {
"type": "array"
},
"piiFields": {
"type": "string[]"
}
}Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slugDelete object and all records (admin scope)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/fieldsAdd field (admin scope). Relation type is record_reference (not reference/relation). select/multi_select options must be { value, label } objects. See schema CustomObjectField for full type enum.
Request body
{
"slug": {
"type": "string",
"required": true
},
"label": {
"type": "string",
"required": true
},
"type": {
"type": "string",
"required": true,
"enum": [
"text",
"number",
"currency",
"date",
"datetime",
"select",
"multi_select",
"checkbox",
"url",
"email",
"phone",
"file",
"record_reference",
"json",
"formula",
"rollup"
]
},
"options": {
"type": "array",
"description": "[{ value, label, color? }] for select/multi_select"
},
"referenceType": {
"type": "string",
"enum": [
"custom",
"native"
]
},
"referenceObject": {
"type": "string",
"description": "Custom object slug when referenceType=custom"
},
"nativeEntity": {
"type": "string",
"description": "Native entity when referenceType=native"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-objects/:slug/fields' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/fields/:fieldSlugUpdate field (admin scope)
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/custom-objects/:slug/fields/:fieldSlug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/fields/:fieldSlugDelete field (admin scope)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/custom-objects/:slug/fields/:fieldSlug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/recordsList records with pagination or cursor search
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | |
| limit | number | Nej | |
| q | string | Nej | Search query (alias: search) |
| search | string | Nej | Alias for q |
| cursor | string | Nej | Cursor for next page when searching |
| sort | string | Nej | Field slug to sort by |
| dir | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/recordsCreate record. Body is field-slug keys → values (flattened). Optional wrappers: { data: {…} } or { customFields: {…} }. Unknown or read-only slugs return 400.
Request body
{
"type": "object",
"description": "Field slug keys → values, or { data } / { customFields } wrappers"
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/bulkBulk update records. Unknown field slugs in patch/operations return 400.
Request body
{
"ids": {
"type": "string[]",
"required": true
},
"patch": {
"type": "object",
"required": true,
"description": "Field slug → value"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/bulk' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:idGet record by ID. Response is flattened field slugs (not nested under data).
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:idPartial update. Body: field-slug map, or { data: {…} } / { customFields: {…} }. Unknown or read-only slugs return 400 with unknown/denied. Top-level avatar sets the record image: an https image URL (re-hosted) or a data:image/...;base64 URL (max 2 MB); empty clears it.
Request body
{
"type": "object",
"description": "Field slug keys → values (partial merge)"
}Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:idAlias of PATCH (partial merge, not a full replace).
Request body
{
"type": "object",
"description": "Field slug keys → values (partial merge)"
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:idDelete record
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:id/activity-feedActivity feed for a record
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}/activity-feed' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/custom-objects/:slug/records/:id/relatedRelated custom object records linked via native entity refs
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/custom-objects/:slug/records/{id}/related' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/export/custom-objects/:slugExport records (export + admin scope)
Request body
{
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"limit": {
"type": "number"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/export/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/import/custom-objects/:slugImport records from rows array (import + admin scope)
Request body
{
"rows": {
"type": "array",
"required": true
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/import/custom-objects/:slug' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Read calculator templates tied to offer types and run stateless price calculations.
/api/v1/calculator-templatesList calculator templates
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/calculator-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calculator-templates/:idGet template with pricing rules
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/calculator-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calculator-templates/:id/calculateRun calculation without persisting
Request body
{
"inputs": {
"type": "object",
"required": true
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/calculator-templates/{id}/calculate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/calculator-submissionsList calculator submissions
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | string | Nej | |
| limit | string | Nej | |
| templateId | string | Nej | |
| offerId | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/calculator-submissions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Read integration connection status. OAuth connect flows remain in-app only.
/api/v1/integrationsList connected providers and sync health (no secrets)
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/integrations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/integrations/:provider/syncTrigger manual sync (admin scope)
Request body
{
"fullSync": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/integrations/:provider/sync' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Read every statistic the dashboard and reports can show (calls, SMS, e-mail, pipeline, revenue, leads, offers, support, projects, custom objects, external series) and push your own time series. Custom-object metrics are keyed custom.{slug}.* and follow the object's view permission. Reads require the reports module; writes require write scope.
/api/v1/metricsCatalog of metrics available in the workspace. Each entry: { key, label, description, category, format (integer|currency|percent|duration|decimal), mode (flow|snapshot), dimensions[], measureType }. Includes custom.{slug}.* families and external:{seriesKey} series.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| category | string | Nej | Filter by category key (e.g. calls, sms, custom:{slug}, external) |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/metrics' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/metrics/queryQuery one metric. Returns total, optional period-over-period delta and a bucketed series. Snapshot metrics (mode snapshot) report the current state and ignore the window.
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| metricKey | string | Ja | Key from GET /api/v1/metrics |
| from | string | Ja | ISO date/datetime (inclusive) |
| to | string | Nej | ISO date/datetime (inclusive). Default now |
| granularity | string | Nej | Bucket size. Default day |
| dimension | string | Nej | Group by one of the metric's dimensions (breakdown). Points get dimension + dimensionLabel |
| compareTo | string | Nej | Add compareTotal, compareSeries and delta { abs, pct } |
| tz | string | Nej | IANA timezone for bucketing. Default Europe/Copenhagen |
| format | string | Nej | csv returns a UTF-8 CSV file with one row per point: metricKey, label, granularity, period (current|compare), bucket, dimension, dimensionValue, dimensionLabel, value, format. Default json |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/metrics/query' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/metrics/queryBatch query up to 25 metrics in one call. Same fields per request as GET /api/v1/metrics/query. Results are returned in request order; an unknown or forbidden metric yields { metricKey, error, code } for that entry only. Add ?format=csv (or "format": "csv" in the body) to download all series as one CSV file.
Request body
{
"requests": {
"type": "array",
"required": true,
"description": "Array of { metricKey, from, to?, granularity?, dimension?, compareTo?, tz? }"
},
"format": {
"type": "string",
"enum": [
"json",
"csv"
],
"description": "Response format. Default json"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/metrics/query' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/metrics/pointsIdempotent upsert of daily points for an external series. The series appears in the catalog as external:{seriesKey} and can be shown on dashboards and reports. Max 5000 points per request. Requires write scope.
Request body
{
"seriesKey": {
"type": "string",
"required": true,
"description": "Stable series id (letters, digits, '_', '.', '-'). Stored as external:{seriesKey}."
},
"label": {
"type": "string",
"description": "Display name shown in pickers (set once or update any time)"
},
"description": {
"type": "string",
"description": "Short help text for the picker"
},
"format": {
"type": "string",
"enum": [
"integer",
"decimal",
"currency",
"percent",
"duration"
],
"description": "Number format. Default decimal"
},
"points": {
"type": "array",
"required": true,
"description": "Array of { date (ISO), value (number), dimensions? (object) }"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/metrics/points' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Reusable project blueprints (tasks, milestones, portal/invoice defaults). Create a project with POST /api/v1/projects/from-template. On offer accept, set OfferType.createProjectOnAccept + projectTemplateId instead of an automation create_project action.
/api/v1/project-templatesList project templates. includeInactive=true includes soft-deleted (isActive=false).
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| includeInactive | boolean | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/project-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/project-templatesCreate a project template (requires projects create).
Request body
{
"name": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"flowRef": {
"type": "string",
"description": "ProjectFlow id"
},
"taskTemplates": {
"type": "array",
"description": "[{ title, description?, stage?, priority?, … }]"
},
"milestoneTemplates": {
"type": "array"
},
"projectData": {
"type": "object"
},
"portalSettings": {
"type": "object"
},
"isDefault": {
"type": "boolean"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/project-templates' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/project-templates/:idGet one template
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/project-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/project-templates/:idUpdate template fields
Eksempel
curl -X PATCH 'https://app.salesbase.dk/api/v1/project-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/project-templates/:idSoft-delete (isActive=false)
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/project-templates/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/projects/from-templateInstantiate a project from a template (tasks/milestones). Prefer OfferType createProjectOnAccept for accept-time creation.
Request body
{
"templateId": {
"type": "string",
"required": true
},
"title": {
"type": "string"
},
"company": {
"type": "string",
"description": "Company id"
},
"personRef": {
"type": "string"
},
"offerData": {
"type": "object",
"description": "Optional { offerId, offerTitle, lineItems, dealRef, leadRef }"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/projects/from-template' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Automations are event-driven flows that execute actions when specific triggers fire. Each automation has exactly one trigger node and one or more action/condition/delay/AI nodes connected by edges. Automations are stored as ReactFlow graphs (nodes + edges) and executed by a cron-based step processor.
/api/v1/automationsList all automations in the workspace
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | Page number |
| limit | number | Nej | Items per page |
| isActive | string | Nej | Filter by active status |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/automations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automationsCreate a new automation
Request body
{
"name": {
"type": "string",
"required": true,
"description": "Automation name"
},
"description": {
"type": "string",
"required": false,
"description": "Description of what this automation does"
},
"nodes": {
"type": "Node[]",
"required": false,
"description": "Array of flow nodes (see Node Structure below)"
},
"edges": {
"type": "Edge[]",
"required": false,
"description": "Array of edges connecting nodes (see Edge Structure below)"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:idGet a single automation by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/automations/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:idUpdate an automation
Request body
{
"name": {
"type": "string",
"required": false
},
"description": {
"type": "string",
"required": false
},
"nodes": {
"type": "Node[]",
"required": false
},
"edges": {
"type": "Edge[]",
"required": false
},
"executionSettings": {
"type": "ExecutionSettings",
"required": false
},
"rateLimits": {
"type": "RateLimits",
"required": false
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/automations/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:idDelete an automation. Fails if there are running executions.
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/automations/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:id/toggleToggle automation active/inactive
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations/{id}/toggle' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:id/executionsList executions for an automation
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | |
| limit | number | Nej | |
| status | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/automations/{id}/executions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/executions/:executionIdGet a single execution with full step log
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/automations/executions/:executionId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/statsGet aggregate automation statistics for the workspace
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/automations/stats' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:id/duplicateDuplicate an automation (creates inactive copy)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations/{id}/duplicate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:id/testRun automation in test mode with sample context
Request body
{
"testContext": {
"type": "object",
"description": "Optional context overrides"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations/{id}/test' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/:id/triggerManually trigger an active automation
Request body
{
"context": {
"type": "object",
"description": "Trigger context payload"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations/{id}/trigger' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/automations/executions/:executionId/cancelCancel a running automation execution
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/automations/executions/:executionId/cancel' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Sequences are entity-centric outreach flows for personalized sales communication. Unlike automations (which are event-triggered), sequences are started by enrolling an entity (Lead, People, Deal, or Company). Each sequence has a Start node, communication nodes (email, SMS), timing nodes (wait), action nodes (tasks, recalls, field updates), logic nodes (conditions, AI), and Stop nodes.
/api/v1/sequencesList all sequences in the workspace
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | |
| limit | number | Nej | |
| isActive | string | Nej | Filter by active status |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sequences' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequencesCreate a new sequence
Request body
{
"name": {
"type": "string",
"required": true,
"description": "Sequence name"
},
"description": {
"type": "string",
"required": false
},
"nodes": {
"type": "Node[]",
"required": false,
"description": "Array of step nodes (see Step Types below). A default Start node is created if nodes are omitted."
},
"edges": {
"type": "Edge[]",
"required": false,
"description": "Array of edges connecting nodes"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:idGet a single sequence by ID
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sequences/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:idUpdate a sequence
Request body
{
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"nodes": {
"type": "Node[]"
},
"edges": {
"type": "Edge[]"
},
"allowedEntityTypes": {
"type": "string[]",
"description": "Array of entity types that can be enrolled: 'Lead', 'People', 'Deal', 'Company'"
},
"exitConditions": {
"type": "ExitConditions",
"description": "See Exit Conditions section"
},
"sendSettings": {
"type": "SendSettings",
"description": "See Send Settings section"
},
"trackingSettings": {
"type": "TrackingSettings"
},
"aiSettings": {
"type": "AiSettings"
},
"executionSettings": {
"type": "ExecutionSettings"
},
"triggers": {
"type": "Trigger[]",
"description": "Auto-enrollment triggers"
},
"defaultSenderType": {
"type": "string",
"enum": [
"fixed",
"owner"
]
},
"defaultSenderId": {
"type": "string",
"description": "Email account ID for fixed sender"
},
"defaultSmsNumber": {
"type": "string",
"description": "Phone number for SMS"
}
}Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/sequences/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:idDelete a sequence. Fails if there are active enrollments.
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/sequences/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/toggleToggle sequence active/inactive. Activation requires a start node and at least one action node.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/{id}/toggle' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/duplicateDuplicate a sequence (creates inactive copy)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/{id}/duplicate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/enroll-eligibilityCheck if an entity can be enrolled before calling enroll
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| entityType | string | Ja | |
| entityId | string | Ja |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sequences/{id}/enroll-eligibility' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/enrollEnroll one or more entities into the sequence
Request body
{
"entityType": {
"type": "string",
"required": true,
"enum": [
"Lead",
"People",
"Deal",
"Company"
]
},
"entityId": {
"type": "string",
"description": "Single entity ID (for single enrollment)"
},
"entityIds": {
"type": "string[]",
"description": "Array of entity IDs (for bulk enrollment)"
},
"source": {
"type": "string",
"default": "api",
"description": "Enrollment source identifier"
},
"forceRestart": {
"type": "boolean",
"default": false,
"description": "Re-enroll even if entity was previously enrolled"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/{id}/enroll' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/enrollmentsList enrollments for a sequence
Parametre
| Navn | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| page | number | Nej | |
| limit | number | Nej | |
| status | string | Nej |
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sequences/{id}/enrollments' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/:id/statsGet aggregate statistics for a sequence
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/sequences/{id}/stats' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/enrollments/:enrollmentId/pausePause an active enrollment
Request body
{
"durationDays": {
"type": "number",
"description": "Optional: auto-resume after X days"
}
}Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/enrollments/:enrollmentId/pause' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/enrollments/:enrollmentId/resumeResume a paused enrollment
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/enrollments/:enrollmentId/resume' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/sequences/enrollments/:enrollmentId/unenrollRemove an entity from the sequence (only if active or paused)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/sequences/enrollments/:enrollmentId/unenroll' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'Subscribe to CRM events and receive HTTP POST notifications at your URL. Each webhook delivery includes an HMAC signature for verification. Manage subscriptions via the /api/v1/webhooks/subscriptions endpoints.
/api/v1/webhooks/subscriptionsList subscriptions
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/webhooks/subscriptions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptionsCreate subscription (returns secret)
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/webhooks/subscriptions' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idGet subscription
Eksempel
curl -X GET 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idUpdate subscription
Eksempel
curl -X PUT 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/subscriptions/:idDelete subscription
Eksempel
curl -X DELETE 'https://app.salesbase.dk/api/v1/webhooks/subscriptions/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/webhooks/automation/:automationIdTrigger a webhook-type automation. The JSON body becomes available as webhookData.* placeholders in the automation flow.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/webhooks/automation/:automationId' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'/api/v1/webhooks/zapierZapier inbound — creates person, lead, and deal. Bearer API key with inbound scope.
Eksempel
curl -X POST 'https://app.salesbase.dk/api/v1/webhooks/zapier' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'company.createdA company was created
company.updatedA company was updated
company.deletedA company was deleted
person.createdA person was created
person.updatedA person was updated
person.deletedA person was deleted
deal.createdA deal was created
deal.updatedA deal was updated
deal.deletedA deal was deleted
deal.stage_changedA deal moved to a different pipeline stage
deal.wonA deal was marked as won
deal.lostA deal was marked as lost
lead.createdA lead was created
lead.updatedA lead was updated
lead.deletedA lead was deleted
call.createdA call record was created
call.updatedA call record was updated
note.createdA note was created
note.updatedA note was updated
task.createdA task was created
task.updatedA task was updated
task.completedA task was marked as completed
activity.createdAn activity was logged
custom_object.createdA custom object record was created
custom_object.updatedA custom object record was updated
Opret en API-nøgle i dashboardet og kør jeres første kald.