Skip to Content
APIsIntegration Kit

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

EnvironmentBase URL
Sandboxhttps://sandbox-api.udai.live/v1
Staginghttps://staging-api.udai.live/v1
Productionhttps://api.udai.live/v1

Start on the sandbox. Host policy: Environments.

2. Obtain credentials

  1. Register an organisation and at least one verified Admin or Owner user (Authentication, Organisations).
  2. Request a sandbox partner-api-key through your DFI or AAI integration contact (Sandbox).
  3. Note the organisation UUID for X-Organisation-ID.
  4. 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.

  1. 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.
  2. Include identity fields schema_version, event_id, session_uuid, and sequence_number on 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" }
  1. Treat MQTT telemetry_ack with highest_contiguous_sequence as 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

GoalPage
Resettable test hostSandbox
Full endpoint catalogueAPI Overview
Live awareness and alertsAirspace Awareness API
Session telemetry after take-offFlight sessions, Telemetry wire contract
Last updated on