{"openapi":"3.1.0","info":{"title":"Telemetry Station Agent API","version":"1.0.0","description":"Read-only discovery, pricing estimation, input validation, activation handoff, telemetry retrieval, and inquiry operations for AI Agents. Money is USD and credits (1 USD = 1 credit). All dates are UTC. This API never pays, activates devices, or handles one-time codes or passwords; those steps are completed by the customer on telemetrystation.com. Rate limit: per-IP, default 60 requests per minute; see RateLimit-* and Retry-After headers."},"servers":[{"url":"https://telemetrystation.com/api/agent/v1"}],"x-mcp":{"url":"https://telemetrystation.com/mcp","transport":"streamable-http"},"paths":{"/capabilities":{"get":{"operationId":"getCapabilities","summary":"Service capabilities, limits, and human checkpoints.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/modems":{"get":{"operationId":"listModems","summary":"Supported Iridium modems and eligibility.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/estimates":{"post":{"operationId":"createEstimate","summary":"Price a deployment. Delegates to the Telemetry Station pricing engine. Read-only; creates no charge.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","enum":["sbd","certus"]},"deviceCount":{"type":"integer","minimum":1,"maximum":1000},"mtBytesPerMonth":{"description":"Mobile-terminated bytes sent to each device per month; ignored while MT messages are disabled.","type":"integer","minimum":0,"maximum":9007199254740991},"messageBytes":{"type":"integer","minimum":1,"maximum":9007199254740991},"transmitIntervalMinutes":{"type":"number","exclusiveMinimum":0,"maximum":525600},"estimatedTotalBytesPerMonth":{"type":"integer","minimum":1,"maximum":9007199254740991},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"customerDestinationCount":{"default":0,"type":"integer","minimum":0,"maximum":25},"usePooling":{"default":false,"type":"boolean"},"planId":{"type":"string","minLength":1,"maxLength":40}},"required":["network","deviceCount","startDate","endDate"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/imei-validations":{"post":{"operationId":"validateImeis","summary":"Local format and check-digit validation. Not authoritative.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"imeis":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","maxLength":40}}},"required":["imeis"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/activation-requirements":{"get":{"operationId":"getActivationRequirements","summary":"What the customer must do to activate devices.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/activation-preparations":{"post":{"operationId":"prepareActivation","summary":"Validate a plan choice and return a pre-filled customer link. Does not activate or charge.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"network":{"type":"string","enum":["sbd","certus"]},"deviceCount":{"type":"integer","minimum":1,"maximum":1000},"mtBytesPerMonth":{"description":"Mobile-terminated bytes sent to each device per month; ignored while MT messages are disabled.","type":"integer","minimum":0,"maximum":9007199254740991},"messageBytes":{"type":"integer","minimum":1,"maximum":9007199254740991},"transmitIntervalMinutes":{"type":"number","exclusiveMinimum":0,"maximum":525600},"estimatedTotalBytesPerMonth":{"type":"integer","minimum":1,"maximum":9007199254740991},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"endDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"customerDestinationCount":{"default":0,"type":"integer","minimum":0,"maximum":25},"usePooling":{"default":false,"type":"boolean"},"planId":{"type":"string","minLength":1,"maxLength":40},"imeis":{"maxItems":1000,"type":"array","items":{"type":"string"}},"destinations":{"maxItems":25,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["email","directip","https"]},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["type","value"]}}},"required":["network","deviceCount","startDate","endDate","planId"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/custom-solutions":{"get":{"operationId":"listCustomSolutions","summary":"Custom engineering and BEAR Module inquiry options.","responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/inquiry-drafts":{"post":{"operationId":"draftInquiry","summary":"Validate an inquiry draft. Sends nothing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"email":{"type":"string","maxLength":254},"organization":{"type":"string","maxLength":120},"category":{"type":"string","enum":["general","sales","technical_support","customer_support","billing","device_activation","partnership","privacy","bear_module"]},"message":{"type":"string","maxLength":4000}},"required":["name","email","category","message"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/inquiries":{"post":{"operationId":"submitInquiry","summary":"Send an inquiry to Telemetry Station. Requires confirmedByCustomer: true after the customer approves the exact text.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"email":{"type":"string","maxLength":254},"organization":{"type":"string","maxLength":120},"category":{"type":"string","enum":["general","sales","technical_support","customer_support","billing","device_activation","partnership","privacy","bear_module"]},"message":{"type":"string","maxLength":4000},"confirmedByCustomer":{"type":"boolean","const":true}},"required":["name","email","category","message","confirmedByCustomer"]}}}},"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["data","requestId"],"properties":{"data":{"type":"object","additionalProperties":true},"requestId":{"type":"string"}}}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/telemetry/messages":{"get":{"operationId":"getTelemetryMessages","summary":"Retrieve device messages for a UTC window of at most 31 days.","description":"Authenticate with the customer's data API key as a Bearer token; keys are rejected in URLs. The window is half-open [start, end). For an incremental hourly job, poll with start = last processed UTC day and end = tomorrow, and de-duplicate records by IMEI and message time. Records are returned unchanged in data.records.","security":[{"customerApiKey":[]}],"parameters":[{"name":"imeis","in":"query","required":true,"description":"Comma-separated 15-digit IMEIs (max 50).","schema":{"type":"string"}},{"name":"start","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"end","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"format","in":"query","schema":{"type":"string","enum":["json","csv"],"default":"json"}}],"responses":{"200":{"description":"JSON envelope, or text/csv when format=csv.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request. error.details lists each field problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, malformed, or rejected API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The agent API is not enabled on this deployment."},"429":{"description":"Rate limited. Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error. Retryable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"customerApiKey":{"type":"http","scheme":"bearer","description":"The customer's Telemetry Station data API key: the apiKey value in the export URL from Device actions in their dashboard. Read-only telemetry access."}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"8-128 characters. A repeated key with the same body replays the first response (best effort, per server instance, 24 hours).","schema":{"type":"string","minLength":8,"maxLength":256}}},"schemas":{"Error":{"type":"object","required":["error","requestId"],"properties":{"requestId":{"type":"string"},"error":{"type":"object","required":["code","message","retryable"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{},"nextAction":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"}}}}}}}}}}