POST

Create a card

Create a card at the end of a list. The listId sets the board and organization, so you don't pass those separately. Get a listId and any label IDs from Get one board first.

Request

POST /api/v1/cards

Send a JSON body with Content-Type: application/json.

Body

FieldTypeRequiredDescription
listIdstringYesTarget list. Get it from Get one board.
titlestring, up to 255 charactersYesCard title.
descriptionstring, up to 10000 charactersNoMarkdown supported.
priorityNONE, LOW, MEDIUM, HIGH, or URGENTNoDefaults to NONE.
dueDateISO 8601 string, for example 2026-07-20NoDue date for the card.
labelIdsstring array, up to 50 itemsNoLabels must already exist in the list's project.

Example

curl -X POST https://projavo.com/api/v1/cards \
  -H "Authorization: Bearer $PROJAVO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "listId": "<list-id>",
    "title": "[Bug] Vehicle spawns underground near Legion",
    "description": "**Reporter:** @player123\n\nWhen spawning the Adder at Legion Square, the vehicle clips through the map.\n\n**Repro:** /car adder near the fountain.",
    "priority": "HIGH",
    "labelIds": ["<label-id>"]
  }'
const res = await fetch("https://projavo.com/api/v1/cards", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PROJAVO_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    listId: "<list-id>",
    title: "Example card",
    priority: "MEDIUM",
  }),
});
const { card } = await res.json();

Response

Response 201

{
  "card": {
    "id": "<card-id>",
    "title": "[Bug] Vehicle spawns underground near Legion",
    "description": "**Reporter:** @player123\n\n…",
    "priority": "HIGH",
    "position": 2,
    "dueDate": null,
    "listId": "<list-id>",
    "createdAt": "2026-07-08T00:17:36.857Z",
    "labels": [ { "id": "<label-id>", "name": "Bug", "color": "#6B7280" } ]
  }
}
Note

The card is created as the key owner and broadcasts in real time. It appears instantly for anyone viewing the board.

Important

Labels must belong to the same project as the list. If any labelIds entry belongs to another project, the request fails with 422 and invalid_label, and no card is created.

Errors

StatusCodeMeaning
400invalid_bodyThe request body is not valid JSON.
401missing_keyNo API key was sent.
403insufficient_scopeThe key lacks the create permission.
403organization_not_allowedThe key's grants exclude the list's organization.
403forbiddenThe key owner is not a member of the organization, or their role cannot create cards (guests).
404not_foundThe list does not exist.
422validation_errorA field is missing or invalid, such as a title over 255 characters.
422invalid_labelOne or more labelIds do not belong to the list's project.
429Rate limitThe key passed 60 requests per minute.