OpenAPI Specification
openapi: 3.1.0
info:
title: Swetrix Admin Annotations Errors API
description: The Swetrix Admin API manages analytics projects, funnels, annotations, project views (segments), and organisations. Supports full CRUD operations for all Swetrix account resources. All requests require authentication via the X-Api-Key header. Rate limit is 600 requests/hour.
version: '1.0'
contact:
name: Swetrix Support
url: https://swetrix.com/contact
termsOfService: https://swetrix.com/privacy
license:
name: AGPL-3.0
url: https://github.com/Swetrix/swetrix-api/blob/main/LICENSE
servers:
- url: https://api.swetrix.com
description: Swetrix Production API
security:
- ApiKeyAuth: []
tags:
- name: Errors
description: Record JavaScript error events
paths:
/log/error:
post:
operationId: recordError
summary: Record Error Event
description: Records a JavaScript error event for aggregation in the Errors tab of the dashboard. Captures error name, message, stack trace, source file, and location. Errors are grouped by name and message.
tags:
- Errors
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEvent'
example:
pid: abc123projectid
name: TypeError
message: Cannot read property 'foo' of undefined
lineno: 42
colno: 15
filename: https://example.com/app.js
pg: /dashboard
lc: en-US
responses:
'201':
description: Error recorded successfully
content:
application/json:
schema:
type: object
example: {}
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/ServerError'
/v1/log/errors:
get:
operationId: listErrors
summary: List Error Events
description: Returns a paginated list of error event groups for the specified project and time period.
tags:
- Errors
parameters:
- $ref: '#/components/parameters/pid'
- $ref: '#/components/parameters/period'
- $ref: '#/components/parameters/from'
- $ref: '#/components/parameters/to'
- $ref: '#/components/parameters/timezone'
- $ref: '#/components/parameters/filters'
- $ref: '#/components/parameters/take'
- $ref: '#/components/parameters/skip'
responses:
'200':
description: Paginated error list
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
/v1/log/get-error:
get:
operationId: getError
summary: Get Error Details
description: Returns detailed information for a specific error group by error ID.
tags:
- Errors
parameters:
- $ref: '#/components/parameters/pid'
- name: eid
in: query
required: true
schema:
type: string
description: Error group ID
- $ref: '#/components/parameters/period'
- $ref: '#/components/parameters/from'
- $ref: '#/components/parameters/to'
- $ref: '#/components/parameters/timezone'
responses:
'200':
description: Error group details
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
/v1/log/error-overview:
get:
operationId: getErrorOverview
summary: Get Error Statistics Overview
description: Returns aggregated error statistics for chart rendering, showing error counts over the specified time period.
tags:
- Errors
parameters:
- $ref: '#/components/parameters/pid'
- $ref: '#/components/parameters/timeBucket'
- $ref: '#/components/parameters/period'
- $ref: '#/components/parameters/from'
- $ref: '#/components/parameters/to'
- $ref: '#/components/parameters/timezone'
responses:
'200':
description: Error overview chart data
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
components:
parameters:
filters:
name: filters
in: query
schema:
type: string
description: JSON array of filter objects
timeBucket:
name: timeBucket
in: query
required: true
schema:
type: string
enum:
- minute
- hour
- day
- week
- month
- year
description: Time bucket for data aggregation
pid:
name: pid
in: query
required: true
schema:
type: string
description: Project ID
take:
name: take
in: query
schema:
type: integer
default: 30
maximum: 150
description: Number of results to return (max 150)
to:
name: to
in: query
schema:
type: string
format: date
description: Custom range end date (YYYY-MM-DD)
period:
name: period
in: query
required: true
schema:
type: string
enum:
- 1h
- today
- yesterday
- 1d
- 7d
- 4w
- 3M
- 12M
- 24M
- all
description: Time period for the query
skip:
name: skip
in: query
schema:
type: integer
default: 0
description: Number of results to skip for pagination
from:
name: from
in: query
schema:
type: string
format: date
description: Custom range start date (YYYY-MM-DD)
timezone:
name: timezone
in: query
schema:
type: string
default: Etc/GMT
description: IANA timezone name (default Etc/GMT)
responses:
Unauthorized:
description: Unauthorized - missing or invalid API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
ServerError:
description: Internal server error
content:
application/json:
schema:
type: object
properties:
message:
type: string
BadRequest:
description: Bad request - malformed body, missing required fields, or disabled project
content:
application/json:
schema:
type: object
properties:
message:
type: string
schemas:
ErrorEvent:
type: object
required:
- pid
- name
properties:
pid:
type: string
description: Project ID
name:
type: string
maxLength: 200
description: Error name (e.g. TypeError)
message:
type: string
maxLength: 2000
description: Error message
lineno:
type: integer
description: Line number where error occurred
colno:
type: integer
description: Column number where error occurred
stackTrace:
type: string
maxLength: 7500
description: Full stack trace
filename:
type: string
maxLength: 1000
description: Source file URL
tz:
type: string
description: Visitor timezone
pg:
type: string
description: Page path
lc:
type: string
description: Locale
meta:
type: object
description: Custom metadata (max 100 keys, 2000 chars total)
additionalProperties:
type: string
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-Api-Key
description: API key from Swetrix account settings (https://swetrix.com/user-settings)
externalDocs:
description: Swetrix Admin API Documentation
url: https://swetrix.com/docs/admin-api