Strategic Tickets

Update a ticket

Changed on

Change a ticket's content and planning fields. Omit a field to leave it as it is, send a value to replace it, send null to clear it. The description and the labels are cleared by their own empty value instead — "" and [] — because for those an empty value is a real one. A column, and a place inside one, are a move and are not accepted here, so a ticket can never change column as a side effect of an edit. Requires a read_write key.

patch/v1/projects/{projectId}/tickets/{ticketId}

Request

  • Base URL: https://api.competlab.com
  • URL: https://api.competlab.com/v1/projects/{projectId}/tickets/{ticketId}
  • Auth: API key in header CL-API-Key

Path parameters

ticketIdstring required
Example:507f1f77bcf86cd799439011

Ticket ID

projectIdstring required
Example:507f1f77bcf86cd799439011

Project ID

Request body

titlestring

The ticket's title.

descriptionstring

The ticket's description, in Markdown. At most 20000 characters. Send "" to clear it.

labelIdsstring[]

IDs from the project's own label list — read it with the labels endpoint, and create a label there before naming it. At most 10 per ticket, each named once. The list replaces what the ticket holds; send [] to clear it.

assigneeUserIdstring nullable

The user ID of a current member of your organization — list them with GET /v1/projects/{projectId}/tickets/assignees. A user ID from anywhere else is refused. Send null to leave the ticket unassigned.

dueDatestring nullable

The day the ticket is due, as YYYY-MM-DD — a calendar day, with no clock and no time zone. Send null to take the due date off.

effort'low' | 'medium' | 'high'

How much work the ticket is. null where nobody has said.

impactnumber nullable

How much the ticket matters, from 1 to 4 (1 Minor · 2 Moderate · 3 Significant · 4 Critical; 4 matters most). Send null to take it off.

Example request

{
  "title": "Get onto the 2026 buyer guide",
  "description": "The guide names three of our competitors and not us.",
  "labelIds": [
    "3f2a9c6e-1b77-4c1e-9a54-5c7b2f0a91d2"
  ],
  "assigneeUserId": "507f1f77bcf86cd799439031",
  "dueDate": "2026-10-01",
  "impact": 3
}

Response

Example response

{
  "item": {
    "id": "507f1f77bcf86cd799439011",
    "number": 14,
    "author": {
      "userId": "507f1f77bcf86cd799439011",
      "fullName": "Dana Ellis"
    },
    "briefing": {
      "runId": "6a3950c06bda450a1372048e",
      "estimatedMinutes": 90,
      "extendsTicketId": "507f1f77bcf86cd799439012"
    },
    "title": "Get onto the 2026 buyer guide",
    "description": "The guide names three of our competitors and not us.",
    "labels": [
      {
        "id": "3f2a9c6e-1b77-4c1e-9a54-5c7b2f0a91d2",
        "name": "Pricing page",
        "color": "#3b82f6"
      }
    ],
    "statusChangedAt": "2026-09-15T10:00:00.000Z",
    "assignee": {
      "userId": "507f1f77bcf86cd799439011",
      "fullName": "Dana Ellis"
    },
    "dueDate": "2026-10-01",
    "impact": 3,
    "commentCount": 2,
    "deletable": true,
    "createdAt": "2026-09-15T10:00:00.000Z",
    "updatedAt": "2026-09-16T08:30:00.000Z",
    "lastActivityAt": "2026-09-17T11:02:00.000Z"
  }
}

Changes

    • info

      removed the non-success response with the status

    • warning

      added the new nothing_to_return enum value to the / response property for the response status

    • warning

      added the new paging_requires_compact_view enum value to the / response property for the response status

    • warning

      added the new paging_requires_summary enum value to the / response property for the response status

    • info

      added the required property ////// to the response with the status