curl --request POST \
--url https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards"
payload = { "cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"link": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"card_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sprint_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z"
},
"historyHeadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"historyHeadSequence": "<string>"
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Add a card to a team board
Places a card on the board and records linked history. A new placement
defaults to the backlog and first not-started status. For an existing
placement, an omitted sprint or status preserves its current value; a null
sprint explicitly moves it to the backlog, while a null status also
preserves its current status. If the card’s project is not linked, it is
linked automatically only when the caller may add team projects. Entering
an automatic status closes an open card. A status with
assignMoverOnEntry adds the caller as an assignee if needed; API-key
requests use the key’s owning user. Both actions may apply together. No
status ever reopens a card. Destination required fields are enforced
unless explicitly bypassed.
curl --request POST \
--url https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards"
payload = { "cardId": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({cardId: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://davinci-app.com/api/v2/orgs/{orgId}/teams/{teamId}/cards', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"link": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"card_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sprint_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z"
},
"historyHeadId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"historyHeadSequence": "<string>"
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}Authorizations
Personal access token. The scopes granted at issuance determine both which
operations the key may call and the ceiling on the resource permissions it
can exercise. Each scope family is a ladder: projects:manage implies
projects:write and projects:read; cards:manage implies cards:write
and cards:read; and teams:manage implies teams:write and teams:read.
These are named API capability bundles, not blanket domain roles:
manage exposes only the permissions enumerated for that scope and never
bypasses the acting user's current role-based access.
Headers
Quoted or unquoted latest card historyHeadId. When the request body also
contains expectedHistoryHeadId, both values must match. A stale head
returns 409 CARD_HISTORY_CONFLICT without applying the mutation.
132Body
Omit to preserve an existing placement; null selects the backlog.
Omit or use null to default a new placement or preserve an existing one.
Latest committed card-history row ID; null only before a card has history.
Explicitly place the card despite missing destination-status fields.
Response
Current board placement.
Latest committed card-history row ID; null only before a card has history.
Globally monotonic card-history sequence.
^\d+$