MENU navbar-image

Introduction

Documentação oficial da API para integrações externas.

Esta documentação descreve as rotas da API, parâmetros e exemplos de uso.

Use um token gerado em Painel → Tokens de API e envie no header `Authorization` como `Bearer <token>`.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer Bearer {TOKEN}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Envie o token de API no header Authorization.

Cards

Create a card

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/cards" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Integração ERP\",
    \"description\": \"Eius et animi quos velit et.\",
    \"column_id\": 12,
    \"start_date\": \"2026-02-01\",
    \"due_date\": \"2026-02-10\"
}"
const url = new URL(
    "https://megakanban.com.br/api/cards"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "Integração ERP",
    "description": "Eius et animi quos velit et.",
    "column_id": 12,
    "start_date": "2026-02-01",
    "due_date": "2026-02-10"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/cards

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string     

The task title. Example: Integração ERP

description   string  optional    

The task description (Markdown supported). Example: Eius et animi quos velit et.

column_id   integer     

Column ID to place the card. Example: 12

start_date   date  optional    

Task start date (YYYY-MM-DD). Example: 2026-02-01

due_date   date  optional    

Task due date (YYYY-MM-DD). Example: 2026-02-10

Update a card

requires authentication

Example request:
curl --request PATCH \
    "https://megakanban.com.br/api/cards/migracao-dos-cards-do-trello-para-megakanban" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"column_id\": 16,
    \"start_date\": \"architecto\",
    \"due_date\": \"architecto\"
}"
const url = new URL(
    "https://megakanban.com.br/api/cards/migracao-dos-cards-do-trello-para-megakanban"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "architecto",
    "description": "Eius et animi quos velit et.",
    "column_id": 16,
    "start_date": "architecto",
    "due_date": "architecto"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/cards/{slug}

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The slug of the card. Example: migracao-dos-cards-do-trello-para-megakanban

card   integer     

The card ID. Example: 5

Body Parameters

title   string  optional    

New title. Example: architecto

description   string  optional    

Updated description. Example: Eius et animi quos velit et.

column_id   integer  optional    

Column ID to move the card. Example: 16

start_date   date  optional    

Updated start date (YYYY-MM-DD). Example: architecto

due_date   date  optional    

Updated due date (YYYY-MM-DD). Example: architecto

Endpoints

POST api/kanban/events

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/kanban/events" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/kanban/events"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/kanban/events

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/drawings/{drawing_slug}/bootstrap

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/drawings/ambinte-de-teste/bootstrap" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/bootstrap"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6ImV6aTAyS1IybTVnOEJCWHNwU3o5TFE9PSIsInZhbHVlIjoieUJKMlhSSkZPVytERkJFeC9TT01SQ0h6dkNtTFBYbGM4VjZtSDF2RzdTTDdNRy8rS3hyQ3JoVmU3dk1va0pGUjBZQU84SGJsVTFNSldOQkN6R2ZycVByNnJYSW14SjdMTnBTdk53S25BSHVDZ3U0Z0grTzVnVUtzODhUU2VENysiLCJtYWMiOiJhZmU4NTZhZDhjMDhmZmFkZWUyOWUzYWU2YTZhY2EzMjhlZmQxZDE0NWM5MDExNmRjNDcwMTE0YzRhNWYwYjQyIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6Ik5WY1lIM0twRnl0SlNoMDlkU1pLQ2c9PSIsInZhbHVlIjoiTWN6S0tweHB4U1RGVVFRQVh5QnRGKzA0ZW9KMmFmUjdDNi82dVI0SHZ6Y0Z4cVlWaTgxZ2NaUmlQa1Z4TnVBNFc4cmYyNzVSYlJFSHBlVyt5UUFib0RvcnBOSkpiVHZZUVNuSnhKMi9lbmxiZ2lGVmY2TU9TK0dtNUdnTFBmeWIiLCJtYWMiOiI3MzcxOWYzZWY1NjI3MjEwZjBjYjdhOWIxZmY3YzI1YWI2NWE5NjA5MzQzZGQ4Y2Q5MDk0N2E0OGRkNmJjODczIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/drawings/{drawing_slug}/bootstrap

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

PATCH api/drawings/{drawing_slug}/preferences

requires authentication

Example request:
curl --request PATCH \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/preferences" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"snap_grid\": false,
    \"snap_objects\": false,
    \"snap_angle\": false,
    \"snap_spacing\": true,
    \"grid_visible\": false,
    \"theme\": \"system\",
    \"last_zoom\": 4,
    \"last_pan\": {
        \"x\": 4326.41688,
        \"y\": 4326.41688
    }
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/preferences"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "snap_grid": false,
    "snap_objects": false,
    "snap_angle": false,
    "snap_spacing": true,
    "grid_visible": false,
    "theme": "system",
    "last_zoom": 4,
    "last_pan": {
        "x": 4326.41688,
        "y": 4326.41688
    }
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/drawings/{drawing_slug}/preferences

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

snap_grid   boolean  optional    

Example: false

snap_objects   boolean  optional    

Example: false

snap_angle   boolean  optional    

Example: false

snap_spacing   boolean  optional    

Example: true

grid_visible   boolean  optional    

Example: false

theme   string  optional    

Example: system

Must be one of:
  • light
  • dark
  • system
last_zoom   number  optional    

Must be at least 0.1. Must not be greater than 4. Example: 4

last_pan   object  optional    
x   number  optional    

Example: 4326.41688

y   number  optional    

Example: 4326.41688

POST api/drawings/{drawing_slug}/operations

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/operations" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"operation_id\": \"b\",
    \"client_id\": \"n\",
    \"sent_at\": \"2026-03-03T11:29:16\",
    \"base_version\": 67,
    \"scene_version\": 66,
    \"operations\": [
        {
            \"type\": \"create\",
            \"target_id\": \"n\"
        }
    ],
    \"scene_snapshot\": [],
    \"summary\": \"b\"
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/operations"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "operation_id": "b",
    "client_id": "n",
    "sent_at": "2026-03-03T11:29:16",
    "base_version": 67,
    "scene_version": 66,
    "operations": [
        {
            "type": "create",
            "target_id": "n"
        }
    ],
    "scene_snapshot": [],
    "summary": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/operations

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

operation_id   string     

Must not be greater than 80 characters. Example: b

client_id   string  optional    

Must not be greater than 80 characters. Example: n

sent_at   string  optional    

Must be a valid date. Example: 2026-03-03T11:29:16

base_version   integer     

Must be at least 1. Example: 67

scene_version   integer  optional    

Must be at least 1. Example: 66

operations   object[]     

Must have at least 1 items. Must not have more than 50 items.

type   string     

Example: create

Must be one of:
  • create
  • update
  • delete
  • reorder
  • connect
  • disconnect
  • style
  • transform
  • viewport
target_id   string  optional    

Must not be greater than 80 characters. Example: n

payload   object  optional    
scene_snapshot   object     
elements   object  optional    
connections   object  optional    
summary   string  optional    

Must not be greater than 240 characters. Example: b

GET api/drawings/{drawing_slug}/revisions

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6Im44MnRVcGVPOENHRGEyNTFiVVd0S2c9PSIsInZhbHVlIjoiR3NnNHFXU3c3R09sNm45YURCbjMwdmN0Qkl0LzNPbVU0ajdkRjg2Q3hsZ2V3OG4wa1FGcmdkQ0U1a1Z6K2JLTGJQenVpQkpCQmdiRGZaeVFkU3VNdG9QY3VUdzlyVUIzT3VQNkVXUzA5RlBEY0gwaTdZbTZ0OUlsTmllbkdwbVQiLCJtYWMiOiJjYWMxOWJjMWQ1MDA0Y2Y0MGVkYmIwYmRjMWMwNzgzNDA1ZTk4YWQ2ZDhiNjRjNDRjZDRkNjQzZTg0YjhiMDUwIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6IkxGK3dLUi9xdzg2dlFHNE5EUWhSb3c9PSIsInZhbHVlIjoiQWg3azlSZDA0VzNta0JjRG5ReVFjRDhYa0pJWUUvSktUcDNhTVd1LzBSOE1NdmVnVStCNG9mV3BtZzZXNlpJaE8rZGU4SnZnR0ZmYlora2taKzFBWWl3LzRqUStBK1kxVUpsNVlpMmlZVmF6T3BVVEFtZVczSUNsUlRVaHY0VUEiLCJtYWMiOiI5MTFmZTI2ZDU0MDg0ZmY2YmY1Y2I3MDEwZmUyYTVjOTVmYTE2YTczZmQ2YWI5M2JhZGM5ZWQ5Y2E4YjFmNzI1IiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/drawings/{drawing_slug}/revisions

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

POST api/drawings/{drawing_slug}/revisions/snapshot

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions/snapshot" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"base_version\": 16,
    \"scene_snapshot\": [],
    \"summary\": \"b\"
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions/snapshot"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "base_version": 16,
    "scene_snapshot": [],
    "summary": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/revisions/snapshot

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

base_version   integer     

Must be at least 1. Example: 16

scene_snapshot   object     
summary   string  optional    

Must not be greater than 240 characters. Example: b

POST api/drawings/{drawing_slug}/revisions/restore

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions/restore" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"base_version\": 16,
    \"version\": 22,
    \"summary\": \"g\"
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/revisions/restore"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "base_version": 16,
    "version": 22,
    "summary": "g"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/revisions/restore

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

base_version   integer     

Must be at least 1. Example: 16

version   integer     

Must be at least 1. Example: 22

summary   string  optional    

Must not be greater than 240 characters. Example: g

POST api/drawings/{drawing_slug}/exports

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"format\": \"svg\",
    \"scene_snapshot\": [],
    \"options\": {
        \"width\": 1,
        \"height\": 22,
        \"background_color\": \"gzmiyvdljnikhway\",
        \"prefer_async\": true
    }
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "format": "svg",
    "scene_snapshot": [],
    "options": {
        "width": 1,
        "height": 22,
        "background_color": "gzmiyvdljnikhway",
        "prefer_async": true
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/exports

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

format   string     

Example: svg

Must be one of:
  • svg
  • pdf
  • png
scene_snapshot   object     
options   object  optional    
width   number  optional    

Must be at least 200. Must not be greater than 12000. Example: 1

height   number  optional    

Must be at least 120. Must not be greater than 12000. Example: 22

background_color   string  optional    

Must not be greater than 20 characters. Example: gzmiyvdljnikhway

prefer_async   boolean  optional    

Example: true

GET api/drawings/{drawing_slug}/exports/{drawingExport_id}

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports/16" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports/16"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6Ik9XV3hJaW1ISzhlMVZoK3VURmpaeXc9PSIsInZhbHVlIjoiU1FlaWEwTVBMeW82Z0RFQmQvMjlJSDFsZGtMcE9LekRSc3BUWGpEMElRcDEwWnFlQlFrY2NUQTRGK2RXRWhLbUNTNW1qZHJFQUZmd2pvM1AwZXY2U3R4SDg2KzNXNktsdGMvaC8wdW83V3hDdy9mdzlkcFZXbGtJdXg1QlFEQjIiLCJtYWMiOiI1OTFlYzQ2MDIyZTIxOTFmMTNmZDRiNzYyNTk4NWQ5YTQxODE0NjA4ODBlMTE0YmVhMTM3YTA2N2I3NmE5ODhhIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6IkMrbnJqdVRXNEg4alJ2UTVybUVPbVE9PSIsInZhbHVlIjoiUW13b3doR21Ta0hjMjljYWRab2Erb0dYWW83Q3FUU3d1TDdldkFEaEZ4SU5NWGhET05aWGdIMVM4TnNQbGpOMU1pQnpjejlCcVRpaHZMKzNKd0FUeW9VVmhPSWQ4Yks2ejVaV3FvUU9IR1NNcUxQZDhDdmg2a1hIRm0zYlBKeDEiLCJtYWMiOiJkNzQ3MmU2MDA2M2E3MGFmMzdjYTY2ZTA5YWM1MjUxOTU3OGQ4NzEzYTYzYTQwZDZmYTdkNjhiNjZiNmQxM2FhIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/drawings/{drawing_slug}/exports/{drawingExport_id}

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

drawingExport_id   integer     

The ID of the drawingExport. Example: 16

GET api/drawings/{drawing_slug}/exports/{drawingExport_id}/download

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports/16/download" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/exports/16/download"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6IjJ3aVl5eGhGaFkrK0V2RWRwN0R6YUE9PSIsInZhbHVlIjoiME94ekxxVUdmRzJhc1ArempQbU50azViRDJvSUpDL3gzeU1zZkhicDIzUHhSRG9FM3ZETjU4emkzVkhTdnVGSXJlOWNOcEt3TXVaN1RIKzI1RXN3MThzWHBoNEVUUHd0NE9qU0wzYmpVSkhJV1F4NFJyYkF5cXVYTXo2WjV3dDYiLCJtYWMiOiJhNTFmMTk4YmYxODkyOTM1NzA0NmMwZjliMjlhNDhhNWI5Mjg4OTY1YzI1OGNiMGM0NjhlODIzNmE3MWFhMjhmIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6Ik9vQnBVWE1xYXcybmZUT1Ixd1U4Unc9PSIsInZhbHVlIjoiaWRBR1JOdmQrQlpTd29nclZNS0s4QTZscXYzTGYrOFdOa1hqWDdMMVhiTThSUDJMV2wvdzIxTUFEUEtraDM4d2M1ckw2TTFMcHlKSEx5YUIxRWJvK0o3b2tJTGVmS3Y0TDk4Q2hDS0ZvNHFYcStRWVVUaXI2UytNNzh2Yld3N2EiLCJtYWMiOiJlMDJmNmMyNDAyNjAyMDRkMDEzNDQ2MWVkZjIzYTBmY2M5N2Q3ODkzZWY2NWE4YjBkMGM5MjM5MDIwNThkZTI2IiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/drawings/{drawing_slug}/exports/{drawingExport_id}/download

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

drawingExport_id   integer     

The ID of the drawingExport. Example: 16

POST api/drawings/{drawing_slug}/assets/upload

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/assets/upload" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/phpcejj48v98meedUKAlHV" 
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/assets/upload"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/assets/upload

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

file   file     

Must be a file. Example: /tmp/phpcejj48v98meedUKAlHV

POST api/drawings/{drawing_slug}/assets/youtube

requires authentication

Example request:
curl --request POST \
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/assets/youtube" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\"
}"
const url = new URL(
    "https://megakanban.com.br/api/drawings/ambinte-de-teste/assets/youtube"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/drawings/{drawing_slug}/assets/youtube

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

drawing_slug   string     

The slug of the drawing. Example: ambinte-de-teste

Body Parameters

url   string     

Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

GET api/health

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/health" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/health"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6Ikp0L09EeGovZVkxcEcrR00zVE5LUFE9PSIsInZhbHVlIjoid0lSOEY4ZFJRWDF4TE04S3UvTXNhOGJSbS92TUNCaWNmNnk2bng2S2FEQi9vbG1QeG1DTzd0TUFET1paTnBCdTdFZGI0RGptUDF3UGtpODBNTFhic3ZCM0E4Qkt5OW5SaVdaYU9EakU4OEYxTVZOTkVZL0hJZGJidklmQ2xiN3oiLCJtYWMiOiI3ZDBlZTBiNzU0ZThkNGVjMzNhYTk0MjEzNjAyMDNjNzliZDcwMDc4NzMxYjk2YmZlZTkzN2NjZmE1YjkzNDMzIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6ImZrL1lSYTQxd0pucVc5OWk4TGpWcUE9PSIsInZhbHVlIjoiRVdmR1c2VTMyUkZlRGNKcERvKzlITkpoYmxMQkordXFya1k3MWR4ek80NXdaTG5oNXFRcW0wV2gvT0hGRUdkMGx5WUVPa2VQNUZWUzlqUEVWUUFLZkJaVno1SmkxckgyVTQ5V2dYMDdtN216R3UwTitZVGhKMVRSZnpyMjVoTW0iLCJtYWMiOiI2MjU3ZjZlZTRiMzM1Njc3NmUwYTc0YzY2M2Y0N2UyMmMyMGFjNTRiYWQ0YWRiMzM2MzM2MGZkZDdlNTVlNGE1IiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "status": "ok",
    "timestamp": 1772548156
}
 

Request      

GET api/health

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/test-endpoint

requires authentication

Example request:
curl --request GET \
    --get "https://megakanban.com.br/api/test-endpoint" \
    --header "Authorization: Bearer Bearer {TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://megakanban.com.br/api/test-endpoint"
);

const headers = {
    "Authorization": "Bearer Bearer {TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
set-cookie: XSRF-TOKEN=eyJpdiI6IkVqcXRPM0RPM3dyTFVKdmJ3elZ3K0E9PSIsInZhbHVlIjoiZ1hYT29NaGRrc0VmODNHZzMwUkpSMEE1ZVBsa1dNa3EzaTM3YnhTVnowZzd6cmlMaVhxUnpsLzBCRHQyNHF2anZvcjIxRG5CQnRtSnd3WUx6ZkIvb1NLVXBoNHJBaUdvSTdONHhZUzlBMG9NSEx3b0ZIbjRaZDduV2dRblhDb0oiLCJtYWMiOiJiZjk1NzRlZGE5M2VjNjYyZGUxZmQ3OGM3YTZhOTc5OWZlODYzMmYyN2JjNzA0ZTA0YWViNGNmMTQwZGEyNTI0IiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; samesite=lax; megakanban_session=eyJpdiI6ImZrUDV2V1Y0N0x2TnJna21XRUxNa2c9PSIsInZhbHVlIjoiZkVoVktSY09kT3JCaUJtSHVLWlc1djhUTHZ4MDRBUFNKUGFaTHZaMkZGQ3IvU0RtUUFDSitUbnNIOCs0MDc1MThkVmlaN0JzMnpMNkEyZCtxVXNsTEV2NWNkMHdJajBrb2U3OVlTcDZLQXBFMDUydVJrOXFjM3hrWVdpZCs0OVoiLCJtYWMiOiI4NWI3ZWIxZmQ4NzA1YTlkOTAwMjIzN2U5NmFlN2E0OTUxMWY4MzZkNjZkNjExMDRjZjE3YjYyNjRlYTRjMmUwIiwidGFnIjoiIn0%3D; expires=Tue, 03 Mar 2026 16:29:16 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax
 

{
    "message": "Performance test successful",
    "timestamp": 1772548156.624617,
    "memory": 67633152,
    "random": 681
}
 

Request      

GET api/test-endpoint

Headers

Authorization        

Example: Bearer Bearer {TOKEN}

Content-Type        

Example: application/json

Accept        

Example: application/json

Webhooks

Create a card via webhook Endpoint to create a card in a board using the board webhook secret.

Example request:
curl --request POST \
    "https://megakanban.com.br/api/webhooks/heavy-codes-projetos/3y2Qf5xT8kVn9Zb1LpJq7mHrUeCt0AaXnR4y9sYp" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"titulo\": \"Lead do CRM\",
    \"descricao\": \"Novo lead importado\"
}"
const url = new URL(
    "https://megakanban.com.br/api/webhooks/heavy-codes-projetos/3y2Qf5xT8kVn9Zb1LpJq7mHrUeCt0AaXnR4y9sYp"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "titulo": "Lead do CRM",
    "descricao": "Novo lead importado"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/webhooks/{board_slug}/{secret}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

board_slug   string     

The slug of the board. Example: heavy-codes-projetos

secret   string     

Webhook secret. Example: 3y2Qf5xT8kVn9Zb1LpJq7mHrUeCt0AaXnR4y9sYp

board   string     

Board slug. Example: marketing

Body Parameters

titulo   string     

Card title. Example: Lead do CRM

descricao   string     

Card description. Example: Novo lead importado