For AI agents: markdown of this page — /docs-content-en/entities/crm-tracking/ad-expenses-get-status.md documentation index — /llms.txt
The method ships in the
crm 26.2100.0update and is not yet available on all Bitrix24 accounts. If the method is not enabled yet, the API returns422 METHOD_NOT_YET_AVAILABLE.
Get advertising expense report progress
GET /v1/crm-tracking/sources/:id/ad-expenses
Read the current progress of an advertising expense report for a period. This request does not run the next report step.
Requires the crm scope, the crm-tracking-v3 flag, and method availability in the Bitrix24 account. A READONLY key can run this request.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Parameterid (path) |
Typeinteger | Requiredyes | Default— | DescriptionPositive source ID from the source list. |
ParameterdateFrom (query) |
Typestring | Requiredyes | Default— | DescriptionPeriod start, YYYY-MM-DD. |
ParameterdateTo (query) |
Typestring | Requiredyes | Default— | DescriptionPeriod end, YYYY-MM-DD. |
Examples
curl — personal key
curl --get "https://vibecode.bitrix24.com/v1/crm-tracking/sources/42/ad-expenses" \
-H "X-Api-Key: YOUR_API_KEY" \
--data-urlencode "dateFrom=2026-10-01" \
--data-urlencode "dateTo=2026-10-07"
curl — OAuth application
curl --get "https://vibecode.bitrix24.com/v1/crm-tracking/sources/42/ad-expenses" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
--data-urlencode "dateFrom=2026-10-01" \
--data-urlencode "dateTo=2026-10-07"
JavaScript — personal key
const query = new URLSearchParams({ dateFrom: '2026-10-01', dateTo: '2026-10-07' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/crm-tracking/sources/42/ad-expenses?${query}`, {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const result = await res.json()
console.log(result)
JavaScript — OAuth application
const query = new URLSearchParams({ dateFrom: '2026-10-01', dateTo: '2026-10-07' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/crm-tracking/sources/42/ad-expenses?${query}`, {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const result = await res.json()
console.log(result)
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | Descriptiontrue |
Fielddata |
Typeobject | DescriptionReport progress. |
Fielddata.complete |
Typeboolean | DescriptionWhether the report is complete. |
Fielddata.label |
Typestring or null | DescriptionCurrent step label or null. Its language depends on the Bitrix24 account. |
Response example
{
"success": true,
"data": {
"complete": false,
"label": "Retrieving data for October 1 - October 7"
}
}
Error response example
404 — source not found:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "Record with ID = `0` not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP400 | CodeINVALID_PARAMS |
DescriptionInvalid source ID or field type. |
| HTTP400 | CodeBITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION |
DescriptionMissing or invalid dates, or other parameters rejected by Bitrix24. |
| HTTP400 | CodeUNKNOWN_FILTER_FIELD |
DescriptionUnknown query parameter. |
| HTTP400 | CodeCRM_TRACKING_AD_PROVIDER_UNSUPPORTED |
DescriptionThe source does not support the advertising operation. |
| HTTP404 | CodeENTITY_NOT_FOUND |
DescriptionSource not found. |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key lacks the crm scope. |
| HTTP403 | CodeBITRIX_REST_V3_EXCEPTION_ACCESSDENIEDEXCEPTION |
DescriptionInsufficient permissions on the Bitrix24 portal. |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe key has no configured Bitrix24 access. |
| HTTP422 | CodeMETHOD_NOT_YET_AVAILABLE |
DescriptionThe flag is off or the method is not enabled on the portal. error.release is crm 26.2100.0. |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
DescriptionBitrix24 returned an invalid response structure. |
Other Bitrix24 refusal codes, statuses, and messages are preserved. For common API errors, see Errors.
Known specifics
If complete is false, run the next step by repeating the POST request with the same period. Reading progress alone does not continue building the report.