Documentation

One workflow. One outcome: your data.

From sensor to insight: price your deployment, activate any eligible Iridium SBD or Certus modem in about 5 minutes, and your data is ready to download. Available after your first message and stored for up to 5 years at no extra cost.*

Using an AI assistant? Follow the AI agent workflow to estimate deployment costs, prepare a customer activation link, and retrieve telemetry through REST or the available MCP tools. Payment, email codes, and passwords stay with the customer.

*While the account remains active and in good standing, subject to the Terms.

Start here

From sensor to insight.

Your device sends a few bytes over Iridium. We receive, store and bill them, and your data is ready in the dashboard. You build the left side; the right side is handled for you.

  1. 01
    Sensor

    Measures what you care about.

    Your part
  2. 02
    Microcontroller

    Packs readings into bytes and talks to the modem.

    Your part
  3. 03
    Iridium modem

    SBD 9602 / 9603 or Certus 9704 sends the bytes.

    Your part
  4. 04
    Iridium network

    Global coverage, pole to pole.

    Handled for you
  5. 05
    Telemetry Station

    Receives, stores and bills every message.

    Handled for you
  6. 06
    Your data

    Dashboard, data download API and destinations.

    Ready to use

I have an SBD modem

Iridium 9602 or 9603. Best for small messages, up to 340 bytes each.

  1. 1
    Wire the modem
    Connect its UART to your microcontroller or a USB-serial adapter (19200 baud, 8N1 by default), plus power and an antenna with a clear view of the sky.
  2. 2
    Find the IMEI
    It is the 15-digit number on the modem label, or send AT+CGSN and the modem replies with it.
  3. 3
    Price your deployment
    Enter payload size, how often you send and your dates in the SBD calculator. Smaller payloads cost less; the Payload Optimizer shows how to shrink them.
  4. 4
    Activate
    Continue from the calculator: enter and verify the IMEI, add optional destinations, pay with a card and create your password. About 5 minutes.
  5. 5
    Send your first message
    Go outside and run the AT commands in Send your first message. It appears in your dashboard as soon as Iridium delivers it.

I have a Certus 9704

Iridium 9704 on Certus IMT. Larger messages and a modern serial protocol.

  1. 1
    Wire the modem
    Connect UART (230400 baud), ENABLE and BOOTED, reviewed power and an antenna with sky view. BEAR is in G1 design; its supply ratings and hardware integration remain under review.
  2. 2
    Find the IMEI
    It is printed on the modem label. The open-source Telemetry Station SDK also reads it and prints your calculator and activation links.
  3. 3
    Price your deployment
    Use the Certus calculator with your payload size, send interval and dates.
  4. 4
    Activate
    Continue from the calculator: verify the IMEI, add optional destinations, pay and create your password.
  5. 5
    Send your first message
    Start the modem with the SDK and send one message outdoors. See Send your first message.

I'm choosing hardware

No modem yet? Start with what you need to send.

  1. 1
    Small, simple readings
    A few numbers every hour or so fit easily in SBD. 9602 and 9603 modems are mature, widely available and low power.
  2. 2
    Larger or richer messages
    Choose Certus 9704 for larger payloads and a longer-term path on Iridium's newest messaging service.
  3. 3
    Want it on one board?
    The BEAR Module 9704 is in G1 design, with an alpha host SDK and optional GNSS design input. Hardware qualification is pending. No-payment pre-order inquiries are open.
  4. 4
    Not an embedded engineer?
    Pacific Gyre can design the sensor, firmware and full instrument for you. Tell us about your project.
  5. 5
    Check the cost first
    Try both SBD and Certus calculators with the same inputs. No account is needed.
Deployment

Set up a deployment in about 5 minutes.

If you already know your device details, the whole flow is four steps.

  1. 01

    Define the deployment

    Enter your device type (SBD or Certus), message volume, and start and end dates in the calculator. The price you see there carries into activation unchanged.

  2. 02

    Add your devices

    Enter each 15-digit IMEI and verify it. A wrong IMEI is rejected before you pay, so you can correct it and retry.

  3. 03

    Choose destinations (optional)

    Data is always available in your dashboard and API. Add Email, DirectIP, or HTTPS destinations only if you want a copy forwarded.

  4. 04

    Pay and create your password

    Fund your account with credits through secure checkout, then sign in. Your devices appear in the dashboard.

Device side

Send your first message.

Activate first, then send one short message outdoors with a clear view of the sky. Indoors, the modem usually cannot reach a satellite.

Iridium SBD 9602 / 9603: AT commands

AT                 -> OK          modem is awake
AT&K0              -> OK          no hardware flow control (3-wire UART)
AT+SBDWB=12        -> READY       you will send 12 bytes
<12 bytes><2-byte checksum>
                   -> 0  OK       bytes loaded
AT+SBDIX           -> +SBDIX: 0, 1, 0, 0, 0, 0
                      ^ MO status 0-4 = sent; 5 or higher = retry later
The checksum is the low 16 bits of the sum of your bytes, high byte first. If MO status is 5 or higher, wait and retry; the modem needs sky view. Billing uses the bytes you send and the plan's minimum message size.

Iridium Certus 9704: Telemetry Station SDK

ts_bear_start(&bear);       /* ENABLE high, waits for BOOTED      */
for (;;) {
  ts_bear_poll(&bear);      /* call every few ms; never blocks    */
  /* TS_EVENT_READY        -> queue your payload (see SDK README) */
  /* TS_EVENT_MO_DELIVERED -> Iridium confirmed delivery          */
}
ts_bear_shutdown(&bear);    /* wait for TS_EVENT_STOPPED, then    */
                            /* remove power                       */
The open-source C99 SDK (alpha) handles power sequencing and the modem protocol through a portable host interface. MSP430F169 is the first reference host; other ports need individual validation. The bench checkout uses a generated Payload Optimizer codec. It never automatically resends.

Each message appears in your dashboard shortly after Iridium delivers it. Timing depends on satellite visibility and the network.

Data access

Download your data from the dashboard.

The dashboard validates your choices and builds the download for you. No hand-written request is required.

  1. 01

    Open your dashboard

    Sign in to the account that owns the devices.

  2. 02

    Select devices

    Pick rows, or leave all clear to include the whole fleet.

  3. 03

    Choose UTC dates and format

    Set a start day, a later end day, and JSON or CSV.

  4. 04

    Download

    Open the generated link for a file, or copy it into your own workflow.

Try it with example data

Device actionsExample data
Live

Manage devices and export telemetry.

North Pacific Buoy
300000000000001
active
Coastal Weather Station
300000000000002
active
Research Drifter
300000000000003
suspended

Download device data

3 devices
  • North Pacific Buoy300000000000001
  • Coastal Weather Station300000000000002
  • Research Drifter300000000000003

Dates are UTC days—

Request example
curl --fail --location "{DATA_DOWNLOAD_API_URL}/?apiKey=YOUR_API_KEY&imeis=300000000000001%2C300000000000002%2C300000000000003&start=2026-08-14T00%3A00%3A00.000Z&end=2026-08-21T00%3A00%3A00.000Z&format=json" --output telemetry.json

All IMEIs, telemetry values, and credentials above are fictional.

What is in each downloaded record
  • IMEI and device name
  • UTC timestamp
  • Network metadata (SBD or Certus)
  • Raw payload (hex)
  • Decoded values, when a decoder is configured

JSON suits applications and CSV suits spreadsheets. Decoded fields vary by device and decoder configuration.

Custom destinations

Forward Iridium telemetry into the systems you already operate.

Add Email, DirectIP, or HTTPS API destinations in the deployment details when you activate devices. The backend submits a normalized message and one configured destination to the outbound service for each delivery attempt.

Requirements
  • Destinations are available for SBD and Certus devices, with all three types: DirectIP (directip), Email (email), and HTTPS (https).
  • Certus devices: Topic ID: 394 is required in your firmware. Certus messages sent on any other topic are not forwarded. This is an upstream routing requirement, not a topic check performed by the outbound service.
  • Destinations are configured only in the activation deployment details, for both the guest activation flow and the dashboard activation flow.
  • Custom destinations are configured in the deployment details when devices are activated. They stay fixed until the device is deactivated or its deployment end date passes. Destinations cannot be edited on an individual device.
  • Each destination is 5 credits and is included in the activation quote before you pay.
  • Email destinations need a valid address, DirectIP destinations need host:port, and HTTPS destinations need an absolute https:// URL.
SBD (for example, 9602)

SBD deployments can use Email, DirectIP, and HTTPS API destinations. The destination list is paired with the device IMEI in activation so each modem can have its own forwarding configuration.

DirectIP delivery is emitted as a binary DirectIP-compatible mobile-originated frame over TCP.

Certus (for example, 9704)

Certus deployments can also use Email, DirectIP, and HTTPS API destinations. Iridium CloudConnect is the upstream Certus path. Telemetry Station normalizes the CloudConnect message before creating the selected customer delivery.

For DirectIP, Telemetry Station builds the same DirectIP-compatible MO frame expected by the customer TCP listener. This is a Telemetry Station compatibility translation, not native Iridium Certus DirectIP.

Email

Enter the recipient email address. Telemetry Station sends one email for each forwarded message from hello@telemetrystation.com. Allow-list that address if your mail gateway filters automated messages.

Subject
Iridium message from 300234012345678

The service generates both plain-text and HTML bodies. Each body contains the normalized customer message fields and values.

Example message
From: hello@telemetrystation.com
To: you@example.com
Subject: Iridium message from 300234012345678
text/plain body
iridiumDataId: 123456
imei: 300234012345678
sim: 
messageId: 42
dateTime: 2026-10-05T18:30:00.000Z
endTimeOfSession: 2026-10-05T18:30:04.000Z
dataLength: 5
data: 48656c6c6f
satelliteLatitude: 32.7157
satelliteLongitude: -117.1611
satelliteRadiusKm: 12
sessionStatus: COMPLETE
text/html body
<h2>Telemetry Station Iridium message</h2><table>
<tr><th align="left">iridiumDataId</th><td><code>123456</code></td></tr>
<tr><th align="left">imei</th><td><code>300234012345678</code></td></tr>
<tr><th align="left">sim</th><td><code></code></td></tr>
<tr><th align="left">messageId</th><td><code>42</code></td></tr>
<tr><th align="left">dateTime</th><td><code>2026-10-05T18:30:00.000Z</code></td></tr>
<tr><th align="left">endTimeOfSession</th><td><code>2026-10-05T18:30:04.000Z</code></td></tr>
<tr><th align="left">dataLength</th><td><code>5</code></td></tr>
<tr><th align="left">data</th><td><code>48656c6c6f</code></td></tr>
<tr><th align="left">satelliteLatitude</th><td><code>32.7157</code></td></tr>
<tr><th align="left">satelliteLongitude</th><td><code>-117.1611</code></td></tr>
<tr><th align="left">satelliteRadiusKm</th><td><code>12</code></td></tr>
<tr><th align="left">sessionStatus</th><td><code>COMPLETE</code></td></tr>
</table>
How to parse it
  • Prefer the text/plain part. Every field is one line in the form `name: value`, in the same order as the HTTPS JSON body.
  • Split each line on the first `: ` only. Values such as ISO timestamps can contain colons.
  • A field with no value (for example sim when unavailable) is an empty string after the colon, not the word null.
  • All values are plain strings. Convert iridiumDataId, dataLength, satelliteLatitude, satelliteLongitude and satelliteRadiusKm to numbers, and dateTime / endTimeOfSession to dates, yourself.
  • The data field contains even-length hexadecimal, optionally prefixed with 0x, not decoded text. For example, 48656c6c6f represents the 5 bytes of Hello. Payload strings containing newlines are rejected before delivery.
  • The HTML part is the same data as a two-column table. Each value is inside a <code> element and &, <, >, " and ' are HTML-escaped; unescape them before use.
  • The IMEI is also in the subject line, which is a convenient routing key before opening the body.
Reference parser (Node.js)
const NUMERIC = new Set([
  "iridiumDataId", "dataLength",
  "satelliteLatitude", "satelliteLongitude", "satelliteRadiusKm",
]);

// `text` is the text/plain body from your mail library (e.g. mailparser).
function parseTelemetryEmail(text: string) {
  const message: Record<string, string | number | null> = {};
  for (const line of text.split(/\r?\n/)) {
    const split = line.indexOf(": ");
    const name = split === -1 ? line.replace(/:$/, "") : line.slice(0, split);
    if (!name) continue;
    const raw = split === -1 ? "" : line.slice(split + 2);
    message[name] = raw === "" ? null : NUMERIC.has(name) ? Number(raw) : raw;
  }
  return message;
}
DirectIP

Configure a reachable TCP listener as host:port, for example telemetry.example.com:5000. Telemetry Station opens a TCP connection, writes one complete binary DirectIP-compatible MO frame, then closes the connection.

The activation UI accepts host:port. The internal outbound API requires the destination URI tcp://host:port. The example address above is for illustration only; use your own public, reachable listener.

Firewall rule: allow inbound TCP from Telemetry Station source IP 0.0.0.0.
Frame structure
Protocol header

DirectIP protocol version byte followed by the total body length.

MO header element

Message reference, IMEI, session status, MOMSN, MTMSN placeholder, and UTC session timestamp.

Payload element

The normalized telemetry payload.

Location element

Included only when location forwarding is enabled and latitude, longitude, and radius are all available.

How the frame is parsed

A frame is a 3-byte protocol header followed by one or more information elements. All multi-byte integers are big-endian.

  1. Read the first 3 bytes. Byte 0 must be 0x01; bytes 1-2 are the big-endian length of everything that follows.
  2. Read exactly that many bytes from the TCP stream. The sender closes the connection after one frame.
  3. Loop while bytes remain: read 1 byte for the IEI and 2 bytes (big-endian) for the element length L, then read L body bytes.
  4. Dispatch on the IEI and decode the body using the field tables. Skip unknown IEIs by advancing L bytes so future elements do not break your parser.
  5. Validate: the IMEI is 15 digits, the MO header body is 28 bytes, and the sum of (3 + L) over all elements equals the overall message length.
Protocol header
FieldBytesEncodingMeaning
Protocol revision1uint8Always 0x01.
Overall message length2uint16, big-endianNumber of bytes that follow this 3-byte header, i.e. the combined size of every information element including each element's own 3-byte header.
Information element header (repeated before every element)
FieldBytesEncodingMeaning
Information element identifier (IEI)1uint8Selects the element type: 0x01 MO header, 0x02 MO payload, 0x03 MO location.
Information element length2uint16, big-endianNumber of body bytes that follow this 3-byte element header. It does not include the identifier or the length field itself.
IEI 0x01 - MO header

Length: 28 bytes (fixed). Presence: Always first.

FieldBytesEncodingMeaning
Message reference (CDR)4uint32, big-endianThe iridiumDataId value, which must fit an unsigned 32-bit integer.
IMEI15ASCII digitsThe 15-digit device IMEI, one ASCII character per byte.
Session status1uint80 = session completed successfully. Non-zero values report a degraded or failed session.
MOMSN2uint16, big-endianMobile-originated message sequence number: messageId must represent an integer from 0 to 65535. Null becomes 0; out-of-range values are rejected, not wrapped.
MTMSN2uint16, big-endianMobile-terminated sequence number. Always 0 because Telemetry Station does not deliver MT messages here.
Time of session4uint32, big-endianUTC session time as seconds since the Unix epoch.
IEI 0x02 - MO payload

Length: N bytes (variable). Presence: Always present.

FieldBytesEncodingMeaning
PayloadNraw bytesThe telemetry payload exactly as received from the device. N is the element length from the 3-byte element header.
IEI 0x03 - MO location

Length: 11 bytes (fixed). Presence: Only when location forwarding is enabled and latitude, longitude and radius are all available.

FieldBytesEncodingMeaning
Flags1bit fieldBit 1 = 1 when latitude is south (0 = north). Bit 0 = 1 when longitude is west (0 = east). Remaining bits are 0.
Latitude3uint8 degrees + uint16 thousandths of a minute (big-endian)Unsigned magnitude. Decimal degrees = degrees + thousandths / 1000 / 60. Apply the sign from the flags.
Longitude3uint8 degrees + uint16 thousandths of a minute (big-endian)Same layout as latitude.
CEP radius4uint32, big-endianEstimated position radius in kilometers.
Example frame (IMEI 300234012345678, payload "HELLO")
01 0027Protocol revision 1, overall length 39
01 001CIEI 0x01 MO header, length 28
0000002AMessage reference from iridiumDataId 42
33 30 30 32 33 34 30 31 32 33 34 35 36 37 38IMEI "300234012345678"
00Session status 0 (success)
002AMOMSN 42
0000MTMSN 0
6AC3ECA8Time of session 2026-10-05T18:30:00Z
02 0005IEI 0x02 MO payload, length 5
48 45 4C 4C 4FPayload "HELLO"
Reference parser (Node.js)
function parseDirectIp(frame: Buffer) {
  if (frame[0] !== 0x01) throw new Error("Unsupported protocol revision");
  const total = frame.readUInt16BE(1);
  if (frame.length < 3 + total) throw new Error("Incomplete frame");

  const result: Record<string, unknown> = {};
  let offset = 3;
  const end = 3 + total;

  while (offset + 3 <= end) {
    const iei = frame[offset];
    const length = frame.readUInt16BE(offset + 1);
    const body = frame.subarray(offset + 3, offset + 3 + length);
    offset += 3 + length;

    if (iei === 0x01) {
      result.messageReference = body.readUInt32BE(0);
      result.imei = body.toString("ascii", 4, 19);
      result.sessionStatus = body[19];
      result.momsn = body.readUInt16BE(20);
      result.mtmsn = body.readUInt16BE(22);
      result.sessionTime = new Date(body.readUInt32BE(24) * 1000);
    } else if (iei === 0x02) {
      result.payload = Buffer.from(body);
    } else if (iei === 0x03) {
      const south = (body[0] & 0b10) !== 0;
      const west = (body[0] & 0b01) !== 0;
      const coord = (i: number) =>
        body[i] + body.readUInt16BE(i + 1) / 1000 / 60;
      result.latitude = (south ? -1 : 1) * coord(1);
      result.longitude = (west ? -1 : 1) * coord(4);
      result.radiusKm = body.readUInt32BE(7);
    }
  }
  return result;
}
DirectIP compatibility requirements

The normalized message must have a 15-digit IMEI, a messageId representing an integer from 0 to 65535 (null maps to 0), a dateTime fitting unsigned 32-bit Unix seconds, and an iridiumDataId fitting an unsigned 32-bit message reference. Out-of-range values are rejected, not wrapped. The hexadecimal payload is decoded to raw bytes for the frame. Location is included only when enabled and all required location values are available.

HTTPS API

Configure a public https:// endpoint such as https://api.example.com/iridium. Telemetry Station sends one POST request for each forwarded message.

Method
POST
Content type
application/json
User agent
TelemetryStation-Outbound/2.0
Example request body
{
  "iridiumDataId": 123456,
  "imei": "300234012345678",
  "sim": null,
  "messageId": "42",
  "dateTime": "2026-10-05T18:30:00.000Z",
  "endTimeOfSession": "2026-10-05T18:30:04.000Z",
  "dataLength": 5,
  "data": "48656c6c6f",
  "satelliteLatitude": 32.7157,
  "satelliteLongitude": -117.1611,
  "satelliteRadiusKm": 12,
  "sessionStatus": "COMPLETE"
}

This is the request sent to your customer endpoint, not the internal request to the outbound service. Delivery-control fields such as destinationId, deliveryMethod, destination, deliveryId, geoDataFlag, and attemptCount are not included. The example data is hexadecimal for "Hello": 10 hex characters representing 5 bytes.

Your endpoint's response

Return any HTTP 200-299 status to accept the message. No response body or JSON schema is required; 204 No Content is sufficient. The service uses only the response status and does not interpret the body.

Current authentication behavior: the outbound service does not add a customer-specific Authorization, bearer-token, or signature header. If your receiver requires authentication, embed a secret token in the destination URL path or query string.
HTTPS JSON fields

The HTTPS body is the serialized customer message. Date values are sent as UTC ISO 8601 strings or null. The payload is an even-length hexadecimal string, optionally prefixed with 0x; there is no separate payload-encoding field. dataLength is the decoded byte count. Null source data becomes an empty string with dataLength 0. geoDataFlag controls only the DirectIP location element; HTTPS and email retain the location fields.

iridiumDataId
number

Telemetry Station identifier for the normalized Iridium message.

imei
string

The 15-digit Iridium device IMEI.

sim
string | null

SIM identifier when available for the source message.

messageId
string | null

Network or message sequence identifier retained with the normalized message.

dateTime
ISO 8601 string | null

Message or session timestamp serialized as an ISO 8601 string when available.

endTimeOfSession
ISO 8601 string | null

End-of-session timestamp serialized as an ISO 8601 string when available.

dataLength
number

Decoded payload length in bytes, not the length of the hexadecimal string. For example, 48656c6c6f represents 5 bytes.

data
string

Even-length hexadecimal payload string, optionally prefixed with 0x. The source string is preserved; null source data becomes an empty string with dataLength 0. No separate encoding field is included.

satelliteLatitude
number | null

Latitude metadata when available.

satelliteLongitude
number | null

Longitude metadata when available.

satelliteRadiusKm
number | null

Associated radius value in kilometers when available.

sessionStatus
string | null

Iridium or normalized session status when available.

Delivery success and failure behavior

Each outbound-service call makes one transport attempt. The service does not create delivery jobs, retry, deduplicate, or persist delivery status; those responsibilities belong to the calling backend. A timeout or lost response can occur after delivery, so the caller must reconcile before retrying.

Email

Delivery succeeds only when the SMTP transport accepts the recipient and does not report a rejected address. This does not guarantee delivery to the mailbox. The default sender is hello@telemetrystation.com, but the service deployment can override it with SMTP_FROM.

DirectIP

Delivery succeeds when the TCP connection is established and the complete frame is written. The service does not wait for an application-level customer acknowledgement.

HTTPS

Any 200–299 response is accepted. Redirects are not followed. Non-2xx status codes, timeouts, and connection errors are treated as failed delivery attempts.

Internal API responses (not webhook acknowledgements)

The backend calls authenticated POST /api/forward with the raw message and destination fields. After successful transport completion, that internal API returns HTTP 200 with {"ok":true}. Failures return an HTTP error status and {"ok":false,"error":{"code":"...","message":"..."}}. Your customer webhook does not need to return either of these JSON bodies.

Destination pricing

Included in the deployment quote.

Destination fees are included as deployment line items in the activation quote, before the promotion is deducted. The normal rate is 5 credits per configured destination, per device, for each UTC calendar month touched by the deployment.

The checkout summary shown at payment lists the payment-processing fee and the final total charged.

Integration checklist

Test the destination before deployment. For DirectIP, verify the firewall and TCP listener. For HTTPS, verify TLS, JSON parsing, 2xx response behavior, and whether you need to add request authentication. For Email, verify the mailbox accepts messages from hello@telemetrystation.com.

Credits and billing

See every credit and every charge.

You prepay with credits and charges are deducted from your balance. Two dashboard sections show exactly what happened and what comes next. All months follow UTC calendar dates.

Account projection: what is next

Pick a month to see how your balance is expected to move, based on known charges. Use it to decide when to add credits.

Opening balance.
Credits in your account at the start of the month.
Credits added.
Credits you purchased that month.
Posted charges.
Charges already deducted, such as activation, prorated service, and usage.
Upcoming charges.
Charges we already know are coming, such as monthly service and destination fees.
Month-end balance.
What remains after posted and upcoming charges. Lowest balance and the projected zero-balance date show how long your credits last.

Billing history: what happened

Pick a UTC month for a statement of credits and charges. Each statement can be downloaded as a PDF.

Credits purchased.
Service credits added to your account.
Processing fees.
Stripe fees apply to dollar-funded checkouts only and are shown separately. Total card payments is credits plus these fees.
Charges posted.
Activation fees, prorated monthly fees, message and data usage, destination fees, suspension fees, and other adjustments.
Account register.
Every credit and charge in the selected UTC month, one line each.
Device charge register.
The same charges grouped by device, so you can see what each one costs.

Both sections use the same ledger, so a charge in the projection becomes a posted charge in your statement, and the closing balance matches your current balance. Destinations cost 5 credits per destination per device per calendar month in the deployment dates.

Automation

Want to script downloads? One GET request.

Copy the URL from your dashboard export. It contains your API key, so keep it private and server-side, rotate the key if it is exposed, and treat every date and timestamp as UTC.

{DATA_DOWNLOAD_API_URL}/?apiKey=YOUR_API_KEY&imeis=300000000000001&start=2026-08-14T00%3A00%3A00.000Z&end=2026-08-21T00%3A00%3A00.000Z&format=json
Query parameters
apiKeyRequired

The API key associated with the authenticated Telemetry Station profile.

Example: YOUR_API_KEY
imeisRequired

One or more 15-digit device IMEIs separated by commas. Duplicate values are removed by the dashboard builder.

Example: 300000000000001,300000000000002
startRequired

The selected start calendar day converted to midnight UTC.

Example: 2026-08-14T00:00:00.000Z
endRequired

The selected end calendar day converted to midnight UTC. It must be later than start.

Example: 2026-08-21T00:00:00.000Z
formatRequired

The requested download representation.

Example: json
Validation rules
  • Every IMEI is exactly 15 digits; duplicates are removed.
  • Start and end are valid UTC dates, and end is later.
  • Format is JSON or CSV.
  • Treat any non-successful HTTP response as a failed export.
Troubleshooting

Quick fixes for common questions.

My IMEI was rejected during activation
Check that it has exactly 15 digits and matches the modem label. If the modem is already active on this account, manage it from the dashboard instead. If it is registered with another provider, contact support and we will explain the next steps.
The device is active but no data has arrived
Data appears after the first message sent on or after your deployment start date (UTC). Move the antenna outdoors with clear sky view, confirm the modem reports a successful send, and check that the device shows Active in the dashboard.
Messages arrive but the values look wrong
Every record includes the raw payload as hex. Compare it with what your firmware packed, and check byte order and scaling. The Payload Optimizer generates matching encode and decode code.
My destination is not receiving messages
HTTPS API endpoints must be public and use https://. DirectIP listeners need the firewall open. Email destinations should allow hello@telemetrystation.com. See Destinations.
My balance is running low
The account projection shows when your balance runs out and recommends a top-up amount. Add credits from the dashboard in a few clicks.
I need to end a deployment early or extend it
Change the end date from the device's Manage window. Ending early is free. Extending quotes only the added time, with no new activation fee.

Still stuck? Contact our engineers. Signed-in customers can also use Technical support on the Account page.

Status and roadmap

What's live, and what's next.

We ship a feature when it is reliable enough to run your deployment on. Anything not yet live is labeled, and its documentation is added when it launches, so you never plan around a feature that isn't ready.

Live

Available to every account today.

Rolling out

Built and in testing. They appear in your dashboard as they are enabled.

  • Send messages to devices (MT)
  • Saved MT messages
  • Payload parsers and parsed downloads
  • Open-source SDKAlpha: F169 checkout, generated codec, optional GNSS API
Planned

On the roadmap. Details are published when each one is ready.

  • Analytics and alerts
  • Shared data across devices (pooling)
  • BEAR Module 9704In design (G1). Sales target April 2027, tentative
Glossary

Terms in plain words.

IMEI
The modem's 15-digit ID. It is how Telemetry Station recognizes and bills each device.
SBD
Iridium Short Burst Data. Small messages (up to 340 bytes) from 9602 and 9603 modems.
Certus / IMT
Iridium's newer messaging service used by the 9704 modem, with larger messages.
MO / MT
Mobile-originated messages go from your device to you. Mobile-terminated messages go from you to your device.
Payload
The bytes your device sends. Fewer bytes per message means lower cost.
Credits
Prepaid balance for service. 1 credit = $1.00. Charges are deducted as they happen.
Deployment
A device's planned start and end dates, which set its monthly service charges.
Destination
An optional extra copy of each message sent to your email, DirectIP listener or HTTPS API.
UTC
All dates and months use Coordinated Universal Time, so every customer sees the same boundaries.

Ready to activate? Start in the calculator.

Self-service is all most teams need. If you want help with firmware, integrations, or a custom workflow, our engineers are available.