Vigilia Errors API
Every error group Vigilia recorded, diagnosed or not.
Every error group Vigilia recorded, diagnosed or not.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/getvigilia-com:getvigilia-com-errors-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Vigilia Errors API
version: 1.0.0
summary: Read your apps and incidents, and mark incidents fixed — the same things the Vigilia dashboard does.
description: 'Vigilia watches your live app, explains every problem in plain language and writes a fix prompt for your AI builder. This API gives your own scripts and AI agents the same view.
**Authentication.** Create a personal access token in the dashboard under Settings → API tokens, and send it as `Authorization: Bearer vgs_…`. A token acts as you across every app you own, so keep it secret. Read-only tokens can call every `GET`; changing an incident needs a read & write token.
**The fix loop.** List your open incidents (worst first), read one — its `fixPrompt` is written for your builder and its `evidence` carries the technical detail — fix it, then `POST …/resolve`. Resolving opens a fix watch: if the error stays away through real traffic for 24 hours, Vigilia confirms the fix (`fix.watch` becomes `verified`).
**Rate limits.** Per token, per minute: Free 60, Pro 300, Team 600. Free accounts also have 2,000 requests a day across all their tokens (API and MCP together), reset at midnight UTC. Over either limit you get `429` with a `Retry-After` header; the daily one has the code `daily_limit`.
**Conventions.** Timestamps are epoch milliseconds. Errors are always `{ "error": { "code", "message" } }`. Something that exists but belongs to another account is reported as `404`, never `403`.'
contact:
name: Vigilia support
email: support@getvigilia.com
url: https://getvigilia.com
servers:
- url: https://app.getvigilia.com/v1
description: Production
security:
- bearerAuth: []
tags:
- name: Errors
description: Every error group Vigilia recorded, diagnosed or not.
paths:
/apps/{appId}/errors:
get:
tags:
- Errors
summary: An app's error groups, most recently seen first
description: Every distinct error Vigilia recorded for the app — including ones it filtered as noise, or held back for budget — not only the diagnosed ones.
operationId: listErrors
parameters:
- $ref: '#/components/parameters/AppId'
- name: status
in: query
schema:
type: string
enum:
- open
- resolved
- ignored
- all
default: all
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 200
default: 50
responses:
'200':
description: Error groups.
content:
application/json:
schema:
type: object
required:
- errors
- hasMore
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorGroup'
hasMore:
type: boolean
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/RateLimited'
components:
responses:
NotFound:
description: No such thing on your account.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Too many requests for this token (`rate_limited`), or a Free account's daily requests are used up (`daily_limit`) — wait `Retry-After` seconds.
headers:
Retry-After:
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InvalidRequest:
description: A parameter has a value that isn't allowed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthenticated:
description: No token, or not a valid one.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
ErrorGroup:
type: object
properties:
id:
type: string
appId:
type: string
type:
type: string
enum:
- error
- unhandledrejection
- console_error
- failed_fetch
title:
type: string
pagePattern:
type: string
status:
type: string
enum:
- open
- resolved
- ignored
diagnosis:
type: string
enum:
- pending
- diagnosing
- done
- failed
- skipped
- filtered
skipReason:
type:
- string
- 'null'
enum:
- budget
- fair-use
- app-limit
- null
filterReason:
type:
- string
- 'null'
count:
type: integer
sessions:
type: integer
firstSeenAt:
type: integer
lastSeenAt:
type: integer
regressed:
type: boolean
environment:
type: string
incidentId:
type:
- string
- 'null'
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
enum:
- unauthenticated
- insufficient_scope
- not_found
- invalid_request
- rate_limited
- internal
message:
type: string
parameters:
AppId:
name: appId
in: path
required: true
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: A personal access token (`vgs_…`) from Settings → API tokens.