Clarity Dashboard Snapshots API

The dashboard_snapshots API from Clarity — 3 operation(s) for dashboard_snapshots.

Operations 6

POST /api/v1/dashboards/{dashboard_id}/snapshots Create Snapshot #
GET /api/v1/dashboards/{dashboard_id}/snapshots List Snapshots #
GET /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id} Get Snapshot #
PATCH /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id} Rename Snapshot #
DELETE /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id} Delete Snapshot #
GET /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id}/entries Get Snapshot Entries #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/onclarity-com:onclarity-com-dashboard-snapshots-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

onclarity-com-dashboard-snapshots-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Dashboard Snapshots API
  version: 0.1.0
tags:
- name: dashboard_snapshots
paths:
  /api/v1/dashboards/{dashboard_id}/snapshots:
    post:
      tags:
      - dashboard_snapshots
      summary: Create Snapshot
      description: 'Create a snapshot in one request: meta + the entries array, one row.


        Raises:

        HTTPException: 413 oversized (best-effort, see below), 422 nested past

        MAX_SNAPSHOT_DEPTH, 404 unknown dashboard, 403 not visible to the caller,

        409 a duplicate seq lost the race.'
      operationId: create_snapshot_api_v1_dashboards__dashboard_id__snapshots_post
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSnapshotRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__dashboard_snapshots__schemas__SnapshotResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - dashboard_snapshots
      summary: List Snapshots
      description: 'List a dashboard''s snapshots, newest first — envelopes only (no meta/entries).


        Raises:

        HTTPException: 404 unknown dashboard, 403 not visible to the caller.'
      operationId: list_snapshots_api_v1_dashboards__dashboard_id__snapshots_get
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__dashboard_snapshots__schemas__SnapshotListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id}:
    get:
      tags:
      - dashboard_snapshots
      summary: Get Snapshot
      description: 'One snapshot''s envelope plus its ``meta`` (elements, filters, who froze it).


        Raises:

        HTTPException: 404 unknown dashboard/snapshot, 403 not visible.'
      operationId: get_snapshot_api_v1_dashboards__dashboard_id__snapshots__snapshot_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotWithMetaResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - dashboard_snapshots
      summary: Rename Snapshot
      description: 'Rename a snapshot (creator or admin). The slug never changes.


        Raises:

        HTTPException: 404 unknown, 403 not visible / not the creator or an admin.'
      operationId: rename_snapshot_api_v1_dashboards__dashboard_id__snapshots__snapshot_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameSnapshotRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__dashboard_snapshots__schemas__SnapshotResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - dashboard_snapshots
      summary: Delete Snapshot
      description: 'Soft-delete a snapshot (creator or admin) — the row keeps its seq, reads hide it.


        Raises:

        HTTPException: 404 unknown, 403 not visible / not the creator or an admin.'
      operationId: delete_snapshot_api_v1_dashboards__dashboard_id__snapshots__snapshot_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/dashboards/{dashboard_id}/snapshots/{snapshot_id}/entries:
    get:
      tags:
      - dashboard_snapshots
      summary: Get Snapshot Entries
      description: 'The frozen request/response entries, ready to hydrate the widget caches.


        Raises:

        HTTPException: 404 unknown dashboard/snapshot, 403 not visible.'
      operationId: get_snapshot_entries_api_v1_dashboards__dashboard_id__snapshots__snapshot_id__entries_get
      security:
      - HTTPBearer: []
      parameters:
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: integer
          title: Dashboard Id
      - name: snapshot_id
        in: path
        required: true
        schema:
          type: integer
          title: Snapshot Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotEntriesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CreateSnapshotRequest:
      properties:
        entries:
          items:
            $ref: '#/components/schemas/SnapshotEntry'
          type: array
          maxItems: 500
          minItems: 1
          title: Entries
          description: Every harvested entry
        frozen_at:
          type: string
          format: date-time
          title: Frozen At
          description: The capture moment (client clock — matches the coverage dialog)
        meta:
          additionalProperties: true
          type: object
          title: Meta
          description: Elements copy, filters, search, filter-name metadata, frozenBy
        name:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Name
          description: Display name; defaults server-side
        schema_version:
          type: integer
          title: Schema Version
          description: Bumped when entries/meta shapes change
          default: 1
      type: object
      required:
      - entries
      - frozen_at
      - meta
      title: CreateSnapshotRequest
      description: 'Create a snapshot in ONE request — meta plus the whole entries array, stored

        as one row (one INSERT): the snapshot exists whole or not at all, so there is

        no pending state, no chunked upload, and no sweeper. Plain JSON on the wire —

        a full 25-widget board is ~130 KB; the ingress body cap (50 MB) is the limit.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    src__dashboard_snapshots__schemas__SnapshotResponse:
      properties:
        id:
          type: integer
          title: Id
          description: Global row id
        seq:
          type: integer
          title: Seq
          description: Per-dashboard sequence, display only
        slug:
          type: string
          title: Slug
          description: '"snapshot-{id}" — permanent URL segment (global id, never reused)'
        name:
          type: string
          title: Name
          description: Display name (editable)
        frozen_at:
          type: string
          format: date-time
          title: Frozen At
          description: The capture moment
        created_at:
          type: string
          format: date-time
          title: Created At
        created_by:
          anyOf:
          - type: integer
          - type: 'null'
          title: Created By
          description: User id of whoever froze it
        schema_version:
          type: integer
          title: Schema Version
        entry_count:
          type: integer
          title: Entry Count
          description: Number of frozen request/response entries
        frozen_by:
          anyOf:
          - type: string
          - type: 'null'
          title: Frozen By
          description: Email of whoever froze it
        date_from:
          anyOf:
          - type: string
          - type: 'null'
          title: Date From
          description: Frozen date range start (YYYY-MM-DD)
        date_to:
          anyOf:
          - type: string
          - type: 'null'
          title: Date To
          description: Frozen date range end (YYYY-MM-DD)
      type: object
      required:
      - id
      - seq
      - slug
      - name
      - frozen_at
      - created_at
      - created_by
      - schema_version
      - entry_count
      title: SnapshotResponse
    SnapshotEntriesResponse:
      properties:
        entries:
          items:
            $ref: '#/components/schemas/SnapshotEntry'
          type: array
          title: Entries
      type: object
      required:
      - entries
      title: SnapshotEntriesResponse
    SnapshotWithMetaResponse:
      properties:
        id:
          type: integer
          title: Id
          description: Global row id
        seq:
          type: integer
          title: Seq
          description: Per-dashboard sequence, display only
        slug:
          type: string
          title: Slug
          description: '"snapshot-{id}" — permanent URL segment (global id, never reused)'
        name:
          type: string
          title: Name
          description: Display name (editable)
        frozen_at:
          type: string
          format: date-time
          title: Frozen At
          description: The capture moment
        created_at:
          type: string
          format: date-time
          title: Created At
        created_by:
          anyOf:
          - type: integer
          - type: 'null'
          title: Created By
          description: User id of whoever froze it
        schema_version:
          type: integer
          title: Schema Version
        entry_count:
          type: integer
          title: Entry Count
          description: Number of frozen request/response entries
        frozen_by:
          anyOf:
          - type: string
          - type: 'null'
          title: Frozen By
          description: Email of whoever froze it
        date_from:
          anyOf:
          - type: string
          - type: 'null'
          title: Date From
          description: Frozen date range start (YYYY-MM-DD)
        date_to:
          anyOf:
          - type: string
          - type: 'null'
          title: Date To
          description: Frozen date range end (YYYY-MM-DD)
        meta:
          additionalProperties: true
          type: object
          title: Meta
      type: object
      required:
      - id
      - seq
      - slug
      - name
      - frozen_at
      - created_at
      - created_by
      - schema_version
      - entry_count
      - meta
      title: SnapshotWithMetaResponse
    src__dashboard_snapshots__schemas__SnapshotListResponse:
      properties:
        snapshots:
          items:
            $ref: '#/components/schemas/src__dashboard_snapshots__schemas__SnapshotResponse'
          type: array
          title: Snapshots
      type: object
      required:
      - snapshots
      title: SnapshotListResponse
    RenameSnapshotRequest:
      properties:
        name:
          type: string
          maxLength: 200
          minLength: 1
          title: Name
          description: New display name
      type: object
      required:
      - name
      title: RenameSnapshotRequest
    SnapshotEntry:
      properties:
        element_key:
          type: string
          maxLength: 200
          title: Element Key
          description: Dashboard element this entry belongs to
        endpoint:
          type: string
          maxLength: 200
          title: Endpoint
          description: RTK endpoint name / module-cache id that produced it
        args:
          additionalProperties: true
          type: object
          title: Args
          description: The request args — the replay key
        data:
          title: Data
          description: The post-transform response as the client cached it
        fetched_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Fetched At
          description: When the author's client fetched it
        last_status:
          anyOf:
          - type: string
            maxLength: 20
          - type: 'null'
          title: Last Status
          description: fulfilled | rejected
      type: object
      required:
      - element_key
      - endpoint
      - args
      title: SnapshotEntry
      description: 'One harvested request/response pair — an item of the ``entries`` array.

        ``(element_key, endpoint, args)`` identify the request (``args`` is the replay

        key — the exact hook args that produced the data); ``data`` is the

        post-transform response, ready for upsertQueryData / cache seeding (null for

        an entry recorded without data). Validated on upload so replay never meets a

        malformed item, and re-emitted as-is on read.'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
    HTTPBasic:
      type: http
      scheme: basic