Reordenar etapas de ideias
curl --request PUT \
--url https://post.chatclean.com.br/api/idea-stages/order \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage_ids": [
"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d",
"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c"
]
}
'import requests
url = "https://post.chatclean.com.br/api/idea-stages/order"
payload = { "stage_ids": ["9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d", "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stage_ids: ['9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d', '9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c']
})
};
fetch('https://post.chatclean.com.br/api/idea-stages/order', 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://post.chatclean.com.br/api/idea-stages/order",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'stage_ids' => [
'9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d',
'9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c'
]
]),
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://post.chatclean.com.br/api/idea-stages/order"
payload := strings.NewReader("{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://post.chatclean.com.br/api/idea-stages/order")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://post.chatclean.com.br/api/idea-stages/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d",
"name": "Pronto",
"position": 0,
"ideas_count": 1,
"created_at": "2026-09-20 12:00:00",
"updated_at": "2026-09-20 12:00:00"
},
{
"id": "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"name": "A escrever",
"position": 1,
"ideas_count": 4,
"created_at": "2026-09-20 12:00:00",
"updated_at": "2026-09-20 12:00:00"
}
]{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Etapas de ideias
Reordenar etapas de ideias
Define a ordem do quadro. Envie os ids de todas as etapas do workspace, cada um uma vez, na nova ordem. Uma lista que não bate com as etapas atuais retorna 422 em stage_ids.
PUT
/
idea-stages
/
order
Reordenar etapas de ideias
curl --request PUT \
--url https://post.chatclean.com.br/api/idea-stages/order \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"stage_ids": [
"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d",
"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c"
]
}
'import requests
url = "https://post.chatclean.com.br/api/idea-stages/order"
payload = { "stage_ids": ["9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d", "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
stage_ids: ['9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d', '9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c']
})
};
fetch('https://post.chatclean.com.br/api/idea-stages/order', 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://post.chatclean.com.br/api/idea-stages/order",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'stage_ids' => [
'9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d',
'9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c'
]
]),
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://post.chatclean.com.br/api/idea-stages/order"
payload := strings.NewReader("{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}")
req, _ := http.NewRequest("PUT", 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.put("https://post.chatclean.com.br/api/idea-stages/order")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://post.chatclean.com.br/api/idea-stages/order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"stage_ids\": [\n \"9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d\",\n \"9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"id": "9e1a2b3d-5e6f-4a7b-9c8d-0e1f2a3b4c5d",
"name": "Pronto",
"position": 0,
"ideas_count": 1,
"created_at": "2026-09-20 12:00:00",
"updated_at": "2026-09-20 12:00:00"
},
{
"id": "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"name": "A escrever",
"position": 1,
"ideas_count": 4,
"created_at": "2026-09-20 12:00:00",
"updated_at": "2026-09-20 12:00:00"
}
]{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
Chave de API do workspace, criada em Configurações > Chaves de API.
Body
application/json
Minimum array length:
1Response
Todas as etapas na nova ordem (um array simples).
Posição no quadro, começando em 0.
Quantidade de ideias na etapa. Só vem em GET /idea-stages e PUT /idea-stages/order.
Em UTC, no formato Y-m-d H:i:s.
Example:
"2026-09-20 12:00:00"
Em UTC, no formato Y-m-d H:i:s.
Example:
"2026-09-20 12:00:00"