Create a board
const url = 'https://projects.work.optidata.cloud/api/boards';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"Website Redesign","description":"Q3 marketing site refresh","icon":"🎨","parent_id":null,"user_permissions":{"8":"edit","9":"manage"}}'};
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 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "Website Redesign", "description": "Q3 marketing site refresh", "icon": "🎨", "parent_id": null, "user_permissions": { "8": "edit", "9": "manage" } }'Creates a board owned by the authenticated user, attaches the listed members with their permission levels, and optionally seeds columns from a project template. Members receive an in-app notification.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Emoji used as the board icon.
Id of an existing board to nest this board under.
Map of user id → permission level for the initial members.
Use none to skip a user. The creator is always the owner.
object
Optional project template used to seed the board’s columns.
Example
{ "name": "Website Redesign", "description": "Q3 marketing site refresh", "icon": "🎨", "parent_id": null, "user_permissions": { "8": "edit", "9": "manage" }}Responses
Section titled “Responses”The created board.
A project (kanban board). Boards nest via parent_id.
object
Owner user id.
Tenant/company identifier the board belongs to.
Parent board id (null for root boards).
Emoji icon.
Default card sort field for new columns.
Example
{ "visibility": "private", "order_cards_direction": "asc"}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."}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." ] }}