Reports
Schedule a report
Creates or replaces the caller’s delivery schedule for this report and resumes it if it was paused. Each run emails the caller a summary with a chart and a download link, and posts it to the chosen organization destinations. Only admins and owners can choose destinations. Every run checks the caller still has access to the tenant and pauses the schedule if not.
PUT
/
api
/
v1
/
tenant
/
reports
/
{report_id}
/
schedule
Schedule a report
curl --request PUT \
--url https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>' \
--data '
{
"localTime": "<string>",
"timezone": "<string>",
"destinationIds": [
"<string>"
],
"monthWeek": 123,
"weekday": 123
}
'import requests
url = "https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule"
payload = {
"localTime": "<string>",
"timezone": "<string>",
"destinationIds": ["<string>"],
"monthWeek": 123,
"weekday": 123
}
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
localTime: '<string>',
timezone: '<string>',
destinationIds: ['<string>'],
monthWeek: 123,
weekday: 123
})
};
fetch('https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule', 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.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule",
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([
'localTime' => '<string>',
'timezone' => '<string>',
'destinationIds' => [
'<string>'
],
'monthWeek' => 123,
'weekday' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule"
payload := strings.NewReader("{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
req.Header.Add("Authorization", "<api-key>")
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://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}"
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": {
"cadence": "<string>",
"destinationIds": [
"<string>"
],
"format": "<string>",
"id": "<string>",
"lastRunAt": "<string>",
"lastStatus": "<string>",
"localTime": "<string>",
"monthWeek": 123,
"nextRunAt": "<string>",
"pausedReason": "<string>",
"reportId": "<string>",
"state": "<string>",
"timezone": "<string>",
"weekday": 123
}
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}Authorizations
Enter "Bearer {token}"
Headers
Tenant ID
Path Parameters
Report ID
Body
application/json
Schedule
Was this page helpful?
⌘I
Schedule a report
curl --request PUT \
--url https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>' \
--data '
{
"localTime": "<string>",
"timezone": "<string>",
"destinationIds": [
"<string>"
],
"monthWeek": 123,
"weekday": 123
}
'import requests
url = "https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule"
payload = {
"localTime": "<string>",
"timezone": "<string>",
"destinationIds": ["<string>"],
"monthWeek": 123,
"weekday": 123
}
headers = {
"X-CostGraph-Tenant-ID": "<x-costgraph-tenant-id>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-CostGraph-Tenant-ID': '<x-costgraph-tenant-id>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
localTime: '<string>',
timezone: '<string>',
destinationIds: ['<string>'],
monthWeek: 123,
weekday: 123
})
};
fetch('https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule', 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.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule",
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([
'localTime' => '<string>',
'timezone' => '<string>',
'destinationIds' => [
'<string>'
],
'monthWeek' => 123,
'weekday' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"X-CostGraph-Tenant-ID: <x-costgraph-tenant-id>"
],
]);
$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://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule"
payload := strings.NewReader("{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
req.Header.Add("Authorization", "<api-key>")
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://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule")
.header("X-CostGraph-Tenant-ID", "<x-costgraph-tenant-id>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.costgraph.ai/api/v1/tenant/reports/{report_id}/schedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-CostGraph-Tenant-ID"] = '<x-costgraph-tenant-id>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"localTime\": \"<string>\",\n \"timezone\": \"<string>\",\n \"destinationIds\": [\n \"<string>\"\n ],\n \"monthWeek\": 123,\n \"weekday\": 123\n}"
response = http.request(request)
puts response.read_body{
"message": "some message",
"status": "success",
"data": {
"cadence": "<string>",
"destinationIds": [
"<string>"
],
"format": "<string>",
"id": "<string>",
"lastRunAt": "<string>",
"lastStatus": "<string>",
"localTime": "<string>",
"monthWeek": 123,
"nextRunAt": "<string>",
"pausedReason": "<string>",
"reportId": "<string>",
"state": "<string>",
"timezone": "<string>",
"weekday": 123
}
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}{
"message": "some message",
"status": "error"
}