Build with TRCR
Integrate time tracking, project management, invoicing, and team collaboration into your own applications. TRCR exposes a complete set of REST, WebSocket, and GraphQL APIs backed by a high-performance Rust backend.
Developer Overview
TRCR provides three complementary API interfaces so you can choose the one that fits your use case. Every feature available in the web application is fully accessible through the API, enabling custom integrations, automations, and third-party tooling.
Architecture
The platform is built on a Rust backend with PostgreSQL for persistent storage, Redis for caching and pub/sub, Meilisearch for full-text search, and S3-compatible object storage for files.
Base URL
All REST and GraphQL requests should be directed to:
https://api.trcr.pro/api/v1WebSocket connections use:
wss://api.trcr.pro/wsAuthentication
TRCR uses JWT Bearer tokens. Obtain an access token by logging in via the /auth/login endpoint, then include it in every request:
Authorization: Bearer YOUR_ACCESS_TOKENAccess tokens expire after 15 minutes. Use the refresh token to obtain new access tokens without re-authenticating. See the Authentication page for full details.
Quick Start
Here is a minimal example that authenticates and lists your tasks:
1. Log in
curl -X POST https://api.trcr.pro/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "your-password"}'The response contains access_token and refresh_token.
2. List tasks
curl https://api.trcr.pro/api/v1/tasks \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"3. Start a timer
curl -X POST https://api.trcr.pro/api/v1/time-entries/start \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"project_id": "PROJECT_ID", "description": "Working on feature"}'API Interfaces
REST API
Traditional request/response API. Best for CRUD operations, server-to-server integrations, and scripting. Returns JSON. Full reference: REST API Docs.
WebSocket API
Persistent bidirectional connection. Best for real-time applications that need live updates (entity changes, chat messages, notifications). Also supports request/response patterns. WebSocket Docs.
GraphQL API
Flexible query language. Best when you need to fetch exactly the data you need in a single request, or when building complex UIs that aggregate multiple resources. GraphQL Docs.
MCP Interface
Model Context Protocol server. Best for connecting AI assistants (Claude Desktop/Code, OpenAI Codex, ChatGPT) so they can act in a workspace — tracking time, managing tasks, invoicing, and reporting through ~150 tools. MCP Docs.
Business Processes
Learn about common workflows like time tracking, invoicing, project management, and team collaboration in the Business Processes guide.
Rate Limits
REST and GraphQL endpoints are rate-limited to 100 requests per minute per user. WebSocket connections are limited to 60 messages per minute. Exceeding these limits returns a 429 Too Many Requests status.
Error Format
All APIs return errors in a consistent format:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Email is required",
"details": { "field": "email" }
}
}Common error codes:
UNAUTHORIZED-- missing or invalid tokenFORBIDDEN-- insufficient permissionsNOT_FOUND-- resource does not existVALIDATION_ERROR-- invalid request bodyRATE_LIMIT_EXCEEDED-- too many requestsINTERNAL_ERROR-- server error