Skip to main content

Endpoints

MethodPathDescription
GET/v1/projectsList all projects
POST/v1/projectsCreate a project
GET/v1/projects/:idGet a project
PATCH/v1/projects/:idUpdate a project
DELETE/v1/projects/:idArchive a project
GET/v1/projects/:id/tasksList tasks in a project
GET/v1/projects/:id/milestonesList milestones

List Projects

GET /v1/projects
Query Parameters:
ParameterTypeDescription
statusstringFilter by status: planning, in_progress, review, completed
client_idstringFilter by client
team_lead_idstringFilter by team lead
limitintegerMax results per page (default: 20, max: 100)
cursorstringPagination cursor from previous response
Example Request:
curl https://api.nextoriahub.com/v1/projects?status=in_progress&limit=10 \
  -H "Authorization: Bearer YOUR_API_KEY"
Example Response:
{
  "data": [
    {
      "id": "proj_abc123",
      "name": "Acme Corp Brand Refresh",
      "status": "in_progress",
      "start_date": "2026-02-01",
      "end_date": "2026-04-30",
      "budget": 15000,
      "budget_spent": 6200,
      "client": {
        "id": "client_xyz789",
        "name": "Acme Corp"
      },
      "team_lead": {
        "id": "user_abc456",
        "name": "Alice Smith"
      },
      "task_count": 42,
      "completed_task_count": 18,
      "created_at": "2026-01-28T10:00:00Z",
      "updated_at": "2026-02-15T14:32:00Z"
    }
  ],
  "meta": {
    "total": 87,
    "limit": 10,
    "next_cursor": "cur_def456"
  }
}

Create a Project

POST /v1/projects
Request Body:
{
  "name": "Globex Website Redesign",
  "description": "Full redesign of the marketing site and blog.",
  "client_id": "client_globex123",
  "team_lead_id": "user_bob789",
  "start_date": "2026-03-01",
  "end_date": "2026-05-31",
  "budget": 22000,
  "status": "planning"
}
Required fields: name, client_id Response: 201 Created with the created project object.

Update a Project

PATCH /v1/projects/:id
Send only the fields you want to update (partial updates are supported):
{
  "status": "in_progress",
  "end_date": "2026-06-15"
}
Response: 200 OK with the updated project object.

Archive a Project

DELETE /v1/projects/:id
Projects are archived, not permanently deleted. Archived projects can be restored from Projects → Archived in the UI. Response: 204 No Content

Project Object

interface Project {
  id: string; // "proj_abc123"
  name: string;
  description: string | null;
  status: "planning" | "in_progress" | "review" | "completed" | "archived";
  start_date: string | null; // ISO 8601 date
  end_date: string | null;
  budget: number | null; // In workspace currency (minor units)
  budget_spent: number;
  client: { id: string; name: string } | null;
  team_lead: { id: string; name: string } | null;
  task_count: number;
  completed_task_count: number;
  created_at: string; // ISO 8601 datetime
  updated_at: string;
}