API REFERENCE

Projects API

A project groups scoped work for a client into phases and tasks. Use this API to create projects, build out their phase and task structure, manage checklists, and read the tickets attached to a project.

Create a project

Only project_name is required. Attach it to a client with client_id, assign an owner via assigned_to or a team via assigned_team_id, and set start_date and end_date when you have them. The project starts empty; phases and tasks come next.

curl
curl https://algapsa.com/api/v1/projects \
  -H "X-API-Key: $ALGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "Northwind email migration",
    "client_id": "cl_3f9a2c",
    "assigned_to": "usr_5b21",
    "start_date": "2026-07-01"
  }'

Phases and tasks

Work hangs off phases. Add one with POST /projects/{id}/phases, then create tasks inside it via POST /projects/{id}/phases/{phaseId}/tasks. Tasks are addressed directly once they exist — GET /projects/tasks/{taskId} to read one, PUT to update, and POST /projects/tasks/{taskId}/checklist to add checklist items. Status mappings for a project come from GET /projects/{id}/task-status-mappings.

Read across projects

Filter the list with GET /projects, search free-text with GET /projects/search, and pull portfolio totals from GET /projects/stats. To see the service work tied to a project, use GET /projects/{id}/tickets. Bulk routes under /projects/bulk-assign, /projects/bulk-status, and /projects/bulk-update apply changes to many projects at once.

Endpoints

Every endpoint links through to its full parameters, request and response schemas, and code samples.

GET/api/v1/projectsAlgaPSAList projectsPOST/api/v1/projectsAlgaPSACreate projectGET/api/v1/projects/{id}AlgaPSAGet projectPUT/api/v1/projects/{id}AlgaPSAUpdate projectDELETE/api/v1/projects/{id}AlgaPSADelete projectGET/api/v1/projects/{id}/phasesAlgaPSAList project phasesPOST/api/v1/projects/{id}/phasesAlgaPSACreate project phasePUT/api/v1/projects/{id}/phases/{phaseId}AlgaPSAUpdate project phaseDELETE/api/v1/projects/{id}/phases/{phaseId}AlgaPSADelete project phaseGET/api/v1/projects/{id}/phases/{phaseId}/tasksAlgaPSAList project phase tasksPOST/api/v1/projects/{id}/phases/{phaseId}/tasksAlgaPSACreate project phase taskGET/api/v1/projects/{id}/task-status-mappingsAlgaPSAList project task status mappingsGET/api/v1/projects/{id}/tasksAlgaPSAList project tasksGET/api/v1/projects/{id}/ticketsAlgaPSAList project ticketsPUT/api/v1/projects/bulk-assignAlgaPSABulk assign projectsPUT/api/v1/projects/bulk-statusAlgaPSABulk update project statusPUT/api/v1/projects/bulk-updateAlgaPSABulk update projectsGET/api/v1/projects/exportAlgaPSAExport projectsGET/api/v1/projects/searchAlgaPSASearch projectsGET/api/v1/projects/statsAlgaPSAGet project statsGET/api/v1/projects/tasks/{taskId}AlgaPSAGet project taskPUT/api/v1/projects/tasks/{taskId}AlgaPSAUpdate project taskDELETE/api/v1/projects/tasks/{taskId}AlgaPSADelete project taskGET/api/v1/projects/tasks/{taskId}/checklistAlgaPSAList task checklist itemsPOST/api/v1/projects/tasks/{taskId}/checklistAlgaPSACreate task checklist item