Pirsch Domains API

Manage tracked domains and their configuration

Operations 11

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /domain List the domains I can access · List domains #
Ask an LLM
“Which websites do I have access to in Pirsch?”
“Can I search my tracked domains by hostname?”
Tell an agent
List all my tracked domains.
Find my domains matching {search}.
POST /domain Add a website for tracking · Create a domain #
Ask an LLM
“How do I start tracking a new website?”
“Can I make a newly added site's dashboard public?”
Tell an agent
Add the website {hostname} with subdomain {subdomain} in timezone {timezone}.
Start tracking {hostname} as {subdomain} in {timezone} under organization {organization_id}.
DELETE /domain Permanently delete a domain and its data · Delete a domain #
Ask an LLM
“How do I stop tracking a site and erase all its analytics?”
“Is deleting a domain reversible, or is the data gone for good?”
Tell an agent destructive · confirm first
Delete domain {id} and all of its data.
Permanently remove the website {id} from my account.
POST /domain/hostname Change a domain's hostname · Update domain hostname #
Ask an LLM
“My site moved to a new hostname. How do I update it?”
“Can I change the primary hostname of a tracked domain?”
Tell an agent
Change the hostname of domain {domain_id} to {hostname}.
Point domain {domain_id} at the new primary hostname {hostname}.
POST /domain/subdomain Change a domain's dashboard subdomain · Update domain subdomain #
Ask an LLM
“Can I rename the dashboard subdomain for one of my sites?”
“What's the way to pick a different subdomain for my public dashboard?”
Tell an agent
Change the subdomain of domain {domain_id} to {subdomain}.
Rename the dashboard subdomain for {domain_id} to {subdomain}.
POST /domain/timezone Change a domain's reporting timezone · Update domain timezone #
Ask an LLM
“How do I make my site's statistics use my local timezone?”
“Can I switch the timezone a domain reports in?”
Tell an agent
Set the timezone of domain {domain_id} to {timezone}.
Switch domain {domain_id} to report in {timezone}.
POST /domain/settings Update a domain's settings · Update domain settings #
Ask an LLM
“Where do I change the general settings of an existing domain?”
“Can I update a site's configuration settings in one call?”
Tell an agent
Update the settings of domain {domain_id} to {settings}.
Apply new configuration settings to domain {domain_id}.
GET /domain/alternative List a domain's alternative hostnames · List alternative domains #
Ask an LLM
“Which extra hostnames are counted toward my site's statistics?”
“Can I see all alternative domains attached to a site?”
Tell an agent
List the alternative domains for domain {domain_id}.
Show every additional hostname tracked under {domain_id}.
POST /domain/alternative Add an alternative hostname to a domain · Create alternative domain #
Ask an LLM
“How do I track a second hostname, like a www version, under the same site?”
“Can I add another domain name that reports into an existing dashboard?”
Tell an agent
Add alternative hostname {hostname} to domain {domain_id}.
Count traffic from {hostname} under domain {domain_id} too.
PUT /domain/alternative Change an alternative domain's hostname · Update alternative domain #
Ask an LLM
“How do I fix a typo in an alternative hostname I already added?”
“Can I change the hostname on an existing alternative domain?”
Tell an agent
Change alternative domain {id} to hostname {hostname}.
Update the extra hostname {id} so it reads {hostname}.
DELETE /domain/alternative Remove an alternative hostname · Delete alternative domain #
Ask an LLM
“How can I stop counting an extra hostname for my site?”
“Can I remove an alternative domain without deleting the main site?”
Tell an agent destructive · confirm first
Delete alternative domain {id}.
Remove the extra hostname {id} from its site.

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/pirsch:pirsch-domains-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

pirsch-domains-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Pirsch Domains API
  description: RESTful API for sending page views, events, and session data to Pirsch, and for querying statistics including visitors, pages, referrers, UTM parameters, geo-location, device, browser, conversion goals, funnels, and real-time active visitors. Also exposes management endpoints for domains, members, clients, webhooks, email reports, traffic filters, short links, and views.
  version: '1'
  contact:
    name: Pirsch Support
    url: https://pirsch.io
  license:
    name: Proprietary
    url: https://pirsch.io/privacy
servers:
- url: https://api.pirsch.io/api/v1
  description: Pirsch production API
security:
- BearerAuth: []
tags:
- name: Domains
  description: Manage tracked domains and their configuration
paths:
  /domain:
    get:
      operationId: listDomains
      summary: List domains
      description: Get all domains accessible to the authenticated user
      tags:
      - Domains
      parameters:
      - name: id
        in: query
        schema:
          type: string
      - name: subdomain
        in: query
        schema:
          type: string
      - name: domain
        in: query
        schema:
          type: string
      - name: access
        in: query
        schema:
          type: string
      - name: search
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Domain list
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Domain'
    post:
      operationId: createDomain
      summary: Create a domain
      description: Create a new domain for tracking
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDomainRequest'
      responses:
        '200':
          description: Created domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Domain'
    delete:
      operationId: deleteDomain
      summary: Delete a domain
      description: Permanently delete a domain and all its data
      tags:
      - Domains
      parameters:
      - name: id
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Domain deleted
  /domain/hostname:
    post:
      operationId: updateDomainHostname
      summary: Update domain hostname
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain_id
              - hostname
              properties:
                domain_id:
                  type: string
                hostname:
                  type: string
      responses:
        '200':
          description: Hostname updated
  /domain/subdomain:
    post:
      operationId: updateDomainSubdomain
      summary: Update domain subdomain
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain_id
              - subdomain
              properties:
                domain_id:
                  type: string
                subdomain:
                  type: string
      responses:
        '200':
          description: Subdomain updated
  /domain/timezone:
    post:
      operationId: updateDomainTimezone
      summary: Update domain timezone
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain_id
              - timezone
              properties:
                domain_id:
                  type: string
                timezone:
                  type: string
      responses:
        '200':
          description: Timezone updated
  /domain/settings:
    post:
      operationId: updateDomainSettings
      summary: Update domain settings
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain_id
              properties:
                domain_id:
                  type: string
                settings:
                  type: object
      responses:
        '200':
          description: Settings updated
  /domain/alternative:
    get:
      operationId: listAlternativeDomains
      summary: List alternative domains
      tags:
      - Domains
      parameters:
      - name: domain_id
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Alternative domains
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AlternativeDomain'
    post:
      operationId: createAlternativeDomain
      summary: Create alternative domain
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain_id
              - hostname
              properties:
                domain_id:
                  type: string
                hostname:
                  type: string
      responses:
        '200':
          description: Alternative domain created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlternativeDomain'
    put:
      operationId: updateAlternativeDomain
      summary: Update alternative domain
      tags:
      - Domains
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - id
              - hostname
              properties:
                id:
                  type: string
                hostname:
                  type: string
      responses:
        '200':
          description: Alternative domain updated
    delete:
      operationId: deleteAlternativeDomain
      summary: Delete alternative domain
      tags:
      - Domains
      parameters:
      - name: id
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Alternative domain deleted
components:
  schemas:
    AlternativeDomain:
      type: object
      properties:
        id:
          type: string
        domain_id:
          type: string
        hostname:
          type: string
    CreateDomainRequest:
      type: object
      required:
      - hostname
      - subdomain
      - timezone
      properties:
        hostname:
          type: string
        subdomain:
          type: string
        timezone:
          type: string
        organization_id:
          type: string
        theme_id:
          type: string
        public:
          type: boolean
        group_by_title:
          type: boolean
        disable_scripts:
          type: boolean
        display_name:
          type: string
        settings:
          type: object
    Domain:
      type: object
      properties:
        id:
          type: string
        hostname:
          type: string
        subdomain:
          type: string
        def_time:
          type: string
          format: date-time
        mod_time:
          type: string
          format: date-time
        user_id:
          type:
          - string
          - 'null'
        organization_id:
          type:
          - string
          - 'null'
        timezone:
          type: string
        public:
          type: boolean
        disable_scripts:
          type: boolean
        subscription_active:
          type: boolean
        display_name:
          type: string
        group_by_title:
          type: boolean
        user_role:
          type: string
          enum:
          - Owner
          - Admin
          - Viewer
        theme_id:
          type: string
        settings:
          type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Pass an OAuth2 access token obtained from POST /token, or a static access key, as a Bearer token in the Authorization header.