Sites
get/api/v1/sites

Request

  • Base URL
    https://app.scanopy.net
  • URL
    https://app.scanopy.net/api/v1/sites
  • Auth
    • API key in header Authorization
    • or API key in cookie session_id

Query parameters

credential_idsstring[] nullable

Only sites with one of these credentials assigned. Repeat for several.

effective_stale_after_hoursinteger[] nullable

Only sites whose effective staleness window is one of these, in hours. Repeat for several.

tag_idsstring[] nullable

Filter by tag IDs (returns sites that have ANY of the specified tags)

tag_setsstring[] nullable

Tag sets the site must hold one tag from each of. Each entry is a comma-separated list of tag ids. One entry per tag group the list is filtered by.

searchstring nullable

Free-text search. Case-insensitive substring match against the site's name and the names of its daemons, subnets and VLANs.

group_by'created_at' | 'name' | 'updated_at' | 'effective_stale_after_hours'

Fields the sites list can be ordered and grouped by.

Primary ordering field (used for grouping). Always sorts ASC to keep groups together.

order_by'created_at' | 'name' | 'updated_at' | 'effective_stale_after_hours'

Fields the sites list can be ordered and grouped by.

Secondary ordering field (sorting within groups or standalone sort).

group_by_tag_groupstring uuid nullable

Group by the tag each row holds from this tag group. Takes the place of group_by.

order_by_tag_groupstring uuid nullable

Sort by the position of the tag each row holds from this tag group. Takes the place of order_by.

order_direction'asc' | 'desc'

Direction for ORDER BY clauses.

Direction for order_by field (group_by always uses ASC).

limitinteger nullable

Maximum number of results to return (1-1000, default: 50). Use 0 for no limit.

offsetinteger nullable

Number of results to skip. Default: 0.

Response

List of sites

errorstring nullable

Human-readable failure message. Omitted on success.

successboolean required

true when the request succeeded. false responses carry error instead of data.

Example response

{
  "data": [
    {
      "created_at": "2026-01-15T10:30:00Z",
      "credential_ids": [],
      "effective_stale_after_hours": 672,
      "id": "550e8400-e29b-41d4-a716-446655440002",
      "name": "Home Site",
      "organization_id": "550e8400-e29b-41d4-a716-446655440001",
      "stale_after_hours": null,
      "tags": [],
      "updated_at": "2026-01-15T10:30:00Z"
    }
  ],
  "meta": {
    "api_version": 1,
    "pagination": {
      "has_more": true,
      "limit": 50,
      "offset": 0,
      "total_count": 142
    },
    "server_version": "0.19.4"
  }
}

Changes

    • info

      api operation id get_all_sites removed and replaced with list_sites

    • info

      added the new optional query request parameter credential_ids

    • info

      added the new optional query request parameter effective_stale_after_hours

    • info

      added the new optional query request parameter group_by

    • info

      added the new optional query request parameter group_by_tag_group

    • info

      added the new optional query request parameter order_by

    • info

      added the new optional query request parameter order_by_tag_group

    • info

      added the new optional query request parameter order_direction

    • info

      added the new optional query request parameter search

    • info

      added the new optional query request parameter tag_ids

    • info

      added the new optional query request parameter tag_sets