Projects
List, retrieve, create and update projects.
A project belongs to a client and carries its own billing configuration.
The project object
{
"object": "project",
"id": "pr_123",
"name": "Website redesign",
"description": null,
"status": "ACTIVE",
"billing_type": "Monthly",
"hourly_rate": 150,
"fixed_price": null,
"amount": null,
"interval_count": null,
"interval_unit": null,
"client_id": "cl_123",
"workspace_id": "ws_123",
"start_date": "2026-01-01T00:00:00.000Z",
"end_date": null,
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}status is one of ACTIVE, COMPLETED, ON_HOLD, CANCELLED.
billing_type is one of Weekly, BiMonthly, Monthly, CreditBased,
Retainer, ProjectBased.
List projects
GET /api/v1/projects — scope projects:read
| Query param | Description |
|---|---|
limit, cursor | Pagination. |
status | Filter by status. |
client_id | Only projects for this client. |
search | Case-insensitive match on name. |
curl "https://app.militime.ai/api/v1/projects?client_id=cl_123" \
-H "Authorization: Bearer mt_live_your_token"Retrieve a project
GET /api/v1/projects/{id} — scope projects:read
Create a project
POST /api/v1/projects — scope projects:write
| Field | Required | Notes |
|---|---|---|
name | yes | |
client_id | yes | Must be a client in this organization. |
billing_type | yes | See values above. |
description | no | |
status | no | Defaults to ACTIVE. |
hourly_rate, fixed_price, amount | no | Non-negative numbers. |
interval_count | no | Positive integer. |
interval_unit | no | Day, Week, Month, Year. |
start_date, end_date | no | ISO 8601. start_date defaults to now. |
curl -X POST https://app.militime.ai/api/v1/projects \
-H "Authorization: Bearer mt_live_your_token" \
-H "Content-Type: application/json" \
-d '{
"name": "Website redesign",
"client_id": "cl_123",
"billing_type": "Monthly",
"hourly_rate": 150
}'Responds 201 with the created project.
Update a project
PATCH /api/v1/projects/{id} — scope projects:write
Send only the fields you want to change.
Delete a project
DELETE /api/v1/projects/{id} — scope projects:write
Refused with 409 conflict if the project still has time entries logged
against it.
curl -X DELETE https://app.militime.ai/api/v1/projects/pr_123 \
-H "Authorization: Bearer mt_live_your_token"{ "object": "project", "id": "pr_123", "deleted": true }