Integration Kit
Fast path through the real integration journey: register a drone, add pilots, file a mission, file a flight plan, and send telemetry. Start on the Sandbox. Full contracts live in the API Overview.
1. Choose a host
| Environment | Base URL |
|---|---|
| Sandbox | https://sandbox-api.udai.live/v1 |
| Staging | https://staging-api.udai.live/v1 |
| Production | https://api.udai.live/v1 |
Start on the sandbox. Host policy: Environments.
2. Obtain credentials
- Register an organisation and at least one verified Admin or Owner user (Authentication, Organisations).
- Request a sandbox
partner-api-keythrough your DFI or AAI integration contact (Sandbox). - Note the organisation UUID for
X-Organisation-ID. - Log in and keep the access token for the calls below.
curl -X POST "https://sandbox-api.udai.live/v1/auth/login-password" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "operator@example.com",
"password": "YOUR_PASSWORD"
}'Successful responses return an access token (and typically a refresh token). Use it as Authorization: Bearer … on subsequent calls. Full shapes: Authentication.
Required headers for the use cases below: partner-api-key, Authorization, X-Organisation-ID, and Content-Type: application/json. Access matrix: Access control. Error and pagination envelopes: Base URL and responses.
3. Registering a Drone
Asset Manufacturer or Asset Owner organisations register an asset against a known asset model. Required: asset_model_uuid and org_owner_uuid. A successful create returns 201 with the asset payload, including asset_uuid.
curl -X POST "https://sandbox-api.udai.live/v1/assets" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"asset_uin": "UIN-IND-01239X",
"uin_status": 0,
"asset_org_internal_uuid": "ORG-DRN-001",
"asset_model_uuid": "e7a6d7a1-ffb2-4d62-bd7a-034fb8a34a55",
"org_owner_uuid": "9f3a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
"source": 1,
"active_payload_uuids": [
"f8e9d0c1-b2a3-4455-6677-889900aabbcc"
]
}'Keep the returned asset_uuid for missions, flight plans, and sessions. Field rules and certificate flows: Assets. Models must already exist: Asset models.
4. Adding Pilots to an Operator Profile
Associate a verified remote pilot with an Asset Owner organisation in two steps: invite the user into the organisation, then attach pilot credentials.
Invite by email (organisation shortcut over Resource memberships):
curl -X POST "https://sandbox-api.udai.live/v1/users/invitations" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"resource_type": 1,
"resource_uuid": "YOUR_ORG_UUID",
"invitee_type": 1,
"invite_mode": 1,
"invite_identifier": "pilot@example.com",
"invite_role": 3
}'The invitee accepts with POST /users/invitations/accept (or POST /resource-invitations/accept) using the invite token. Then create pilot credentials on the member user:
curl -X POST "https://sandbox-api.udai.live/v1/users/YOUR_USER_UUID/pilot-creds" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"rpc_number": "RPC123456789",
"category": 1,
"sub_category": 1,
"class": 1
}'Use the resulting user UUID as pilot_uuid on missions and flight plans. Details: Users, Resource memberships.
5. Filing a Mission
Asset Owner organisations create missions. The body requires a GeoJSON polygon envelope, height bounds, assets, and pilots. Intersecting Airspace Zones receive Permission rows automatically.
curl -X POST "https://sandbox-api.udai.live/v1/missions" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"mission_name": "Sandbox corridor check",
"mission_description": "Integration kit sample mission",
"start_time": "2025-07-05T06:00:00Z",
"end_time": "2025-07-05T18:00:00Z",
"mission_envelope": {
"type": "Polygon",
"coordinates": [[[77.100, 28.550],[77.200, 28.550],[77.200, 28.450],[77.100, 28.450],[77.100, 28.550]]]
},
"min_height": 30.0,
"max_height": 150.0,
"assets": [
{
"asset_uuid": "e7a6d7a1-ffb2-4d62-bd7a-034fb8a34a55",
"payload_id": "payload-cam-01",
"payload_type": "camera"
}
],
"pilots": ["550e8400-0000-41d4-a716-446655440000"]
}'On success the API returns 201 with the mission payload, including generated permission references. Auto-approval marks AwarenessZone + GreenZone as Approved; other intersecting zones stay Pending for an Airspace Manager. Details: Mission Planning API.
6. Filing a Flight Plan
Create a plan under the mission. The schedule window must fall inside the mission window. The plan inherits mission permissions by reference.
curl -X POST "https://sandbox-api.udai.live/v1/flight-plans?mission_uuid=YOUR_MISSION_UUID" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"asset_uuid": "e7a6d7a1-ffb2-4d62-bd7a-034fb8a34a55",
"pilot_uuid": "550e8400-0000-41d4-a716-446655440000",
"payload_id": "payload-cam-01",
"payload_type": "camera",
"schedule_start_time": "2025-07-05T08:00:00Z",
"schedule_end_time": "2025-07-05T10:00:00Z",
"min_height": 30.0,
"max_height": 80.0,
"flight_envelope": {
"type": "Polygon",
"coordinates": [[[77.120, 28.520],[77.160, 28.520],[77.160, 28.480],[77.120, 28.480],[77.120, 28.520]]]
}
}'Strategic deconfliction may reject shadowed zones if the envelope overlaps an active approved plan. Details: Flight Planning API, Mission Planning API.
7. Sending Telemetry Data
Start a flight session first. The response includes session_uuid and session_token used by both ingest paths below.
curl -X POST "https://sandbox-api.udai.live/v1/flight-sessions" \
-H "partner-api-key: YOUR_PARTNER_KEY" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "X-Organisation-ID: YOUR_ORG_UUID" \
-H "Content-Type: application/json" \
-d '{
"asset_uuid": "e7a6d7a1-ffb2-4d62-bd7a-034fb8a34a55",
"plan_uuid": "YOUR_PLAN_UUID",
"asset_start_latitude": 28.6139,
"asset_start_longitude": 77.209
}'Session contract: Flight sessions.
Sending it yourself
Integrate your own GCS or backend against the wire contract. MQTT is the durable path for frames and acknowledgements; WebSocket ingest on the API host is also available for live sessions.
- Publish frames to
udai/v1/telemetry/{asset}/frames(MQTT 5 over mTLS, QoS 1), or open
wss://sandbox-api.udai.live/v1/flight-sessions/{session_uuid}/telemetry?token={session_token}and push frames at ≤2 Hz. - Include identity fields
schema_version,event_id,session_uuid, andsequence_numberon MQTT frames. Example frame body:
{
"schema_version": 1,
"event_id": "9f2c1b7e-5a44-4c8d-9f21-6b3ad0c7e114",
"session_uuid": "c1d2e3f4-1234-4abc-9000-aabbccddeeff",
"sequence_number": 1843,
"asset_uuid": "e7a6d7a1-ffb2-4d62-bd7a-034fb8a34a55",
"asset_uin": "UIN-IN-0042",
"latitude": 28.6139,
"longitude": 77.209,
"altitude_agl": 118.4,
"heading": 214.5,
"horizontal_speed": 9.2,
"vertical_speed": -0.3,
"battery_remaining_percent": 61,
"is_armed": true,
"is_in_air": true,
"flight_mode": "AUTO",
"timestamp": "2026-09-07T09:15:02.500Z"
}- Treat MQTT
telemetry_ackwithhighest_contiguous_sequenceas the deletion gate for local queues. Full contract: Telemetry wire contract. WebSocket session shape: Flight sessions - Live Telemetry.
Using the UDAI Sync Adapter
The normative producer named in the wire contract is udai-sync-windows-adapter. How to install, configure, and operate that adapter (installer options, certificate enrolment, queue paths, and ops runbooks) is not documented on this site yet. Until that material is published, use the direct MQTT or WebSocket path above, or contact your DFI or AAI integration channel via Support.
8. Next steps
| Goal | Page |
|---|---|
| Resettable test host | Sandbox |
| Full endpoint catalogue | API Overview |
| Live awareness and alerts | Airspace Awareness API |
| Session telemetry after take-off | Flight sessions, Telemetry wire contract |