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/vehicles/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/vehicles/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/vehicles/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>"
}CSV Import
Generate a presigned URL for bulk vehicle import via CSV
POST
/
v1
/
vehicles
/
bulk
/
csv
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/vehicles/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/vehicles/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/vehicles/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 vehicles via CSV file. After uploading the CSV to the returned URL, the system processes the file asynchronously and creates the vehicles.
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-vehicles-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/vehicles/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-vehicles-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-vehicles-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/vehicles/bulk/csv",
headers=headers,
json={"file_name": "fleet-vehicles-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-vehicles-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/vehicles/bulk/csv',
{ file_name: 'fleet-vehicles-2025.csv' },
{ headers },
);
console.log(`File ID: ${data.file_id}`);
// Step 2: Upload the CSV
const csvData = fs.readFileSync('fleet-vehicles-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-vehicles-2025.csv",
"file_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"destination_file_key": "organizations/org-uuid/vehicles/a1b2c3d4.csv",
"message": "Upload URL generated successfully"
}
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 Vehicles
Browse imported vehicles
Create Vehicle
Create a single vehicle manually
Was this page helpful?