Duplicate idea
curl --request POST \
--url https://app.trypost.it/api/ideas/{idea}/duplicate \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trypost.it/api/ideas/{idea}/duplicate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trypost.it/api/ideas/{idea}/duplicate', 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://app.trypost.it/api/ideas/{idea}/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://app.trypost.it/api/ideas/{idea}/duplicate"
req, _ := http.NewRequest("POST", 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.post("https://app.trypost.it/api/ideas/{idea}/duplicate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/ideas/{idea}/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "9e2b3c4e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"idea_stage_id": "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"title": "Behind the scenes of the 2.0 launch",
"body": "Show the team, the whiteboard and the first sketch of the new composer.",
"position": 1,
"media": [
{
"id": "9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70",
"path": "medias/9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70.jpg",
"url": "https://media.trypost.it/medias/9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "whiteboard.jpg",
"size": 351204,
"meta": {
"width": 1600,
"height": 1200
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 09:30:00",
"updated_at": "2026-10-08 09:30:00"
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Ideas
Duplicate idea
Copies an idea right after the original in the same stage, with its own copy of the media and the same labels.
POST
/
ideas
/
{idea}
/
duplicate
Duplicate idea
curl --request POST \
--url https://app.trypost.it/api/ideas/{idea}/duplicate \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trypost.it/api/ideas/{idea}/duplicate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trypost.it/api/ideas/{idea}/duplicate', 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://app.trypost.it/api/ideas/{idea}/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://app.trypost.it/api/ideas/{idea}/duplicate"
req, _ := http.NewRequest("POST", 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.post("https://app.trypost.it/api/ideas/{idea}/duplicate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/ideas/{idea}/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "9e2b3c4e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"idea_stage_id": "9e1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"title": "Behind the scenes of the 2.0 launch",
"body": "Show the team, the whiteboard and the first sketch of the new composer.",
"position": 1,
"media": [
{
"id": "9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70",
"path": "medias/9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70.jpg",
"url": "https://media.trypost.it/medias/9e2b3c51-8b9c-4d0e-9f1a-2b3c4d5e6f70.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "whiteboard.jpg",
"size": 351204,
"meta": {
"width": 1600,
"height": 1200
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 09:30:00",
"updated_at": "2026-10-08 09:30:00"
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
Workspace API key from Settings → API Keys.
Path Parameters
Idea id. An idea of another workspace returns 404.
Response
The copy.
Stage (board column) of the idea. null is Unassigned.
Order within its stage, starting at 0.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
UTC, format Y-m-d H:i:s.
Example:
"2026-10-07 18:20:00"
UTC, format Y-m-d H:i:s.
Example:
"2026-10-07 18:20:00"

