Consumptions CSV Import
const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-organization-id': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({file_name: '<string>'})
};
fetch('https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv"
payload = { "file_name": "<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/v1/vehicle_consumptions/bulk/csv \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"file_name": "<string>"
}
'{
"upload_url": "<string>",
"file_name": "<string>",
"file_id": "<string>",
"destination_file_key": "<string>",
"message": "<string>"
}Consumptions CSV Import
Generate a presigned URL for bulk vehicle consumption import via CSV
POST
/
v1
/
vehicle_consumptions
/
bulk
/
csv
Consumptions CSV Import
const options = {
method: 'POST',
headers: {
'x-api-key': '<x-api-key>',
'x-organization-id': '<x-organization-id>',
'Content-Type': 'application/json'
},
body: JSON.stringify({file_name: '<string>'})
};
fetch('https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv"
payload = { "file_name": "<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/v1/vehicle_consumptions/bulk/csv \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"file_name": "<string>"
}
'{
"upload_url": "<string>",
"file_name": "<string>",
"file_id": "<string>",
"destination_file_key": "<string>",
"message": "<string>"
}← Vehicles API
Generate a presigned S3 upload URL for bulk importing vehicle consumption records via CSV file. After uploading the CSV to the returned URL, the system processes the file asynchronously and creates the consumption records.
Request
Headers
string
required
Your API key for authenticationExample:
sk_live_1234567890abcdefstring
required
Your organization UUIDExample:
a8315ef3-dd50-43f8-b7ce-d839e68d51faBody Parameters
string
required
Name of the CSV file to upload (must end in
.csv)Example: fleet-fuel-q1-2025.csvResponse
string
Presigned S3 URL to upload the CSV file via PUT request
string
The file name as stored
string
UUID of the created file record for tracking
string
S3 key where the file will be stored
string
Confirmation message
Example
# Step 1: Get presigned upload URL
RESPONSE=$(curl -s -X POST "https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}" \
-H "Content-Type: application/json" \
-d '{"file_name": "fleet-fuel-q1-2025.csv"}')
UPLOAD_URL=$(echo $RESPONSE | jq -r '.upload_url')
# Step 2: Upload the CSV to the presigned URL
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: text/csv" \
--data-binary @fleet-fuel-q1-2025.csv
import requests
import os
headers = {
"x-api-key": os.getenv("DCYCLE_API_KEY"),
"x-organization-id": os.getenv("DCYCLE_ORG_ID"),
"Content-Type": "application/json",
}
# Step 1: Get presigned upload URL
response = requests.post(
"https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv",
headers=headers,
json={"file_name": "fleet-fuel-q1-2025.csv"},
)
result = response.json()
upload_url = result["upload_url"]
print(f"File ID: {result['file_id']}")
# Step 2: Upload the CSV
with open("fleet-fuel-q1-2025.csv", "rb") as f:
requests.put(upload_url, data=f, headers={"Content-Type": "text/csv"})
print("Upload complete — processing will begin shortly")
const axios = require('axios');
const fs = require('fs');
const headers = {
'x-api-key': process.env.DCYCLE_API_KEY,
'x-organization-id': process.env.DCYCLE_ORG_ID,
'Content-Type': 'application/json',
};
// Step 1: Get presigned upload URL
const { data } = await axios.post(
'https://api.dcycle.io/v1/vehicle_consumptions/bulk/csv',
{ file_name: 'fleet-fuel-q1-2025.csv' },
{ headers },
);
console.log(`File ID: ${data.file_id}`);
// Step 2: Upload the CSV
const csvData = fs.readFileSync('fleet-fuel-q1-2025.csv');
await axios.put(data.upload_url, csvData, {
headers: { 'Content-Type': 'text/csv' },
});
console.log('Upload complete — processing will begin shortly');
Successful Response
{
"upload_url": "https://s3.eu-west-1.amazonaws.com/dcycle-uploads/...",
"file_name": "fleet-fuel-q1-2025.csv",
"file_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"destination_file_key": "organizations/org-uuid/vehicle-consumptions/a1b2c3d4.csv",
"message": "Upload URL generated successfully"
}
Row validation: unit per fuel
Each row’sunit_measure must be one of the units its consumption’s fuel accepts (the fuel_units of
List Vehicle Fuels). The consumption’s fuel is the row’s
fuel(optional) value, or the vehicle’s primary fuel when that cell is blank, so on a multi-fuel
vehicle the same unit can be valid on one row and refused on another. A refused row is stored in
error with ERR_UNIT_NOT_ALLOWED_FOR_FUEL and is not calculated.
Common Errors
401 Unauthorized
Cause: Missing or invalid API key{"detail": "Invalid API key for organization", "code": "INVALID_API_KEY"}
403 Forbidden
Cause: The authenticated user is not a member of the organization{"detail": "Logged User is not Member of Organization", "code": "LOGGED_USER_NOT_MEMBER"}
422 Unprocessable Entity
Cause: Invalid or missing file name in the request body{
"detail": [
{
"loc": ["body", "file_name"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
Related Endpoints
List Consumptions
Browse imported consumption records
Delete by File
Delete all consumptions from a specific import
Was this page helpful?