Resolve or reopen a card comment thread
curl --request POST \
--url https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resolved": true
}
'import requests
url = "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve"
payload = { "resolved": True }
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({resolved: true})
};
fetch('https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'resolved' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve"
payload := strings.NewReader("{\n \"resolved\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resolved\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolved\": true\n}"
response = http.request(request)
puts response.read_body{
"comment": {
"author": "<string>",
"at": "2023-11-07T05:31:56Z",
"text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authorUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authorAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"editedAt": "2023-11-07T05:31:56Z",
"parentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"anchor": "<string>",
"quote": "<string>",
"resolvedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Projects
Resolve or reopen a card comment thread
Open to everyone on the project (like Notion), not only the author. Root comments only: 400 on a reply.
POST
/
projects
/
{projectId}
/
cards
/
{cardId}
/
comments
/
{commentId}
/
resolve
Resolve or reopen a card comment thread
curl --request POST \
--url https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resolved": true
}
'import requests
url = "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve"
payload = { "resolved": True }
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({resolved: true})
};
fetch('https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'resolved' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve"
payload := strings.NewReader("{\n \"resolved\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resolved\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/projects/{projectId}/cards/{cardId}/comments/{commentId}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolved\": true\n}"
response = http.request(request)
puts response.read_body{
"comment": {
"author": "<string>",
"at": "2023-11-07T05:31:56Z",
"text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authorUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"authorAgentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"editedAt": "2023-11-07T05:31:56Z",
"parentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"anchor": "<string>",
"quote": "<string>",
"resolvedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
An aik_… programmatic API key (app.atako.ai → Settings → API keys) or a Supabase session JWT.
Path Parameters
Project id
Card id
Comment id
Body
application/json
Response
A message on a card — where the discussion that led to a decision stays attached to the work it decided. author is the display name frozen when the comment was written, so someone leaving the company never empties the thread behind them. id is present on everything the card operations return; the copy embedded in GET /projects/{id} carries only author/at/text.
Show child attributes
Show child attributes