Sales & dashboards
Current release · Updated October 2, 2026
DryKraft sales & dashboards API: methods, permissions, request fields, response shapes, examples and current limits. Read authentication and error handling first.
/api/pipelinesList sales pipelines
Access: Workspace member · Success: 200
Returns saved stages, IDs and timestamps.
No request body is required.
Response
Pipeline[].
curl --request GET \
--url 'https://app.drykraft.com/api/pipelines' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'/api/pipelinesCreate pipeline
Access: Owner or admin · Success: 201
Stage IDs must be unique.
JSON request
Use Pipeline.
Response
Use Pipeline.
curl --request POST \
--url 'https://app.drykraft.com/api/pipelines' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<Pipeline name>",
"stages": [
{
"id": "<value>",
"name": "<Stage label>",
"probability": 0,
"color": "<value>"
}
]
}'/api/pipelines/{id}Update pipeline
Access: Owner or admin · Success: 200
Move deals before removing a stage they use. Returns 404 when missing.
JSON request
Use Pipeline.
Response
Use Pipeline.
curl --request PUT \
--url 'https://app.drykraft.com/api/pipelines/00000000-0000-4000-8000-000000000001' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<Pipeline name>",
"stages": [
{
"id": "<value>",
"name": "<Stage label>",
"probability": 0,
"color": "<value>"
}
]
}'/api/dashboardsList dashboards
Access: Workspace member · Success: 200
Saved dashboard rows include id, name, widgets and version.
No request body is required.
Response
object[]. id, tenant_id, name, widgets (Widget[]), version, created_at
curl --request GET \
--url 'https://app.drykraft.com/api/dashboards' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>'/api/dashboardsCreate dashboard
Access: Owner, admin or member · Success: 201
Creates an empty dashboard.
JSON request
| Field | Type | Required | Details |
|---|---|---|---|
name | string | Yes | Name Max 100 characters. |
Response
object. Dashboard row
curl --request POST \
--url 'https://app.drykraft.com/api/dashboards' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<Name>"
}'/api/dashboards/{id}Save dashboard
Access: Owner, admin or member · Success: 200
Up to 30 unique widget IDs. Validates aggregations against workspace objects and fields. Optimistic version is required.
JSON request
| Field | Type | Required | Details |
|---|---|---|---|
name | string | Yes | Name Max 100 characters. |
widgets | Widget[] | Yes | Max 30 items. |
version | integer | Yes | Positive optimistic version returned by the latest read. Refresh on 409; do not overwrite stale changes. Min 1. |
Response
object. Updated dashboard with incremented version
curl --request PUT \
--url 'https://app.drykraft.com/api/dashboards/00000000-0000-4000-8000-000000000001' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"name": "<Name>",
"widgets": [],
"version": 1
}'/api/analytics/queryQuery KPIs
Access: Workspace member · Success: 200
Counts, sum or average; optional exact filter and grouping. Monetary totals remain in one currency. Financial sums/averages need explicit currency or currency filter. <=100 groups per widget.
JSON request
| Field | Type | Required | Details |
|---|---|---|---|
widgets | Widget[] | Yes | Max 30 items. |
Response
object. Result map keyed by widget ID
curl --request POST \
--url 'https://app.drykraft.com/api/analytics/query' \
--cookie 'drykraft_session=<YOUR_SESSION_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"widgets": []
}'