Clockify SDK
A Python SDK for interacting with the Clockify API. This SDK provides a simple and intuitive interface to manage your Clockify workspace, including time entries, projects, tasks, and reports.
Features
- 🔑 Simple authentication with API key
- 📊 Manage time entries
- 📁 Handle projects and tasks
- 👥 Manage clients and users
- 🔄 Workspace management
- ✨ Type hints for better IDE support
Installation
pip install clockify-sdk
Quick Start
First, create a .env file in your project root:
CLOCKIFY_API_KEY=your-api-key
CLOCKIFY_WORKSPACE_ID=your-workspace-id # Optional, defaults to first workspace
Then use the SDK:
from dotenv import load_dotenv
import os
from clockify_sdk import Clockify
from datetime import datetime
# Load environment variables from .env file
load_dotenv()
# Initialize the client
client = Clockify(
api_key=os.getenv("CLOCKIFY_API_KEY"),
workspace_id=os.getenv("CLOCKIFY_WORKSPACE_ID") # Optional
)
# Get all your workspaces
workspaces = client.get_workspaces()
# Create a new time entry
start_time = datetime.now(timezone.utc)
end_time = datetime.fromisoformat("2024-03-17T11:00:00+00:00")
time_entry = client.time_entries.add_time_entry(
start=start_time,
end=end_time,
description="Working on feature X",
project_id="project-id"
)
# Get all projects
projects = client.projects.get_all()
# Create a new project
project = client.projects.create({
"name": "New Project",
"clientId": "client-id",
"isPublic": True
})
# Get time entries for a specific date range
time_entries = client.time_entries.get_all(
user_id=client.user_id,
start_date="2024-03-01",
end_date="2024-03-17"
)
# Generate a detailed report
report = client.reports.generate(
start_date="2024-03-01",
end_date="2024-03-17",
project_ids=["project-id-1", "project-id-2"]
)
Advanced Usage
Working with Tasks
# Create a new task
task = client.tasks.create({
"name": "Implement new feature",
"assigneeId": "user-id"
}, project_id="project-id")
# Get all tasks for a project
tasks = client.tasks.get_all(project_id="project-id")
Managing Clients
# Create a new client
new_client = client.clients.create({
"name": "New Client",
"note": "Important client"
})
# Get all clients
clients = client.clients.get_all()
User Management
# Get current user information
current_user = client.users.get_current_user()
# Get all users in workspace
users = client.users.get_all()
Error Handling
The SDK provides clear error messages and exceptions:
from clockify_sdk.exceptions import ClockifyError
try:
client.time_entries.create({
"projectId": "invalid-id",
"description": "Test entry"
})
except ClockifyError as e:
print(f"Error: {e.message}")
Development
- Clone the repository:
git clone https://github.com/fraqtory/clockify-sdk.git
cd clockify-sdk
- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate`
- Install development dependencies:
pip install -e ".[dev]"
- Run tests:
pytest
- Run type checking:
mypy clockify_sdk
- Run linting:
ruff check .
black .
isort .
Documentation
For detailed documentation, visit https://clockify-sdk.readthedocs.io
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for clockify-sdk 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clockify_sdk-0.2.2.tar.gz | 13.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| clockify_sdk-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.2 kB
Release files / clockify_sdk-0.2.2.tar.gz
| Download URL | clockify_sdk-0.2.2.tar.gz |
|---|---|
| Size | 13.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa7058c7ad47be219998197ed13dfff27e04a495c465e0bd59b13fc8736188fc
|
|
BLAKE2b-256 checksum How to use checksums |
0599dce30c93e036a5c260132f5888fa63fa7e6355060c25a9e6c6fb6790fa05
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 20, 2025.
Transparency logRelease files / clockify_sdk-0.2.2-py3-none-any.whl
| Download URL | clockify_sdk-0.2.2-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45aa4ac51002ba7150d40231b8027c02c8077c3baeb8059592d8385cf8dcc84b
|
|
BLAKE2b-256 checksum How to use checksums |
2d7ce87f61ed6759a4f7f86197c5183c0d99b7ef0b5aa148a3ca267cb902b715
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 20, 2025.
Transparency log