API Documentation

Build on TimeNova API.

A REST API for time entries, projects, tasks, reports, and webhooks — everything the TimeNova dashboard does, programmatically.

Overview

One API for Time, Projects, and Reports

The TimeNova API mirrors the dashboard: create and query time entries, manage projects and tasks, pull reports, and subscribe to events with webhooks.

Time Entries
Projects & Tasks
Webhooks

Authentication

API Keys

Authenticate every request with an API key generated from your organization's settings, passed as a Bearer token.

Authentication
curl https://api.timenova.com/v1/time-entries \
  -H "Authorization: Bearer YOUR_API_KEY"

Base URL

All Requests Start Here

Every endpoint is relative to https://api.timenova.com/v1. All requests and responses use JSON.

Requests & Responses

Create a Time Entry

A minimal example: create a time entry for a project and task, then read the entry back in the response.

Request
curl -X POST https://api.timenova.com/v1/time-entries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "proj_9F3kd2",
    "taskId": "task_7bQ1lm",
    "startedAt": "2026-07-21T09:00:00Z",
    "durationSeconds": 5400
  }'
Response
{
  "id": "time_4mP2xz",
  "projectId": "proj_9F3kd2",
  "taskId": "task_7bQ1lm",
  "startedAt": "2026-07-21T09:00:00Z",
  "durationSeconds": 5400,
  "createdAt": "2026-07-21T09:00:03Z"
}

Endpoints

Available Endpoints

Time Entries

MethodPathDescription
GET/time-entriesList time entries for the authenticated organization.
POST/time-entriesCreate a manual time entry.
PATCH/time-entries/{id}Update an existing time entry.
DELETE/time-entries/{id}Delete a time entry.

Projects & Tasks

MethodPathDescription
GET/projectsList projects.
POST/projectsCreate a project.
GET/projects/{id}/tasksList tasks for a project.
POST/projects/{id}/tasksCreate a task.

Reports

MethodPathDescription
GET/reports/summaryAggregate tracked time by user, project, or date range.
GET/reports/costsCost report with per-project budgets.

Webhooks

MethodPathDescription
GET/webhooksList configured webhook endpoints.
POST/webhooksRegister a new webhook endpoint.
DELETE/webhooks/{id}Remove a webhook endpoint.

SDKs & Libraries

Client Libraries

The API is plain REST + JSON, so any HTTP client works today. Official language SDKs are on the roadmap.

cURL / HTTPAvailable
JavaScript / TypeScriptComing soon
PythonComing soon
GoComing soon

Rate Limits

Keeping the API Fast for Everyone

Requests are limited per API key. Once you exceed the limit, the API responds with 429 Too Many Requests and a Retry-After header — wait that many seconds before retrying. Need a higher limit for your workload? Reach out through the Contact page.

LimitValue
Requests per minute120
Burst allowance20 requests
Webhook delivery retriesAutomatic, with exponential backoff

Error Codes

Error Responses

Errors are returned as standard HTTP status codes with a JSON body describing what went wrong.

StatusMeaningDescription
400Bad RequestThe request body is missing a required field or is malformed.
401UnauthorizedThe API key is missing, invalid, or has been revoked.
403ForbiddenThe API key is valid but lacks permission for this action.
404Not FoundThe requested resource does not exist in this organization.
422Unprocessable EntityThe request is well-formed but fails validation.
429Too Many RequestsThe rate limit was exceeded — check the Retry-After header.
500Internal Server ErrorSomething went wrong on our end — safe to retry.

Ready to Build?

Create an account to generate your API key and start making requests.