Skip to main content

gRPCurl

Disclaimer

All sample code, scripts, configuration files, and accompanying documentation (collectively, "Sample Materials"), is provided solely to demonstrate connectivity to the ADS-B Exchange Streaming Platform. Your use of the Sample Materials is subject to your existing Terms of Use with JETNET. In the event of any conflict, the Terms of Use shall control.

The Sample Materials are for evaluation and testing purposes only and are not intended or approved for use in any production or operational environment. Do not deploy these samples or any derivative code in a live environment without independent design, validation, and testing by qualified personnel. JETNET expressly disclaims responsibility for any damages, data loss, or service interruptions arising from production use of the Sample Materials.

The Sample Materials are provided "as is" without warranty of any kind, express or implied, including warranties of merchantability, fitness for a particular purpose, accuracy, or non-infringement. JETNET does not warrant that the Sample Materials are error-free or suitable for your environment.

The Sample Materials reference third-party software, including Docker, grpcurl, and jq, for convenience only. JETNET is not affiliated with, does not endorse, and assumes no responsibility for any third-party software. Use of third-party tools is at your own risk and subject to their respective licenses and terms.

Your Client ID and Subscription ID are confidential. Do not share them with unauthorized parties, embed them in source code repositories, or transmit them unsecured. JETNET is not liable for any unauthorized access or data exposure resulting from your failure to safeguard your credentials.

JETNET reserves the right to modify or withdraw the Sample Materials at any time without prior notice.

Your Credentials

Important

Treat these as secrets — do not share or commit them to version control.

Important

Streams can drop unexpectedly — network blips, planned platform updates, or transient errors. Build your client to auto-reconnect with exponential backoff (e.g. 1s, 2s, 4s, 8s etc) and resume the stream automatically.

Value
Endpointstream.adsbexchange.com:443
ClientIdYOUR_CLIENT_ID
SubscriptionIdYOUR_SUBSCRIPTION_ID

Install grpcurl

grpcurl is available via Homebrew, Chocolatey, Scoop, the Go toolchain, or as a release binary — install it however suits your platform.

Save the proto

aircraft.proto
syntax = "proto3";
package jetnet.aircraft;

message StartStreamRequest {
string subscription_id = 1;
}

message JsonAircraftBatch {
bytes json_data = 1;
}

service AircraftStreamingService {
rpc StartStream(StartStreamRequest) returns (stream JsonAircraftBatch);
}

Connect

grpcurl \
-import-path . -proto aircraft.proto \
-H "client-id: <YOUR_CLIENT_ID>" \
-d '{"subscription_id": "<YOUR_SUBSCRIPTION_ID>"}' \
stream.adsbexchange.com:443 \
jetnet.aircraft.AircraftStreamingService/StartStream

Each batch's json_data field carries the JSON payload as raw bytes — grpcurl displays bytes as base64-encoded text in its output. A successful connection without errors confirms the platform is reachable.

For the proto contract and per-aircraft JSON fields, see Aircraft.