← Back to guidesGUIDE · PROJECTS

Work with projects, phases, and tasks

Projects14 minIntermediate

Projects are a nested resource area in Alga PSA. The usual flow is create a project, add phases under the project, fetch task status mappings, and then create tasks against a phase.

Endpoints used in this guide

GET/api/v1/projectsList projects.
POST/api/v1/projectsCreate a project.
GET/api/v1/projects/{id}/phasesList phases for a project.
POST/api/v1/projects/{id}/phasesCreate a phase.
GET/api/v1/projects/{id}/task-status-mappingsFetch the task status mapping IDs required for task creation.
POST/api/v1/projects/{id}/phases/{phaseId}/tasksCreate a task inside a phase.

Create a project

At minimum you need a client_id and a project_name. You can also set dates, assignment, tags, and whether a default phase should be created.

curl
curl -X POST "https://algapsa.com/api/v1/projects" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ALGA_API_KEY" \
  -d '{
    "client_id": "$CLIENT_ID",
    "project_name": "Office network refresh",
    "description": "Replace switching hardware and update site documentation.",
    "create_default_phase": true
  }'

Add a phase

curl
curl -X POST "https://algapsa.com/api/v1/projects/$PROJECT_ID/phases" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ALGA_API_KEY" \
  -d '{
    "phase_name": "Discovery",
    "status": "planning"
  }'

Fetch task status mappings before creating a task

The task create schema requires a project_status_mapping_id. In practice, that means you should fetch the available mappings before you build the task payload.

curl
curl -X GET "https://algapsa.com/api/v1/projects/$PROJECT_ID/task-status-mappings" \
  -H "X-API-Key: $ALGA_API_KEY"

Create a task inside the phase

curl
curl -X POST "https://algapsa.com/api/v1/projects/$PROJECT_ID/phases/$PHASE_ID/tasks" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ALGA_API_KEY" \
  -d '{
    "task_name": "Survey existing switches",
    "project_status_mapping_id": "$STATUS_MAPPING_ID",
    "estimated_hours": 4
  }'

Useful follow-up endpoints

  • GET /api/v1/projects/{id} when you need full project details.
  • GET /api/v1/projects/{id}/tasks when you need a project-wide task list.
  • PUT /api/v1/projects/tasks/{taskId} when you need to update hours, assignment, or due dates.