Export everything you made
curl --request GET \
--url https://api.doers.sh/v2/users/me/export \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.doers.sh/v2/users/me/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.doers.sh/v2/users/me/export', 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.doers.sh/v2/users/me/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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.doers.sh/v2/users/me/export"
req, _ := http.NewRequest("GET", 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.get("https://api.doers.sh/v2/users/me/export")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doers.sh/v2/users/me/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"version": 1,
"exportedAt": 123,
"areas": [
{}
],
"projects": [
{}
],
"headings": [
{}
],
"tasks": [
{}
],
"checklistItems": [
{}
],
"habits": [
{}
],
"habitCompletions": [
{}
],
"journalEntries": [
{}
],
"journalThoughts": [
{}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}Users
Export everything you made
Every area, project, heading, task, checklist item, habit, habit completion, journal entry and journal thought the account owns, as JSON. Served even when the trial is over and no plan holds the account (DOE-409): what someone made stays theirs.
GET
/
v2
/
users
/
me
/
export
Export everything you made
curl --request GET \
--url https://api.doers.sh/v2/users/me/export \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.doers.sh/v2/users/me/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.doers.sh/v2/users/me/export', 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.doers.sh/v2/users/me/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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.doers.sh/v2/users/me/export"
req, _ := http.NewRequest("GET", 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.get("https://api.doers.sh/v2/users/me/export")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.doers.sh/v2/users/me/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"version": 1,
"exportedAt": 123,
"areas": [
{}
],
"projects": [
{}
],
"headings": [
{}
],
"tasks": [
{}
],
"checklistItems": [
{}
],
"habits": [
{}
],
"habitCompletions": [
{}
],
"journalEntries": [
{}
],
"journalThoughts": [
{}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"access": {
"reason": "trial_ended",
"trialEndedAt": 123
}
}
}Authorizations
A pc_… token generated from Settings > API & MCP.
Response
Success.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes