Stracker Public API

Build integrations with projects, tasks, and users in Stracker.

Base URL

https://app.strackerapp.com/api/v1

Use this base URL for all public API requests.

Authentication

Include your API key in the request header:

Authorization: Bearer YOUR_API_KEY

Endpoint Reference

Each endpoint below includes what to send and what comes back.

Pages

  • GET /pages — Send optional query params: parent_id, status, visibility. Response 200: array of page objects.
  • GET /pages/tree — No body. Response 200: nested page tree by parent/child.
  • POST /pages — JSON body: { "title": "...", "content": "...", "parent_id": 0 }. Response 201: created page object (includes new id).
  • GET /pages/{id} — Path param: id. Response 200: single page object.
  • PUT /pages/{id} — Path param: id. JSON body: any of title, content, status, visibility, parent_id, append, separator. Response 200: updated page object.
  • DELETE /pages/{id} — Path param: id. No body. Response 200/204 with delete confirmation.
  • GET /pages/{id}/versions — Path param: id. Response 200: version history array.
  • GET /search?q=term — Query param: q required. Response 200: matched pages array.

Projects

  • GET /projects — Optional filters may be supported by org setup. Response 200: project list.
  • POST /projects — JSON body: { "name": "Project name", "description": "..." }. Response 201: created project.
  • GET /projects/{id} — Path param: id. Response 200: project plus statuses/columns.

Users

  • GET /users — No body. Response 200: organization users array.

Tasks

  • GET /tasks — Optional query params: project_id, status_id, assigned_to, limit, offset. Response 200: task list.
  • POST /tasks — JSON body: { "title": "Task", "project_id": 1, "status_id": 2, "assigned_to": 3 }. Response 201: created task.
  • GET /tasks/{id} — Path param: id. Response 200: single task object.
  • PUT /tasks/{id} — Path param: id. JSON body: task fields to change (title, description, due_date, assigned_to, etc). Response 200: updated task.
  • DELETE /tasks/{id} — Path param: id. No body. Response 200/204 with delete confirmation.
  • PUT /tasks/{id}/status — Path param: id. JSON body: { "status_id": 3 }. Response 200: updated task status.

Example Request

curl -X POST "https://app.strackerapp.com/api/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Follow up with lead",
    "project_id": 12,
    "status_id": 3,
    "assigned_to": 7
  }'

Example Response

{
  "success": true,
  "data": {
    "id": 441,
    "title": "Follow up with lead",
    "project_id": 12,
    "status_id": 3,
    "assigned_to": 7,
    "created_at": "2026-03-08T01:20:00Z"
  }
}

Machine-readable Spec

OpenAPI spec: /docs/openapi.json