For the complete documentation index, see llms.txt. This page is also available as Markdown.

Handoff

Get handoff control state

get
/v1/handoff/state

Returns the current handoff control state, including which client (Fotokite Live, Fotokite API, or Plugin) currently controls the system and which clients have requested control. Subscribing to this endpoint is recommended to receive real-time updates.

Required scopes
This endpoint requires the following scopes:
  • : Grants access to retrieve system data and information.
Authorizations
OAuth2clientCredentialsRequired

Plugin authentication using Bearer token. For more details, see Fotokite API Documentation.

Token URL:
Responses
200

Success

application/json

Information about connected and controlling entities.

get/v1/handoff/state
GET /api/v1/handoff/state HTTP/1.1
Host: 192.168.2.100:3128
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
200

Success

{
  "controlling_client": {
    "plugin_id": "My controlling plugin id",
    "plugin_name": "My controlling plugin",
    "session_id": "5",
    "session_name": "Only session",
    "operator_name": "Quick brown fox",
    "last_change": "2025-08-25T18:47:21.191Z"
  },
  "requesting_clients": [
    {
      "plugin_id": "Fotokite Live",
      "plugin_name": "Fotokite Live",
      "session_id": "3",
      "session_name": "Fotokite-D",
      "operator_name": "Fotokite-D",
      "last_change": "2025-08-25T18:48:01.111Z"
    },
    {
      "plugin_id": "My cool plugin Id",
      "plugin_name": "My cool plugin",
      "session_id": "7",
      "session_name": "Main session",
      "operator_name": "Mr. Handoff",
      "last_change": "2025-08-25T18:53:11.839Z"
    }
  ]
}

Request control

post
/v1/handoff/control/request

Requests control of the Fotokite system. If no other client (Fotokite Live, Fotokite API, Plugin) is controlling, control is granted. If another client is controlling, the request is added to the waiting list (requesting_clients) in handoff/state. A request remains valid for 1 minute; clients should periodically re-request control. The result of the request must be monitored using the handoff/state endpoint.

Required scopes
This endpoint requires the following scopes:
  • : Allows sending commands to control the system.
Authorizations
OAuth2clientCredentialsRequired

Plugin authentication using Bearer token. For more details, see Fotokite API Documentation.

Token URL:
Body

Request to take control

operator_namestringRequired

Name of the operator taking control for display in UI.

regulatory_modestringOptional

DroneID regulation variant that the UI provided to the operator complies with. DroneID broadcasts such as those required for FAA RemoteID contain information about the UAS operator. This endpoint can be used to provide such information. An update must be provided regularly according to the applicable regulation to prevent entering a DroneID error state (this may require sending handoff requests more frequently than it is required normally). By setting this value, you declare compliance with the relevant regulation. For the US:

  • An operator location of sufficient accuracy is required. A GPS receiver with SBAS augmentation is sufficient.
  • Any DroneID error reported by the /system/state endpoint must cause an audiovisual indicator to signal a Remote ID failure to the operator.

Please refer to FAA 14 CFR Part 89, ASTM F3411 and ASTM F3586 for details. Possible values:

  • US_REMOTE_ID_STANDARD
  • unset If unset, this operator is not considered as a UAS operator, and a RemoteID error might occur if regulation requires an operator but no other operator is present. If no location information is provided, it is assumed that the operator is in direct vicinity of the Ground Station and the Ground Station location is used as the operator location.
Example: US_REMOTE_ID_STANDARD
operator_gps_latnumber · min: -90 · max: 90Optional

Latitude of the operator reported by GPS [-90..+90] (degrees)

operator_gps_lonnumber · min: -180 · max: 180Optional

Longitude of the operator reported by GPS (-180..+180] (degrees)

operator_gps_elevationnumberOptional

Elevation of the operator reported by GPS (meters)

operator_gps_accuracynumberOptional

Operator GPS accuracy in meters

Responses
201

Request to take control was accepted. This means that either the system is not controlled right now or the requestor already has control. Control will be revoked after 10 seconds. To prevent this, the requestor should periodically call handoff/control/request.

No content

post/v1/handoff/control/request
POST /api/v1/handoff/control/request HTTP/1.1
Host: 192.168.2.100:3128
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "operator_name": "Mr. Handoff"
}

No content

Release control

post
/v1/handoff/control/release

Releases control of the Fotokite system, allowing other clients (Fotokite Live, Fotokite API, or Plugin) to take control.

Required scopes
This endpoint requires the following scopes:
  • : Allows sending commands to control the system.
Authorizations
OAuth2clientCredentialsRequired

Plugin authentication using Bearer token. For more details, see Fotokite API Documentation.

Token URL:
Responses
204

Command was released successfully or requesting client successfully removed from the waiting queue or no one was controlling.

No content

post/v1/handoff/control/release
POST /api/v1/handoff/control/release HTTP/1.1
Host: 192.168.2.100:3128
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Override control

post
/v1/handoff/control/override

Immediately enforces control of the Fotokite system, overriding other clients (Fotokite Live, Fotokite API, or Plugin) that may be blocking access. This endpoint is intended for use mainly by Fotokite Live.

Required scopes
This endpoint requires the following scopes:
  • : Allows sending commands to control the system.
  • : Allows to make `handoff/control/override` call to override current controlling client.
Authorizations
OAuth2clientCredentialsRequired

Plugin authentication using Bearer token. For more details, see Fotokite API Documentation.

Token URL:
Body

Request to take control

operator_namestringRequired

Name of the operator taking control for display in UI.

regulatory_modestringOptional

DroneID regulation variant that the UI provided to the operator complies with. DroneID broadcasts such as those required for FAA RemoteID contain information about the UAS operator. This endpoint can be used to provide such information. An update must be provided regularly according to the applicable regulation to prevent entering a DroneID error state (this may require sending handoff requests more frequently than it is required normally). By setting this value, you declare compliance with the relevant regulation. For the US:

  • An operator location of sufficient accuracy is required. A GPS receiver with SBAS augmentation is sufficient.
  • Any DroneID error reported by the /system/state endpoint must cause an audiovisual indicator to signal a Remote ID failure to the operator.

Please refer to FAA 14 CFR Part 89, ASTM F3411 and ASTM F3586 for details. Possible values:

  • US_REMOTE_ID_STANDARD
  • unset If unset, this operator is not considered as a UAS operator, and a RemoteID error might occur if regulation requires an operator but no other operator is present. If no location information is provided, it is assumed that the operator is in direct vicinity of the Ground Station and the Ground Station location is used as the operator location.
Example: US_REMOTE_ID_STANDARD
operator_gps_latnumber · min: -90 · max: 90Optional

Latitude of the operator reported by GPS [-90..+90] (degrees)

operator_gps_lonnumber · min: -180 · max: 180Optional

Longitude of the operator reported by GPS (-180..+180] (degrees)

operator_gps_elevationnumberOptional

Elevation of the operator reported by GPS (meters)

operator_gps_accuracynumberOptional

Operator GPS accuracy in meters

Responses
201

Success, command taken.

No content

post/v1/handoff/control/override
POST /api/v1/handoff/control/override HTTP/1.1
Host: 192.168.2.100:3128
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "operator_name": "Mr. Handoff"
}

No content

Last updated