Militime API

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 paramDescription
limit, cursorPagination.
statusFilter by status.
client_idOnly projects for this client.
searchCase-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

FieldRequiredNotes
nameyes
client_idyesMust be a client in this organization.
billing_typeyesSee values above.
descriptionno
statusnoDefaults to ACTIVE.
hourly_rate, fixed_price, amountnoNon-negative numbers.
interval_countnoPositive integer.
interval_unitnoDay, Week, Month, Year.
start_date, end_datenoISO 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 }