---
title: "Ingest Telemetry Batch"
method: POST
path: "/api/b2b/telemetry/ingest"
tags: ["b2b-telemetry"]
---

# Ingest Telemetry Batch

`POST /api/b2b/telemetry/ingest`

## Request

- Base URL: `https://geo.sig.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://geo.sig.ai/api/b2b/telemetry/ingest`
- Auth: none declared

Ingest anonymous telemetry batch from browser extensions.

**Privacy-First Design:**
- No PII collected
- Queries are SHA-256 hashed (irreversible)
- Only aggregated data exposed
- GDPR/CCPA compliant

**Idempotency:**
Event IDs are tracked to prevent duplicate processing.

**Request Body:**
- `events`: List of 1-100 anonymous telemetry events

**Example Request:**
```json
{
    "events": [
        {
            "event_id": "550e8400-e29b-41d4-a716-446655440000",
            "timestamp": "2026-01-15T10:30:00Z",
            "ai_source": "chatgpt",
            "query_tokens_hash": "a" * 64,
            "token_count": 8,
            "query_type": "product",
            "language": "en",
            "mentions": [
                {
                    "entity": "OpenAI",
                    "entity_type": "company",
                    "position_in_results": 2,
                    "sentiment": "positive"
                }
            ],
            "engaged": true,
            "time_on_results_sec": 45,
            "user_region": "US",
            "user_cohort_id": "cohort_abc123",
            "extension_version": "1.0.0"
        }
    ]
}
```

**Response:**
```json
{
    "status": "success",
    "events_processed": 1,
    "events_failed": 0,
    "errors": []
}
```

## Request body

- AnonymousTelemetryBatch: Batch of anonymous telemetry events.
  - `events` AnonymousTelemetryEvent[], required
    - `event_id` string, required: UUID for idempotency
    - `timestamp` string, date-time, required: Event timestamp (ISO 8601)
    - `ai_source` 'chatgpt' | 'claude' | 'gemini' | 'perplexity' | 'grok' | 'other', required: AI platforms tracked by the system.
    - `query_tokens_hash` string, required: SHA-256 hash of tokenized query
    - `token_count` integer, required: Query length indicator
    - `query_type` 'product' | 'comparison' | 'how-to' | 'opinion' | 'factual' | 'other', required: Types of queries mentioning brands.
    - `language` string: ISO 639-1 language code
    - `mentions` object[]: Brand mentions in results
    - `engaged` boolean: Did user click/interact?
    - `time_on_results_sec` integer: Time viewing results
    - `user_region` string, required: ISO country code
    - `user_cohort_id` string, required: Stable anonymous cohort ID
    - `extension_version` string, required: Extension version (semver)

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error
- `429`: Rate Limit Exceeded
- `500`: Internal Server Error

---

[API](https://skmtc.dev/sig/apis/ai-visibility-intelligence-api.md) · [All operations](https://skmtc.dev/sig/apis/ai-visibility-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sig/apis/ai-visibility-intelligence-api/revisions/3ec39f9be9e0?raw)
