Reonic Time Tracking API
Time entries logged against projects. > [!warning] > **Beta:** These endpoints are in beta and may change as the service evolves. Please report issues or unexpected behavior to our team.
Time entries logged against projects. > [!warning] > **Beta:** These endpoints are in beta and may change as the service evolves. Please report issues or unexpected behavior to our team.
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/reonic-time-tracking-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Reonic REST Api v3 Time Tracking API
description: The Reonic REST API v3 provides programmatic access to create and manage resources.
version: 3.2.0
contact:
email: kontakt@reonic.de
url: https://reonic.com
name: Reonic GmbH
servers:
- url: '{apiBaseUrl}/rest/v3/'
security:
- X-Authorization: []
tags:
- name: Time Tracking
description: 'Time entries logged against projects.
> [!warning]
> **Beta:** These endpoints are in beta and may change as the service evolves. Please report issues or unexpected behavior to our team.'
x-displayName: Time Tracking (BETA)
paths:
/timetracking/eventTypes:
get:
summary: Get time tracking event types
description: 'Get all time tracking event types, optionally including archived ones.
**Allowed API keys:** Read-only, Read and Write'
tags:
- Time Tracking
x-badges:
- name: BETA
position: before
color: '#ea580c'
parameters:
- schema:
type:
- boolean
- 'null'
default: false
required: false
name: showArchived
in: query
- schema:
type: string
example: no-cache
required: false
name: Reonic-Cache-Control
in: header
description: Set to 'no-cache' to bypass the 1-hour response cache and force a fresh read. The fresh response is then written back to the cache for subsequent callers. Forced refreshes count against the uncached rate-limit bucket (30/min); only cache hits count against the cached bucket (500/min).
responses:
'200':
description: Array of event types
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TimetrackingEventType'
description: List of items
required:
- data
operationId: getTimetrackingEventTypes
x-operation-id-source: derived
/timetracking:
get:
summary: List time tracking entries
description: 'List time tracking entries with filters and pagination. Page size is fixed at 50.
**Allowed API keys:** Read-only, Read and Write'
tags:
- Time Tracking
x-badges:
- name: BETA
position: before
color: '#ea580c'
parameters:
- schema:
type: integer
minimum: 1
default: 1
description: 'Page number, starting from 1. Default: 1.'
required: false
description: 'Page number, starting from 1. Default: 1.'
name: page
in: query
- schema:
type:
- boolean
- 'null'
default: false
required: false
name: archived
in: query
- schema:
type:
- array
- 'null'
items:
type: string
format: uuid
maxItems: 50
description: Comma-separated list or repeated query param.
required: false
description: Comma-separated list or repeated query param.
name: userIds
in: query
- schema:
type:
- array
- 'null'
items:
type: string
format: uuid
maxItems: 50
description: Comma-separated list or repeated query param.
required: false
description: Comma-separated list or repeated query param.
name: eventTypeIds
in: query
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
required: false
name: parentId
in: query
- schema:
type: string
enum:
- residentialProject
- commercialProject
required: false
name: parentType
in: query
- schema:
type:
- string
- 'null'
format: date-time
description: Filter records where startAt is after this datetime (exclusive)
example: '2026-01-01T15:30:00.000Z'
required: false
description: Filter records where startAt is after this datetime (exclusive)
name: startAt.gt
in: query
- schema:
type:
- string
- 'null'
format: date-time
description: Filter records where startAt is before this datetime (exclusive)
example: '2026-01-01T15:30:00.000Z'
required: false
description: Filter records where startAt is before this datetime (exclusive)
name: startAt.lt
in: query
- schema:
type: string
example: no-cache
required: false
name: Reonic-Cache-Control
in: header
description: Set to 'no-cache' to bypass the 1-hour response cache and force a fresh read. The fresh response is then written back to the cache for subsequent callers. Forced refreshes count against the uncached rate-limit bucket (30/min); only cache hits count against the cached bucket (500/min).
responses:
'200':
description: Paginated time tracking entries
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TimetrackingEntry'
pagination:
type: object
properties:
page:
type: integer
minimum: 1
description: Current page number
perPage:
type: integer
minimum: 1
description: Number of items per page
total:
type: integer
minimum: 0
description: Total number of items across all pages
totalPages:
type: integer
minimum: 1
next:
type:
- string
- 'null'
description: Path to the next page, or null if there is no next page
prev:
type:
- string
- 'null'
description: Path to the previous page, or null if there is no previous page
required:
- page
- perPage
- total
- totalPages
- next
- prev
required:
- data
- pagination
operationId: getTimetracking
x-operation-id-source: derived
/timetracking/create:
post:
summary: Create time tracking entries
description: 'Bulk create one or more time tracking entries.
**Allowed API keys:** Read and Write'
tags:
- Time Tracking
x-badges:
- name: BETA
position: before
color: '#ea580c'
requestBody:
content:
application/json:
schema:
type: object
properties:
entries:
type: array
items:
type: object
properties:
startAt:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
endAt:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
timestamp:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
userId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
comment:
type: string
maxLength: 4000
typeId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
parentId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
parentType:
type: string
enum:
- residentialProject
- commercialProject
breaks:
type: array
items:
type: object
properties:
start:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
end:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
required:
- start
- end
additionalProperties: false
maxItems: 100
latLng:
type: object
properties:
lat:
type: number
minimum: -90
maximum: 90
lng:
type: number
minimum: -180
maximum: 180
required:
- lat
- lng
additionalProperties: false
required:
- startAt
- endAt
- timestamp
- userId
additionalProperties: false
minItems: 1
maxItems: 100
required:
- entries
additionalProperties: false
responses:
'201':
description: The created entries
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TimetrackingEntry'
description: List of items
required:
- data
operationId: postTimetrackingCreate
x-operation-id-source: derived
/timetracking/{entryId}/update:
post:
summary: Update time tracking entry
description: 'Update an existing time tracking entry. Omit fields to leave them unchanged.
**Allowed API keys:** Read and Write'
tags:
- Time Tracking
x-badges:
- name: BETA
position: before
color: '#ea580c'
parameters:
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
required: true
name: entryId
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
startAt:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
endAt:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
timestamp:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
userId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
comment:
type:
- string
- 'null'
maxLength: 4000
typeId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
parentId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
parentType:
type: string
enum:
- residentialProject
- commercialProject
breaks:
type: array
items:
type: object
properties:
start:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
end:
type: string
format: date-time
example: '2026-01-01T15:30:00.000Z'
required:
- start
- end
additionalProperties: false
maxItems: 100
latLng:
type: object
properties:
lat:
type: number
minimum: -90
maximum: 90
lng:
type: number
minimum: -180
maximum: 180
required:
- lat
- lng
additionalProperties: false
additionalProperties: false
responses:
'200':
description: The updated entry
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TimetrackingEntry'
required:
- data
operationId: postTimetrackingByEntryIdUpdate
x-operation-id-source: derived
/timetracking/{entryId}/archive:
post:
summary: Archive or restore time tracking entry
description: 'Archive or restore a time tracking entry.
**Allowed API keys:** Read and Write'
tags:
- Time Tracking
x-badges:
- name: BETA
position: before
color: '#ea580c'
parameters:
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
required: true
name: entryId
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
archive:
type: boolean
required:
- archive
additionalProperties: false
responses:
'200':
description: The updated entry
content:
application/json:
schema:
$ref: '#/components/schemas/TimetrackingEntry'
operationId: postTimetrackingByEntryIdArchive
x-operation-id-source: derived
components:
schemas:
TimetrackingEventType:
type: object
properties:
id:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
name:
type: string
position:
type: number
textColor:
type: string
backgroundColor:
type: string
archivedAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
required:
- id
- name
- position
- textColor
- backgroundColor
- archivedAt
TimetrackingEntry:
type: object
properties:
id:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
trackingId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
userId:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
createdAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
createdById:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
updatedAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
updatedById:
type:
- string
- 'null'
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
archivedAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
startAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
endAt:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
workingTimeMinutes:
type:
- number
- 'null'
breakDurationMinutes:
type:
- number
- 'null'
breaks:
type: array
items:
type: object
properties:
start:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
end:
type:
- string
- 'null'
format: date-time
example: '2026-01-01T15:30:00.000Z'
required:
- start
- end
comment:
type:
- string
- 'null'
typeId:
type:
- string
- 'null'
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
type:
allOf:
- $ref: '#/components/schemas/TimetrackingEventType'
- type:
- object
- 'null'
parentId:
type:
- string
- 'null'
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
parentType:
type:
- string
- 'null'
enum:
- residentialProject
- commercialProject
- null
parentName:
type:
- string
- 'null'
required:
- id
- trackingId
- userId
- createdAt
- createdById
- updatedAt
- updatedById
- archivedAt
- startAt
- endAt
- workingTimeMinutes
- breakDurationMinutes
- breaks
- comment
- typeId
- type
- parentId
- parentType
- parentName
securitySchemes:
X-Authorization:
type: apiKey
in: header
name: X-Authorization
x-tagGroups:
- name: People
tags:
- Contacts
- Users
- Teams
- name: Projects
tags:
- Residential Projects
- Commercial Projects
- name: Working on a project
tags:
- Notes
- Tasks
- Files
- File Folders
- Activities
- Time Tracking
- Checklists
- Checklist Templates
- Signature Requests
- name: Calendar
tags:
- Calendars
- Calendar Categories
- Appointments
- name: Catalog
tags:
- Components
- Planning Templates
- Planning Packages
- Offer Templates
- name: Workspace setup
tags:
- Kanban Boards
- Kanban Columns
- Tags
- Lead Sources
- name: Wiki
tags:
- Wiki
- name: Services
tags:
- Photogrammetry
- name: API helpers
tags:
- Upload
- Links
- name: Integrations
tags:
- Webhooks
- name: Guides
tags:
- Migrating from API v2 to v3
- Changelog