For Developers

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.

Client Applications ------------------- | v +-----------+ +-----------+ +-----------+ | REST API | | WebSocket | | GraphQL | | /api/v1/* | | /ws | | /graphql | +-----------+ +-----------+ +-----------+ | | | +--------+-------+--------+-------+ | | v v +-----------------+ +-----------+ | Service Layer | | Auth | | (Business Logic)| | (JWT/OAuth| +-----------------+ +-----------+ | +----------+----------+----------+ | | | | v v v v +--------+ +-------+ +----------+ +----+ |Postgres| | Redis | |Meilisearch| | S3 | +--------+ +-------+ +----------+ +----+

Base URL

All REST and GraphQL requests should be directed to:

https://api.trcr.pro/api/v1

WebSocket connections use:

wss://api.trcr.pro/ws

Authentication

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_TOKEN

Access 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 token
  • FORBIDDEN -- insufficient permissions
  • NOT_FOUND -- resource does not exist
  • VALIDATION_ERROR -- invalid request body
  • RATE_LIMIT_EXCEEDED -- too many requests
  • INTERNAL_ERROR -- server error