Create a card
const url = 'https://projects.work.optidata.cloud/api/boards/1/cards';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"column_id":301,"title":"Draft homepage copy","content":"{}","due_date":"2026-08-01T12:00:00Z","cover_color":"#3b82f6"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://projects.work.optidata.cloud/api/boards/1/cards \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "column_id": 301, "title": "Draft homepage copy", "content": "{}", "due_date": "2026-08-01T12:00:00Z", "cover_color": "#3b82f6" }'Creates a card (task) in one of the board’s columns. Optionally applies
a card template, sets a due date, cover color and rich-text content.
@-mentions inside content trigger notifications. Requires edit
permission (create policy).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Board id.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Target column (must exist).
Rich-text card description (serialized editor document, JSON string).
Card type; only ORDINARY can be created directly.
Position within the column.
Card template to apply (must be visible on this board).
Originating Optiwork app nickname when the card is created from another app (e.g. mail).
Example
{ "column_id": 301, "title": "Draft homepage copy", "content": "{}", "due_date": "2026-08-01T12:00:00Z", "cover_color": "#3b82f6"}Responses
Section titled “Responses”The created card.
A task. Derived attributes (tags_ids, assignees_ids, *_count,
human_*, due_date_status, is_time_tracking) are present on single
card reads; list contexts may return a subset of attributes.
object
Creator user id.
Rich-text description (serialized editor document, JSON string).
Position within its column.
Sequential card number within the board.
Opaque id tied to the current due date (used for calendar sync).
Owning checklist (checklist-item cards only).
Cached count of checklist items on this card.
Ids of the card’s tags (as strings; may contain null when empty).
Ids of the card’s assignees (as strings; may contain null when empty).
Truthy when the caller has a running timer on this card.
Localized short due date (e.g. Aug 1, 2026).
Example
{ "type": "ORDINARY", "status": "OPEN", "cover_color": "#ef4444", "due_date_status": "OVERDUE"}Missing, invalid or expired bearer passport.
object
Example
{ "error": "JWT passport exception: Missing bearer token in request"}The authenticated user lacks the required board permission.
object
Example
{ "message": "This action is unauthorized."}Resource not found, or a nested resource does not belong to its parent in the path.
object
Example
{ "message": "Not found."}Validation failed.
object
First validation error message.
Map of field name → list of error messages.
object
Example
{ "message": "The name field is required.", "errors": { "name": [ "The name field is required." ] }}