Requires an API key with full_access scope.
Jobs are individual tasks within a project, such as a drone inspection, a survey flight, or a thermal scan.
Path parameters
The unique identifier of the project this job belongs to.
Body
Job name. 1 to 100 characters.
Job type (e.g. drone_inspection, thermal_inspection, 3d_mapping). Must
match one of the job types configured in your workspace.
Either one_time or recurring.
Start date in ISO 8601 format (e.g. 2026-04-15). Cannot be more than 6
months in the past.
status
string
default:"not_started"
Job status. One of: draft, not_started, planned, in_progress, completed, on_hold, weather_delayed, technical_issues, cancelled, aborted, other. Defaults to not_started.Your workspace may show custom display names for these statuses in the dashboard. The API always uses the predefined values listed above. Use other with other_status_reason for statuses that don’t map to a predefined value.
Priority level. One of: low, medium, high. Defaults to medium.
Job description. Max 1000 characters.
End date in ISO 8601 format. Must be on or after start_date.
Latitude of the job location. Between -90 and 90. Must be provided together
with longitude.
Longitude of the job location. Between -180 and 180. Must be provided together
with latitude.
Notes for the inspection. Max 2000 characters.
Array of capture types for this job. Valid values: drone_inspection,
thermal_inspection, video_capture, 3d_mapping, lidar_scan,
orthomosaic, ground_smartphone, ground_360, panorama. Max 20 items, no
duplicates.
Your own identifier for this job. Max 255 characters. Useful for mapping to
records in your own system.
Required when status is other. 1 to 200 characters.
Recurring job fields
These fields only apply when job_pattern is recurring. All are optional and can be configured later from the dashboard.
Recurrence frequency. One of: daily, weekly, monthly, yearly,
flexible.
Repeat every N periods (e.g. every 2 weeks). Between 1 and 365. Cannot be used
with flexible frequency.
Days of the week for the job to repeat. Array of numbers where 0 = Sunday, 1 =
Monday, …, 6 = Saturday. Max 7 values.
Which week of the month. One of: 1, 2, 3, 4, or -1 (last week).
Multiple weeks of the month. Array of values: 1, 2, 3, 4, or -1
(last week). Max 5 values, no duplicates.
Number of flights per occurrence. Between 1 and 10.
Recurring examples
Every weekday:
{
"job_pattern": "recurring",
"recurring_frequency": "weekly",
"selected_days_of_week": [1, 2, 3, 4, 5]
}
Every 2 weeks:
{
"job_pattern": "recurring",
"recurring_frequency": "weekly",
"recurring_interval": 2
}
Monthly on the first and third week:
{
"job_pattern": "recurring",
"recurring_frequency": "monthly",
"weeks_of_month": [1, 3]
}
Response
The unique identifier of the newly created job.
curl -X POST https://api.dronebundle.com/v1/projects/01964c6b-7a3e-7f00-8000-abc123def456/jobs \
-H "Authorization: Bearer v1_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Roof Inspection - Building A",
"type": "drone_inspection",
"job_pattern": "one_time",
"start_date": "2026-04-20",
"priority": "high",
"description": "Inspect roof for damage after storm.",
"latitude": 55.6761,
"longitude": 12.5683,
"external_id": "JOB-2001"
}'
{
"id": "019d4350-a1b2-7c3d-8e4f-567890abcdef"
}
Errors
400 Bad Request - Validation failed.
{
"message": "name is required"
}
Other validation messages include:
name must be between 1 and 100 characters
type is required
job_pattern must be one_time or recurring
start_date is required
start_date must be a valid ISO date string
end_date must be on or after start_date
latitude must be between -90 and 90
longitude must be between -180 and 180
latitude and longitude must be provided together
other_status_reason is required when status is "other"
external_id must not exceed 255 characters
404 Not Found - Project not found.
{
"message": "Project not found"
}