Bulk Delete Vehicle Consumptions by Filters (Organization)
const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-organization-id': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({filter_hash: '<string>'})
};
fetch('https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters"
payload = { "filter_hash": "<string>" }
headers = {
"x-api-key": "<x-api-key>",
"x-organization-id": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"filter_hash": "<string>"
}
'{
"success_count": 123,
"success_ids": {},
"failed_count": 123,
"failed_ids": {},
"message": "<string>"
}Bulk Delete Vehicle Consumptions by Filters (Organization)
Delete every consumption record in the organization matching a set of filter criteria, e.g. an entire uploaded file
POST
/
v2
/
vehicle_consumptions
/
bulk-delete-by-filters
Bulk Delete Vehicle Consumptions by Filters (Organization)
const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-organization-id': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({filter_hash: '<string>'})
};
fetch('https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters"
payload = { "filter_hash": "<string>" }
headers = {
"x-api-key": "<x-api-key>",
"x-organization-id": "<x-organization-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)curl --request POST \
--url https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"filter_hash": "<string>"
}
'{
"success_count": 123,
"success_ids": {},
"failed_count": 123,
"failed_ids": {},
"message": "<string>"
}← Vehicles API
Delete every consumption record across the organization that matches a set of filter criteria — most commonly
Solution: Re-fetch the consumption list with the same filters to get a fresh
file_id[], to remove every consumption created from one bulk upload, across every vehicle it was split into. Uses the same two-step, hash-confirmed workflow as the per-vehicle equivalent.
Permanent Action: Deleting consumption records is permanent and cannot be undone. All associated emissions data will be removed from your organization’s totals.
Single organization only: This endpoint never reaches into child organizations of a holding. If a parent-company file was split across several organizations (not just several vehicles in one organization), each organization’s consumptions must be deleted separately.
How It Works
- Call
GET /v2/vehicle_consumptionswith your desired filters — the response includes afilter_hashfield. - Call this endpoint with the same query filters and pass the
filter_hashin the request body. - The API verifies the hash matches the current filter results to prevent stale-data race conditions.
Request
Headers
string
required
Your API key for authenticationExample:
sk_live_1234567890abcdefstring
required
Your organization UUIDExample:
a8315ef3-dd50-43f8-b7ce-d839e68d51faBody Parameters
string
required
The hash returned in the
filter_hash field of the list response. Confirms you are deleting exactly the records you saw.Example: "b4c2d3e5f6a7b8c9"Query Parameters
No filter is required: without one the delete covers every consumption the unfiltered list shows (the header organization, or under group view the accepted family narrowed byorganization_id[], and the project scope when it is on).
array[string]
Narrow the deletion to specific vehicle UUIDs
array[string]
Filter by consumption statusAvailable values:
active, success, loading, errorarray[string]
Filter by fuel unit UUIDs
array[string]
Filter by the fuel UUIDs stamped on the consumption
string
Filter by custom identifier
string
Filter consumptions with a start date on or after this date (YYYY-MM-DD)
string
Filter consumptions with an end date on or before this date (YYYY-MM-DD)
array[string]
Filter by source file UUIDs — delete every consumption imported from a specific file, across all vehicles it was split intoExample:
file_id[]=880e8400-e29b-41d4-a716-446655440000string
Filter consumptions created on or after this datetime (ISO 8601)
string
Filter consumptions created on or before this datetime (ISO 8601)
string
Filter by CO2e calculation statusAvailable values:
calculated, not_calculatedResponse
Returns200 OK with a JSON summary of the operation.
integer
Number of consumption records successfully deleted
array[string]
UUIDs of successfully deleted consumption records
integer
Number of records that failed to delete
array[string]
UUIDs of records that failed to delete
string
Human-readable summary of the operation
Example
# Step 1: get list with filters to obtain filter_hash
curl -X GET "https://api.dcycle.io/v2/vehicle_consumptions?file_id[]=880e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}"
# Step 2: bulk delete using the filter_hash from the list response
curl -X POST "https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters?file_id[]=880e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}" \
-H "Content-Type: application/json" \
-d '{"filter_hash": "b4c2d3e5f6a7b8c9"}'
import requests
import os
api_key = os.getenv("DCYCLE_API_KEY")
org_id = os.getenv("DCYCLE_ORG_ID")
headers = {
"x-api-key": api_key,
"x-organization-id": org_id,
"Content-Type": "application/json"
}
filters = {"file_id[]": ["880e8400-e29b-41d4-a716-446655440000"]}
# Step 1: fetch list to get filter_hash
list_response = requests.get(
"https://api.dcycle.io/v2/vehicle_consumptions",
headers=headers,
params=filters
)
filter_hash = list_response.json()["filter_hash"]
# Step 2: bulk delete with hash confirmation
response = requests.post(
"https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters",
headers=headers,
params=filters,
json={"filter_hash": filter_hash}
)
result = response.json()
print(f"Deleted: {result['success_count']}, Failed: {result['failed_count']}")
print(result["message"])
const axios = require('axios');
const apiKey = process.env.DCYCLE_API_KEY;
const orgId = process.env.DCYCLE_ORG_ID;
const headers = {
'x-api-key': apiKey,
'x-organization-id': orgId,
'Content-Type': 'application/json'
};
const filters = { 'file_id[]': ['880e8400-e29b-41d4-a716-446655440000'] };
// Step 1: fetch list to get filter_hash
axios.get(
'https://api.dcycle.io/v2/vehicle_consumptions',
{ headers, params: filters }
)
.then(listResponse => {
const filterHash = listResponse.data.filter_hash;
// Step 2: bulk delete with hash confirmation
return axios.post(
'https://api.dcycle.io/v2/vehicle_consumptions/bulk-delete-by-filters',
{ filter_hash: filterHash },
{ headers, params: filters }
);
})
.then(response => {
const result = response.data;
console.log(`Deleted: ${result.success_count}, Failed: ${result.failed_count}`);
console.log(result.message);
})
.catch(error => console.error(error));
Successful Response
{
"success_count": 100,
"success_ids": [
"660e8400-e29b-41d4-a716-446655440000",
"770e8400-e29b-41d4-a716-446655440001"
],
"failed_count": 0,
"failed_ids": [],
"message": "Successfully deleted 100 vehicle consumption(s)"
}
Common Errors
401 Unauthorized
Cause: Missing or invalid API key{
"detail": "Invalid API key",
"code": "INVALID_API_KEY"
}
409 Conflict — Filter Hash Mismatch
Cause: Thefilter_hash does not match the current filter results. The underlying data changed between the list call and the delete call.
{
"detail": "Filter hash mismatch. The filters have changed since the list was loaded. Please refresh and try again."
}
filter_hash, then retry.
422 Validation Error
Cause: Invalid query parameter value (e.g. unknown status enum){
"detail": [
{
"loc": ["query", "status[]"],
"msg": "value is not a valid enumeration member; permitted: 'active', 'success', 'loading', 'error'",
"type": "type_error.enum"
}
]
}
Related Endpoints
List Vehicle Consumptions (Organization)
List consumptions and obtain the filter_hash
Unique Values (Organization)
Get the list of source files to filter by
Bulk Delete (Organization)
Delete specific consumption records by ID
Bulk Delete Consumptions by Filters
The single-vehicle equivalent of this endpoint
Was this page helpful?