---
title: "List your sites"
method: GET
path: "/v1/sites"
tags: ["Sites"]
---

# List your sites

`GET /v1/sites`

## Request

- Base URL: `https://api.feelingsurf.fr`
- URL: `https://api.feelingsurf.fr/v1/sites`
- Auth: HTTP bearer

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

The caller's (non-deleted) sites.

- object
  - `data` Site[]
    - `id` integer: Unique identifier.
    - `url` string: The website's URL.
    - `name` string, nullable: Optional user-chosen name.
    - `paused` boolean: Whether the user has paused delivery.
    - `blocked` boolean: Whether the platform has blocked the site (e.g. dead link).
    - `limit_reached` boolean: Whether a configured visit cap has been reached.
    - `devices` object: Device targeting split, as percentages summing to 100.
      - `desktop` integer: Percentage of visits sent to desktop devices.
      - `mobile` integer: Percentage of visits sent to mobile devices.
      - `tablet` integer: Percentage of visits sent to tablet devices.
    - `visit_duration` object: Visit duration range, in seconds.
      - `min_seconds` integer: Shortest visit duration, in seconds.
      - `max_seconds` integer: Longest visit duration, in seconds.
    - `visit_distribution` 'even' | 'asap': How visits are paced — "even" spreads them across the day, "asap" delivers as fast as possible.
    - `limits` object: Visit caps; null means no limit.
      - `hourly` integer: Max visits per hour — always at least 1 (an hourly cap is mandatory).
      - `daily` integer, nullable: Max visits per day; null means no limit.
      - `total` integer, nullable: Max visits in total (lifetime); null means no limit.
    - `schedule` object: Active-hours scheduling.
      - `active_hours_mask` string, nullable: A weekly on/off schedule: a 168-character string, one character per hour (24 hours × 7 days). Each is `1` (active that hour) or `0` (paused). The first character is Monday 00:00 and each next is the following hour, ending Sunday 23:00, in `time_zone`. `null` or all-`1`s means always on; at least one hour must be active, so an all-`0`s mask is rejected.
      - `time_zone` string, nullable: IANA time zone for the active-hours schedule (e.g. "Europe/Paris"); null uses your account timezone.
    - `traffic_quality` object: Traffic quality controls.
      - `low_quality_ips` boolean: Whether low-quality IPs (VPN/proxy/datacenter) may deliver visits to this site.
      - `ipv6` boolean: Whether IPv6 visitors may deliver visits to this site.
    - `browsing` object: Browsing options.
      - `max_sub_windows` integer: How many pop-up windows the visited site may open during a visit.
    - `traffic_sources` integer[]: IDs of assigned traffic sources (resolve via GET /v1/traffic-sources).
    - `labels` integer[]: IDs of assigned labels (resolve via GET /v1/labels).
    - `total_visits` integer: Lifetime visits delivered.
    - `created_at` string, date-time, nullable: When it was created (UTC), or null.
  - `meta` PageMeta: Pagination metadata for a list response.
    - `limit` integer: Page size applied (clamped).
    - `offset` integer: Number of items skipped before this page.
    - `total` integer: Total number of items across all pages.

## Other responses

- `401`: Missing or invalid API key.
- `403`: The request is not allowed. A banned or disabled account is rejected with `forbidden`; a site setting your plan does not include is rejected with `premium_required`.
- `429`: Too many requests — the per-account, per-minute rate limit was exceeded. Wait the number of seconds given in the `Retry-After` response header, then retry.

---

[API](https://skmtc.dev/feelingsurf/apis/feelingsurf-api.md) · [All operations](https://skmtc.dev/feelingsurf/apis/feelingsurf-api/llms.txt) · [OpenAPI document](https://skmtc.dev/feelingsurf/apis/feelingsurf-api/revisions/8b09d26880d6?raw)
