Overview

ProjectLayer is a project management tool built for development teams. It provides kanban boards, task tracking, milestones, and a backlog that integrates directly with SupportLayer to turn support tickets into actionable work items.

Quick start

  1. Create an accountRegister here. Your first member seat is free.
  2. Create a project — Give it a name and a prefix (e.g. API). This prefix is used in task keys like API-42.
  3. Add tasks — Create tasks with titles, descriptions, priorities, and assignees.
  4. Use the board — Every project gets a default Kanban board with To Do, In Progress, and Done columns.
  5. Invite your team — Add members from the Team settings page.

Key concepts

Projects

A project groups related work together. Each project has its own tasks, board, labels, milestones, and backlog. Projects have a short prefix (e.g. WEB, API) used to generate unique task keys.

Tasks

Tasks are individual work items. Each task has a unique key (like API-42), a status, priority, optional assignee, due date, and description. Tasks can be commented on and labelled.

Boards

Kanban boards visualize your workflow. Each board has ordered columns (e.g. To Do, In Progress, Review, Done). Tasks are placed in columns and can be moved between them.

Milestones

Milestones represent goals or releases with optional due dates. Assign tasks to milestones to track progress toward a delivery target.

Backlog

The backlog holds items that haven't been promoted to tasks yet. Items can arrive via the API (e.g. from SupportLayer) or be created manually. They can be accepted, rejected, or converted into tasks.

Access groups

Permissions are managed via access groups. Each group has a set of permissions (e.g. project.create, task.assign, settings.manage). Users are assigned to an access group within their organization.

API Authentication

The ProjectLayer API uses Bearer token authentication. Generate API keys from Settings → API Keys in the portal.

Include the key in the Authorization header:

Authorization: Bearer pl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API keys are scoped to your organization. All requests made with a key will only see and modify data within that organization.

Base URL

https://your-projectlayer-domain.com/api/v1/

Error responses

Errors return a JSON object with an error field:

{
  "error": {
    "code": "authentication_failed",
    "message": "Invalid or revoked API key."
  }
}

API — Projects

List projects

GET /api/v1/projects

Returns all active projects in your organization.

Response:

{
  "data": [
    {
      "id": 1,
      "name": "API Platform",
      "slug": "api-platform",
      "prefix": "API",
      "status": "active"
    }
  ]
}

API — Backlog

Create a backlog item

POST /api/v1/backlog

Request body:

{
  "project_id": 1,
  "title": "Customer reports broken CSV export",
  "description": "Details from the support ticket...",
  "priority": "high",
  "source_service": "supportlayer",
  "source_ticket_id": 1842,
  "source_ticket_url": "https://support.example.com/portal/tickets/1842"
}
FieldTypeRequiredDescription
project_idintegerYesTarget project ID
titlestringYesBacklog item title
descriptionstringNoDetailed description
prioritystringNolow, medium, high, or critical. Default: medium
source_servicestringNoSource system identifier. Default: supportlayer
source_ticket_idintegerNoExternal ticket ID (used for deduplication)
source_ticket_urlstringNoURL back to the source ticket

Response (201 Created):

{
  "id": 15,
  "status": "pending"
}

Duplicate detection: If a backlog item already exists for the same source_service + source_ticket_id, the API returns 409 Conflict with the existing item's ID and status.

Get a backlog item

GET /api/v1/backlog/{id}

Response:

{
  "id": 15,
  "title": "Customer reports broken CSV export",
  "status": "pending",
  "priority": "high",
  "project_id": 1,
  "source_service": "supportlayer",
  "source_ticket_id": 1842,
  "converted_task_id": null,
  "created_at": "2026-04-10T14:30:00+00:00"
}

List backlog items

GET /api/v1/backlog?project_id=1&status=pending

Both query parameters are optional. Returns up to 100 items, newest first.

SupportLayer Integration

ProjectLayer integrates with SupportLayer to convert support tickets into backlog items automatically.

How it works

  1. Generate an API key in ProjectLayer (Settings → API Keys).
  2. Configure the key in your SupportLayer instance under Integrations.
  3. When a support agent clicks "Send to ProjectLayer" on a ticket, SupportLayer calls the POST /api/v1/backlog endpoint.
  4. The ticket appears in your ProjectLayer backlog with a link back to the original ticket.
  5. Your team reviews the backlog and converts accepted items into tasks.

Backlog statuses

StatusMeaning
pendingNewly arrived, awaiting review
acceptedApproved by the team, not yet a task
rejectedDeclined — won't be worked on
convertedPromoted to a full task