API Overview
The Inpera API is built with NestJS and provides RESTful endpoints for managing projects, annotations, integrations, and billing.
Base URL
https://api.inpera.app
Authentication
Most endpoints require JWT authentication:
curl -X GET https://api.inpera.app/projects/organization/:orgId \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Public endpoints (embed script, public annotations) use project keys:
curl -X POST https://api.inpera.app/v1/collect \
-H "Content-Type: application/json" \
-H "x-project-key: YOUR_PROJECT_KEY" \
-d '{ ... }'
Available Modules
| Module | Description |
|---|---|
/auth |
Authentication (register, login, refresh, password reset) |
/projects |
Project CRUD, embed script generation |
/annotations |
Visual feedback management |
/organizations |
Workspace management |
/billing |
Plans, subscriptions, invoices |
/integrations |
Third-party connections |
/webhooks |
Event notifications |
/snapshots |
Page snapshots |
/environments |
Staging/production URLs |
/v1/collect |
Embed script data collection |
Response Format
Successful responses return data directly:
{
"id": "uuid",
"name": "Project Name",
"createdAt": "2024-01-01T00:00:00Z"
}
Error responses:
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}
Rate Limiting
The API uses throttling to prevent abuse. Rate limits are applied per-user and per-IP.
HTTP Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 429 | Too Many Requests |
| 500 | Server Error |