API documentation

Build workflows from your DevChrono memory.

Use personal API tokens to read entries, logs, projects, and tasks from external tools like Slack workflows, n8n, Zapier, or your own scripts.

First request

Bearer token over HTTPS

curl https://your-devchrono-domain.com/api/v1/entries?limit=10 \
  -H "Authorization: Bearer dvc_your_token"

Personal tokens

Read scopes

JSON responses

Contract rules

The current v1 API is read-only. Every endpoint uses the same authentication, returns JSON, disables response caching, and accepts query parameters instead of request bodies.

Authentication

Send `Authorization: Bearer dvc_your_token` with every request.

Response wrapper

Successful list responses are shaped as `{ data: [...] }`.

Scopes

Each endpoint requires its matching read scope.

Limits

The `limit` query parameter is validated from 1 to 100.

Endpoint reference

Each endpoint below includes request body rules, curl examples, success payloads, and the failure payloads you should handle.

GET/api/v1/entries

Read timeline entries with tags, attachment counts, project labels, and daily-log dates.

Required scope

entries:read

Query parameters

NameTypeRule
limitnumberOptional. 1-100. Defaults to 50.
dateYYYY-MM-DDOptional. Filters entries to one daily log.
typeenumOptional. One of NOTE, WORK, SNIPPET, LEARNING, LINK.
projectIduuidOptional. Filters entries to one project.

Request body

No request body. Use query parameters.

Request example

curl "https://your-devchrono-domain.com/api/v1/entries?date=2026-08-13&type=WORK&limit=10" \
  -H "Authorization: Bearer dvc_your_token"

Success response

HTTP 200
{
  "data": [
    {
      "id": "9f143e8e-4bcb-4a93-9d50-cb1b1ac03b24",
      "type": "WORK",
      "title": "Ship storage usage meter",
      "content": "Added 2GB early-access quota tracking.",
      "contentJson": null,
      "createdAt": "2026-08-13T09:24:00.000Z",
      "updatedAt": "2026-08-13T09:28:12.000Z",
      "projectId": "58c77f3a-d148-448d-a36b-34523e41e559",
      "projectName": "DevChrono",
      "logDate": "2026-08-13",
      "tags": ["release"],
      "attachmentCount": 1
    }
  ]
}
GET/api/v1/daily-logs

Read recent daily logs with focus, generated summaries, and tomorrow plans.

Required scope

daily_logs:read

Query parameters

NameTypeRule
limitnumberOptional. 1-100. Defaults to 50.

Request body

No request body. Use query parameters.

Request example

curl "https://your-devchrono-domain.com/api/v1/daily-logs?limit=7" \
  -H "Authorization: Bearer dvc_your_token"

Success response

HTTP 200
{
  "data": [
    {
      "id": "4f3e9e0a-f99e-4710-82e8-8403a89724ec",
      "date": "2026-08-13",
      "focus": "Finish API docs and storage tracking",
      "summary": "Built the public API documentation page and quota UI.",
      "summaryJson": null,
      "tomorrowPlan": "Connect Slack reporting workflow.",
      "createdAt": "2026-08-13T07:12:00.000Z",
      "updatedAt": "2026-08-13T13:42:00.000Z"
    }
  ]
}
GET/api/v1/projects

Read projects with status, slug, color, icon, archived date, and timestamps.

Required scope

projects:read

Query parameters

NameTypeRule
limitnumberOptional. 1-100. Defaults to 50.

Request body

No request body. Use query parameters.

Request example

curl "https://your-devchrono-domain.com/api/v1/projects?limit=25" \
  -H "Authorization: Bearer dvc_your_token"

Success response

HTTP 200
{
  "data": [
    {
      "id": "58c77f3a-d148-448d-a36b-34523e41e559",
      "name": "DevChrono",
      "slug": "devchrono",
      "description": "Private engineering memory and reporting automation.",
      "status": "ACTIVE",
      "color": "mint",
      "icon": "journal",
      "archivedAt": null,
      "createdAt": "2026-08-11T14:30:00.000Z",
      "updatedAt": "2026-08-13T13:42:00.000Z"
    }
  ]
}
GET/api/v1/tasks

Read tasks including type (TASK, ISSUE, DECISION), status, priority, progress, and project labels.

Required scope

tasks:read

Query parameters

NameTypeRule
limitnumberOptional. 1-100. Defaults to 50.

Request body

No request body. Use query parameters.

Request example

curl "https://your-devchrono-domain.com/api/v1/tasks?limit=25" \
  -H "Authorization: Bearer dvc_your_token"

Success response

HTTP 200
{
  "data": [
    {
      "id": "2c1a7d44-0d3b-4e1a-9f11-5c6a0b8f1d22",
      "title": "Ship storage usage meter",
      "description": "Track quota usage in settings.",
      "type": "TASK",
      "status": "IN_PROGRESS",
      "priority": "HIGH",
      "progressPercent": 40,
      "projectId": "58c77f3a-d148-448d-a36b-34523e41e559",
      "projectName": "DevChrono"
    }
  ]
}
GET/api/v1/tasks/:taskId

Read one task by id for the authenticated token owner.

Required scope

tasks:read

Query parameters

None.

Request body

No request body.

Request example

curl "https://your-devchrono-domain.com/api/v1/tasks/2c1a7d44-0d3b-4e1a-9f11-5c6a0b8f1d22" \
  -H "Authorization: Bearer dvc_your_token"

Success response

HTTP 200
{
  "data": {
    "id": "2c1a7d44-0d3b-4e1a-9f11-5c6a0b8f1d22",
    "title": "Ship storage usage meter",
    "type": "TASK",
    "status": "IN_PROGRESS",
    "priority": "HIGH",
    "progressPercent": 40
  }
}

Shared error responses

These responses apply across the v1 endpoints. Treat `401` as a token problem and `400` as a query-shape problem.

HTTP 400

Invalid query parameters

Failure
{
  "error": {
    "message": "Invalid query parameters."
  }
}

Returned when `limit`, `date`, `type`, or `projectId` fails validation.

HTTP 401

Missing bearer token

Failure
{
  "error": {
    "message": "Missing bearer token."
  }
}

Returned when the `Authorization` header is absent or not formatted as `Bearer <token>`.

HTTP 401

Invalid token or missing scope

Failure
{
  "error": {
    "message": "Invalid token or missing scope."
  }
}

Returned for revoked tokens, unknown tokens, expired tokens, or tokens without the endpoint scope.

HTTP 405

Unsupported method

Failure
Method Not Allowed

Only `GET` is supported for the current v1 endpoints.

Daily Slack report example

Fetch today’s entries, summarize them with your own worker, then post the result to Slack or another destination.

  • Generate a daily Slack progress update from today's entries.
  • Pull blocked or issue-type tasks into a manager-facing blocker report.
  • Sync decision-type tasks into an internal docs system.
  • Use n8n, Zapier, or a script to read DevChrono memory on a schedule.

Today entries

const today = new Date().toISOString().slice(0, 10);

const response = await fetch(
  `https://your-devchrono-domain.com/api/v1/entries?date=${today}&limit=50`,
  {
    headers: {
      Authorization: `Bearer ${process.env.DEVCHRONO_API_TOKEN}`,
    },
  },
);

if (!response.ok) {
  throw new Error(`DevChrono API failed: ${response.status}`);
}

const { data } = await response.json();