---
title: "Get Org Snippet"
method: GET
path: "/snippet"
tags: ["Snippet"]
---

# Get Org Snippet

`GET /snippet`

## Request

- Base URL: `https://be.graph8.com/api/v1`
- URL: `https://be.graph8.com/api/v1/snippet`
- Auth: HTTP bearer

Get the tracking snippet for the authenticated organization.

Returns the write key and pre-built snippets without requiring a
connected repository. Pass `stream_id` to choose the stream; otherwise the
org's main stream is used (its only stream, or the one whose domain matches
the org's website). If that is ambiguous the first stream is used as before
and the response sets `action_required` with `available_streams` to pick from.

## Query parameters

- `stream_id` string, nullable: Tracking stream to use (from GET /streams). When omitted, the organization's main stream is used: its only stream, or the one matching its website domain.

## Headers

- `Authorization` string, nullable
- `X-Target-Org-Id` string, nullable

## Response `200`

Successful Response

- ApiResponseSnippetResponse
  - `data` SnippetResponse, required
    - `write_key` string, required
    - `tracking_host` string
    - `domains` string[]
    - `react_snippet` string, required: Ready-to-use React component import for @graph8/nextjs
    - `script_tag` string, required: Vanilla JS script tag for non-React apps
    - `config` object: Full configuration object for gtm/config.json
    - `stream_id` string, nullable: ID of the tracking stream the write key belongs to, when known.
    - `stream_name` string, nullable: User-friendly name of that stream, when known.
    - `stream_selection` string, nullable: How the stream was chosen: 'explicit' (stream_id given), 'repo_write_key' (the repository's stored key), 'only_stream', 'domain_match' (matches the organization's website), or 'first_stream_fallback' (ambiguous; see action_required).
    - `action_required` boolean: True when the organization has several streams and none could be identified as its main website. The write key is the first stream's (unchanged legacy default); pick the right one from available_streams and call again with stream_id.
    - `warning` string, nullable: Human-readable explanation when action_required is true, or a stream setup advisory.
    - `available_streams` StreamInfoResponse[]: The organization's streams to choose from. Filled only when action_required is true.
      - `id` string, required: Stream ID used to select this stream
      - `name` string, required: User-friendly stream name (e.g. 'graph8.com', 'heyreach-graph8')
      - `domains` string[]: Domains associated with this stream
      - `write_key` string, nullable: Public write key for this stream
      - `repo_id` string, nullable: Connected repository whose stored write key belongs to this stream. Null when no connected repository uses it: streams are organization-level, not owned by a repo.
      - `is_default` boolean: True for the stream GET /snippet uses when no stream_id is given: the only stream, or the one whose domain matches the organization's website. False on every stream when that choice is ambiguous; pass stream_id explicitly then.
      - `domains_restricted` boolean: Whether the stream lists allowed domains. False means its public write key is accepted from any website (see warning).
      - `warning` string, nullable: Read-only advisory about this stream's setup, e.g. no allowed domains. Nothing is enforced.
  - `pagination` PaginationMeta
    - `page` integer, required: Current page number (1-indexed)
    - `limit` integer, required: Items per page
    - `total` integer, required: Total number of items
    - `has_next` boolean, required: Whether there are more pages
    - `next_cursor` string, nullable: Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers.
    - `total_available` integer, nullable: Search endpoints only: how many records really match, when known. Can be larger than `total`, which is capped at the 10,000 results that can be paged. For company search this is a distinct-company estimate. Null when unknown; absent outside search.
    - `total_is_lower_bound` boolean, nullable: Search endpoints only: true when more records match than `total` shows (the result set is larger than the 10,000 results that can be paged). Absent outside search.
    - `notes` string[], nullable: Search endpoints only: plain-language notes about the result, e.g. that more records match than can be paged, or that a reversed `between` range was put in order.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graph8/apis/graph8-developer-api.md) · [All operations](https://skmtc.dev/graph8/apis/graph8-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/graph8/apis/graph8-developer-api/revisions/2e7cfa0ca921?raw)
