Skip to main content
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"
}
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

projectId
string
required
The unique identifier of the project this job belongs to.

Body

name
string
required
Job name. 1 to 100 characters.
type
string
required
Job type (e.g. drone_inspection, thermal_inspection, 3d_mapping). Must match one of the job types configured in your workspace.
job_pattern
string
required
Either one_time or recurring.
start_date
string
required
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
string
default:"medium"
Priority level. One of: low, medium, high. Defaults to medium.
description
string
Job description. Max 1000 characters.
end_date
string
End date in ISO 8601 format. Must be on or after start_date.
latitude
number
Latitude of the job location. Between -90 and 90. Must be provided together with longitude.
longitude
number
Longitude of the job location. Between -180 and 180. Must be provided together with latitude.
inspection_notes
string
Notes for the inspection. Max 2000 characters.
capture_types
string[]
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.
external_id
string
Your own identifier for this job. Max 255 characters. Useful for mapping to records in your own system.
other_status_reason
string
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.
recurring_frequency
string
Recurrence frequency. One of: daily, weekly, monthly, yearly, flexible.
recurring_interval
number
Repeat every N periods (e.g. every 2 weeks). Between 1 and 365. Cannot be used with flexible frequency.
selected_days_of_week
number[]
Days of the week for the job to repeat. Array of numbers where 0 = Sunday, 1 = Monday, …, 6 = Saturday. Max 7 values.
week_of_month
number
Which week of the month. One of: 1, 2, 3, 4, or -1 (last week).
weeks_of_month
number[]
Multiple weeks of the month. Array of values: 1, 2, 3, 4, or -1 (last week). Max 5 values, no duplicates.
flights_per_occurrence
number
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

id
string
required
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"
}