Developer Reference

Project Hub API

REST API for automating projects, tasks, and comments. Authenticate with your company API key.

Contents

  1. Authentication
  2. Projects
  3. Tasks
  4. Comments
  5. Copilot Prompt Examples
  6. Response Codes & Errors

Authentication

API Key Header

Every request must include your company API key in the X-API-Key header. Keys are scoped to your company — you can only read and write your own data.

Required headers
X-API-Key: your-api-key-here
Content-Type: application/json
Base URL
https://hub.justwhatsneeded.com/api.php

Your API key is shown in the welcome email and on the Admin panel. Keep it private — it grants full read/write access to your company's projects and tasks.

Projects

GET /api.php?resource=projects&action=list

Returns all projects for your company, ordered by last updated.

Example response
[
  {
    "id": 11,
    "name": "JWN - All",
    "description": "Main project board",
    "status": "active",
    "client": "JWN",
    "created_at": "2025-01-10 09:00:00",
    "updated_at": "2026-06-01 14:22:00"
  }
]
POST /api.php?resource=projects&action=create

Creates a new project.

FieldTypeNotes
name requiredstringProject name
descriptionstringOptional description
statusstringactive · on-hold · completed · archived (default: active)
clientstringClient label, e.g. JWN
Example request
{
  "name": "Q3 Marketing Campaign",
  "description": "All tasks for the Q3 push",
  "status": "active",
  "client": "JWN"
}
Example response
{ "id": 14, "message": "Project created" }

Tasks

GET /api.php?resource=tasks&action=list&project_id=11

Returns all tasks for a project. Omit project_id to get tasks across all projects.

Example response
[
  {
    "id": 42,
    "project_id": 11,
    "title": "Review contract",
    "description": null,
    "status": "todo",
    "priority": "high",
    "due_date": "2026-06-20",
    "created_at": "2026-06-10 08:00:00",
    "updated_at": "2026-06-10 08:00:00"
  }
]
POST /api.php?resource=tasks&action=create

Creates a new task inside a project.

FieldTypeNotes
project_id requiredintegerParent project ID
title requiredstringTask title
descriptionstringOptional detail
statusstringtodo · in-progress · blocked · done (default: todo)
prioritystringlow · normal · high · urgent (default: normal)
due_datestringISO date: YYYY-MM-DD
Example request
{
  "project_id": 11,
  "title": "Review contract",
  "priority": "high",
  "status": "todo",
  "due_date": "2026-06-20"
}
Example response
{ "id": 42, "message": "Task created" }
POST /api.php?resource=tasks&action=update

Updates one or more fields on an existing task. Only include fields you want to change.

FieldTypeNotes
id requiredintegerTask ID to update
titlestring
descriptionstring
statusstringtodo · in-progress · blocked · done
prioritystringlow · normal · high · urgent
due_datestringYYYY-MM-DD
Example request
{
  "id": 42,
  "status": "in-progress",
  "priority": "urgent"
}
Example response
{ "message": "Task updated" }

Comments

GET /api.php?resource=comments&action=list&task_id=42

Returns all comments on a task, ordered oldest first.

Example response
[
  {
    "id": 7,
    "task_id": 42,
    "author": "Bill",
    "body": "Ready for review",
    "created_at": "2026-06-11 10:30:00"
  }
]
POST /api.php?resource=comments&action=create

Adds a comment to a task.

FieldTypeNotes
task_id requiredintegerTask to comment on
author requiredstringAuthor name, e.g. Bill or Claude
body requiredstringComment text
Example request
{
  "task_id": 42,
  "author": "Bill",
  "body": "Ready for review"
}
Example response
{ "id": 8, "message": "Comment added" }

Copilot Prompt Examples

Use these prompts with Claude or any AI assistant that has access to the Hub API.

Create a task

"Create a task called 'Review contract' with priority high in project 11"

Update status

"Update task 42 to status 'in-progress'"

Filter tasks

"List all blocked tasks in project 11"

Add a comment

"Add comment to task 99: 'Ready for review'"

Bulk create

"Create these 5 tasks in project 11, all priority normal: onboarding docs, schedule kickoff, send contract, set up repo, create Slack channel"

Project summary

"Give me a summary of all open tasks across all projects, grouped by priority"

Response Codes & Errors

CodeMeaning
200Success — request completed, data returned
201Created — resource was successfully created
400Bad request — missing required field or invalid value
401Unauthorized — missing or invalid API key
404Not found — resource doesn't exist or belongs to another company

Error responses always return a JSON object with an error field:

{ "error": "Missing required field: title" }