Run a report now
curl --request POST \
--url https://app-api.costory.io/reports/{reportId}/executions \
--header 'Authorization: Bearer <token>'import requests
url = "https://app-api.costory.io/reports/{reportId}/executions"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app-api.costory.io/reports/{reportId}/executions', 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-api.costory.io/reports/{reportId}/executions",
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-api.costory.io/reports/{reportId}/executions"
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-api.costory.io/reports/{reportId}/executions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app-api.costory.io/reports/{reportId}/executions")
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{
"executionIds": [
"<string>"
]
}{
"error": "VALIDATION_ERROR",
"details": "<string>",
"reason": "<string>"
}{
"error": "<string>"
}{
"error": "FORBIDDEN"
}{
"ok": false,
"error": "OUTCOME_UNKNOWN",
"reportId": "<string>",
"executionIds": [
"<string>"
]
}Reports API
Run a report now
Enqueues and synchronously runs pending executions for every destination.
POST
/
reports
/
{reportId}
/
executions
Run a report now
curl --request POST \
--url https://app-api.costory.io/reports/{reportId}/executions \
--header 'Authorization: Bearer <token>'import requests
url = "https://app-api.costory.io/reports/{reportId}/executions"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app-api.costory.io/reports/{reportId}/executions', 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-api.costory.io/reports/{reportId}/executions",
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-api.costory.io/reports/{reportId}/executions"
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-api.costory.io/reports/{reportId}/executions")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app-api.costory.io/reports/{reportId}/executions")
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{
"executionIds": [
"<string>"
]
}{
"error": "VALIDATION_ERROR",
"details": "<string>",
"reason": "<string>"
}{
"error": "<string>"
}{
"error": "FORBIDDEN"
}{
"ok": false,
"error": "OUTCOME_UNKNOWN",
"reportId": "<string>",
"executionIds": [
"<string>"
]
}Authorizations
Send Authorization: Bearer <credential> using either a Clerk session JWT or a Clerk API key (ak_*). API keys may identify a user (user_*) or organization (org_*) principal and are generated in the Clerk Dashboard under API keys.
Path Parameters
Response
Run started and completed (or left pending for async widgets)
Last modified on July 20, 2026
Was this page helpful?
⌘I
