curl --request DELETE \
--url https://api.atako.ai/projects/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.atako.ai/projects/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.atako.ai/projects/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.atako.ai/projects/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.atako.ai/projects/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"tone": "amber",
"status": "active",
"owner": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z",
"participants": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"role": "<string>",
"kind": "human"
}
],
"columns": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"kind": "backlog"
}
],
"cards": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"assignee": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"priority": "low",
"labels": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"checklist": [
{
"text": "<string>",
"done": true
}
],
"comments": [
{
"author": "<string>",
"at": "2023-11-07T05:31:56Z",
"text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"blocked": "<string>",
"due": "2023-11-07T05:31:56Z"
}
],
"wiki": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"path": "<string>",
"content": "<string>",
"history": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sha": "<string>",
"at": "2023-11-07T05:31:56Z",
"author": "<string>",
"message": "<string>",
"content": "<string>"
}
],
"children": "<array>"
}
]
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Archive a project (never deletes)
Sets archivedAt. A real delete would cascade through the board, the cards, the comments and the whole wiki history — what the team learned would go with what it had left to do. Company admins and the project’s creator only.
curl --request DELETE \
--url https://api.atako.ai/projects/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.atako.ai/projects/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.atako.ai/projects/{id}', 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/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.atako.ai/projects/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.atako.ai/projects/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"tone": "amber",
"status": "active",
"owner": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"archivedAt": "2023-11-07T05:31:56Z",
"participants": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"role": "<string>",
"kind": "human"
}
],
"columns": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"kind": "backlog"
}
],
"cards": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"description": "<string>",
"assignee": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"column": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"priority": "low",
"labels": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"checklist": [
{
"text": "<string>",
"done": true
}
],
"comments": [
{
"author": "<string>",
"at": "2023-11-07T05:31:56Z",
"text": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"blocked": "<string>",
"due": "2023-11-07T05:31:56Z"
}
],
"wiki": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"path": "<string>",
"content": "<string>",
"history": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sha": "<string>",
"at": "2023-11-07T05:31:56Z",
"author": "<string>",
"message": "<string>",
"content": "<string>"
}
],
"children": "<array>"
}
]
}{
"error": "<string>",
"code": "<string>"
}{
"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
Response
The archived project.
A project and everything on it, in one read. A card has no status — its state IS the column it stands in — and the wiki is a tree of pages, each carrying snapshots of its own past.
amber, mint, periwinkle, plum, blush active, paused, done Show child attributes
Show child attributes
Ordered by position.
Show child attributes
Show child attributes
Non-archived cards, ordered by column then position, each with its labels, checklist and comments. The embedded comments carry no id here (only author/at/text) — the comment operations return the full ProjectCardComment.
Show child attributes
Show child attributes
Root pages of the wiki, each carrying its own children subtree and its history (newest revision first).
Show child attributes
Show child attributes