Public API Documentation
The TikkieTrack Public API lets you automate time tracking, project management and payroll processes directly from your own applications. Use the reference below to understand how to connect, what to expect from each endpoint and how to test requests quickly.
Tip: Replace
https://example.comin the examples with your own installation URL. Generate a personal access token in your account settings to authenticate requests.
Getting Started
Use this section as a checklist before calling the API.
Base configuration
| Setting | Details |
|---|---|
| Base URL | /api/v1 |
| Response format | JSON |
| Authentication | Personal access tokens via the Authorization: Bearer <token> header |
| Pagination | List endpoints support per_page (maximum 100) and include pagination metadata in the response |
Authentication
- Generate a personal access token from Settings → API Tokens inside TikkieTrack.
- Add the token to every request using the
Authorization: Bearer {token}header. - Keep tokens secret—rotate them regularly if you embed them in automations.
curl -H "Authorization: Bearer {token}" \
https://example.com/api/v1/time-entries
Pagination
Paginated responses include meta and link objects that let you move between pages. When requesting larger collections, pass per_page to control the page size:
curl -H "Authorization: Bearer {token}" \
"https://example.com/api/v1/time-entries?per_page=50"
Time Entries
Endpoints that let authenticated users record and manage time.
Endpoints
| Method | URI | Description |
|---|---|---|
| GET | /api/v1/time-entries | List authenticated user's time entries |
| POST | /api/v1/time-entries | Create a new time entry |
| GET | /api/v1/time-entries/{id} | Retrieve a specific time entry |
| PUT/PATCH | /api/v1/time-entries/{id} | Update an existing time entry |
| DELETE | /api/v1/time-entries/{id} | Delete a time entry |
Filters for listing
| Parameter | Description |
|---|---|
q |
Search within the description field |
status |
Filter by entry status |
start |
Include entries on or after this YYYY-MM-DD date |
end |
Include entries on or before this YYYY-MM-DD date |
Example request
curl -H "Authorization: Bearer {token}" \
"https://example.com/api/v1/time-entries?q=meeting&status=open&start=2024-05-01&end=2024-05-31"
Example response (201 Created)
{
"id": 5,
"date": "2024-01-15",
"hours": 2.5,
"status": "open",
"description": "Design meeting",
"from_time": "2024-01-15 09:00:00",
"till_time": "2024-01-15 11:30:00",
"project": {
"id": 1,
"name": "Website Redesign",
"description": "Revamp",
"budget": 10000,
"start_date": "2024-01-01",
"end_date": "2024-12-31"
}
}
Projects
Projects group related work. You can create them programmatically when onboarding new clients.
Endpoints
| Method | URI | Description |
|---|---|---|
| GET | /api/v1/projects | List projects for the user's company |
| POST | /api/v1/projects | Create a project |
| GET | /api/v1/projects/{id} | Retrieve a specific project |
| PUT/PATCH | /api/v1/projects/{id} | Update a project |
| DELETE | /api/v1/projects/{id} | Delete a project |
Example request
curl -X POST https://example.com/api/v1/projects \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Website Redesign",
"description": "Revamp",
"start_date": "2024-01-01",
"end_date": "2024-12-31"
}'
Example response (201 Created)
{
"id": 1,
"name": "Website Redesign",
"description": "Revamp",
"budget": 10000,
"start_date": "2024-01-01",
"end_date": "2024-12-31"
}
Services
Services describe the billable offerings your organisation provides.
Endpoints
| Method | URI | Description |
|---|---|---|
| GET | /api/v1/services | List services for the user's company |
| POST | /api/v1/services | Create a service |
| GET | /api/v1/services/{id} | Retrieve a specific service |
| PUT/PATCH | /api/v1/services/{id} | Update a service |
| DELETE | /api/v1/services/{id} | Delete a service |
Example request
curl -X POST https://example.com/api/v1/services \
-H "Authorization: Bearer {token}" \
-F "name=Consulting" \
-F "description=Hourly consulting" \
-F "file=@consulting.pdf"
Example response (201 Created)
{
"id": 1,
"name": "Consulting",
"description": "Hourly consulting",
"original_name": "consulting.pdf",
"file_path": "https://example.com/storage/services/consulting.pdf"
}
Materials
Materials capture physical goods or resources tracked alongside services.
Endpoints
| Method | URI | Description |
|---|---|---|
| GET | /api/v1/materials | List materials for the user's company |
| POST | /api/v1/materials | Create a material |
| GET | /api/v1/materials/{id} | Retrieve a specific material |
| PUT/PATCH | /api/v1/materials/{id} | Update a material |
| DELETE | /api/v1/materials/{id} | Delete a material |
Example request
curl -X POST https://example.com/api/v1/materials \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "Branded notebooks",
"unit_cost": 4.5,
"description": "Giveaways for client meetings"
}'
Example response (201 Created)
{
"id": 7,
"name": "Branded notebooks",
"unit_cost": 4.5,
"description": "Giveaways for client meetings",
"created_at": "2024-05-14T09:18:00Z",
"updated_at": "2024-05-14T09:18:00Z"
}
Support & Feedback
Need help or have suggestions? Reach out to our team at support@tikkietrack.com and we'll be glad to assist.