---
title: "Get user project details"
method: GET
path: "/api/v1/users/{username}/project/{project_name}"
tags: ["Stats"]
---

# Get user project details

`GET /api/v1/users/{username}/project/{project_name}`

Returns details for a specific project. Accessible anonymously when the target user has public stats lookup enabled.

## Path parameters

- `username` string, required
- `project_name` string, required

## Query parameters

- `start` string, date_time
- `end` string, date_time
- `start_date` string, date_time
- `end_date` string, date_time

## Response `200`

successful

- object
  - `name` string
  - `total_seconds` number
  - `languages` string[]
  - `repo_url` string, nullable
  - `total_heartbeats` integer
  - `first_heartbeat` string, date_time, nullable
  - `last_heartbeat` string, date_time, nullable
  - `most_recent_heartbeat` string, date_time, nullable
  - `archived` boolean

## Other responses

- `400` — bad request — Returned when project_name is blank/whitespace-only.
- `403` — forbidden — The target user has disabled public stats lookup and the requester is not that user.
- `404` — not found — Returned when the user is not found, or no data exists for the requested project.

## Changes

- **2026-06-07** (v1) `10d87f00ef0b` — 8 info
  - the endpoint scheme security `Bearer AND ApiKeyAuth` was removed from the API
  - api tag `Stats` added
  - api tag `Users` removed
  - added the non-success response with the status `400`
  - …4 more
- **2026-02-15** (v1) `a71a54c28264` — 2 info
  - added the new optional `query` request parameter `end`
  - added the new optional `query` request parameter `start`
- **2026-01-28** (v1) `a9eaba48a93a` — 2 breaking
  - for the `query` request parameter `end_date`, the type/format was changed from `string`/`` to `string`/`date_time`
  - for the `query` request parameter `start_date`, the type/format was changed from `string`/`` to `string`/`date_time`
- **2026-01-27** (v1) `b6d6849481da` — 4 warning, 8 info
  - deleted the `query` request parameter `end`
  - deleted the `query` request parameter `start`
  - removed the optional property `archived` from the response with the `200` status
  - removed the optional property `most_recent_heartbeat` from the response with the `200` status
  - …8 more

[Change history](https://skmtc.dev/hackclub/apis/hackatime-api/changes/api/v1/users/:username/project/:project_name/get.md)

---

[API](https://skmtc.dev/hackclub/apis/hackatime-api.md) · [All operations](https://skmtc.dev/hackclub/apis/hackatime-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hackclub/hackatime-api/revisions/172c35ec816f/schema)
