---
title: "Get installation status"
method: GET
path: "/v1/sites/{siteId}/installation"
tags: ["Sites"]
---

# Get installation status

`GET /v1/sites/{siteId}/installation`

## Request

- Base URL: `https://api.ironfang.com/analytics`
- URL: `https://api.ironfang.com/analytics/v1/sites/{siteId}/installation`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

What must be true before the site records, step by step, and the public key its snippet will carry. `snippet` is the script tag that installs the current SDK release, pinned by integrity; it is null only when no release or active key is available. Needs analytics.sites.read.

## Response `200`

Installation status

- Installation
  - `public_key` string, required
  - `ready` boolean, required: True when every step is done.
  - `site_id` string, uuid, required
  - `snippet` string, nullable, required: The script tag to install, once: it loads /sdk/loader.js, which is always the newest SDK release, so it never needs changing. Null when no SDK release or active key is available.
  - `steps` object[], required
    - `detail` string, required
    - `done` boolean, required
    - `id` 'site_active' | 'collection_active' | 'origin_verified' | 'recording_enabled' | 'recorder_released', required

## Other responses

- `401`: No credential, an invalid one, an expired partner integration key, or a delegated token where none is accepted (`unauthorized`, `invalid_api_key`, `api_key_expired`, `delegated_not_allowed`).
- `403`: The credential lacks the permission or scope, names another organisation, or belongs to a partner integration that is not active (`forbidden`, `insufficient_scope`, `integration_inactive`).
- `404`: No such object in this organisation (`not_found`).

---

[API](https://skmtc.dev/ironfang/apis/ironfang-analytics-api.md) · [All operations](https://skmtc.dev/ironfang/apis/ironfang-analytics-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ironfang/apis/ironfang-analytics-api/revisions/08197080c3d7?raw)
