> ## Documentation Index
> Fetch the complete documentation index at: https://docs.insightsecure.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Ingest Telemetry

> Submit RASP telemetry from the SDK — used internally by the SDKs, documented here for server-side or custom integrations.

This is the endpoint the [Android, iOS, and Flutter SDKs](/device-intelligence/sdks) call automatically. Most integrations never call this directly — document it here for server-side integrations building against the SDK's data model without using the SDK itself.

<Warning>
  Every request must be HMAC-signed — see [Authentication](/api-reference/authentication#signing-outbound-telemetry-sdk-insightai). Unsigned or incorrectly signed requests are rejected before any processing.
</Warning>

### Headers

<ParamField header="X-InsightAI-Signature" type="string" required>
  Base64-encoded HMAC-SHA256 of the raw request body, signed with your tenant's private HMAC secret.
</ParamField>

### Body

<ParamField body="tenant_id" type="string" required>Your tenant slug.</ParamField>
<ParamField body="device_id" type="string" required>Persisted, install-scoped device identifier.</ParamField>
<ParamField body="session_id" type="string" required>Fresh per app launch.</ParamField>

<ParamField body="sdk_meta" type="object" required>
  <Expandable title="properties">
    <ParamField body="sdk_version" type="string" />

    <ParamField body="platform" type="string">`android` | `ios`</ParamField>
    <ParamField body="batch_type" type="string">`full` (first call in a session) | `delta` (subsequent calls, changed fields only)</ParamField>
  </Expandable>
</ParamField>

<ParamField body="scorer" type="object" required>
  The client-computed `rasp_score`/`rasp_action`/`rasp_flags` — treated as advisory; InsightAI re-scores server-side from `signals` for the authoritative decision. See [Beyond RASP — securing the pipeline](/device-intelligence/beyond-rasp#securing-the-pipeline-itself) for why.
</ParamField>

<ParamField body="signals" type="object" required>
  Nested by detection category (`root`, `emulator`, `debugger`, `tamper`, `ecosystem`, `network`) — see [RASP detection categories](/device-intelligence/rasp#detection-categories) for what each contains.
</ParamField>

### Response

<ResponseField name="status" type="string">`accepted`</ResponseField>
<ResponseField name="rasp_score" type="integer">Server-recomputed score (0–100).</ResponseField>
<ResponseField name="rasp_action" type="string">Server-recomputed action — this, not the client-submitted one, is authoritative.</ResponseField>

```json Example response theme={null}
{
  "status": "accepted",
  "rasp_score": 45,
  "rasp_action": "REVIEW"
}
```
