curl --request GET \
--url https://roughy-api-staging.fly.dev/v1/cuts \
--header 'Authorization: Bearer <token>'import requests
url = "https://roughy-api-staging.fly.dev/v1/cuts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://roughy-api-staging.fly.dev/v1/cuts', 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://roughy-api-staging.fly.dev/v1/cuts",
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://roughy-api-staging.fly.dev/v1/cuts"
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://roughy-api-staging.fly.dev/v1/cuts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://roughy-api-staging.fly.dev/v1/cuts")
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{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "pending",
"script": "<string>",
"error_code": "<string>",
"error_message": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"limit": 123,
"next_cursor": "<string>"
}{
"error": {
"code": "not_found",
"message": "Asset or project not found."
}
}{
"error": {
"code": "rate_limited",
"message": "Per-user rate limit exceeded; honour `Retry-After`."
}
}List cuts
One page of your cuts, newest first (keyset cursor pagination).
curl --request GET \
--url https://roughy-api-staging.fly.dev/v1/cuts \
--header 'Authorization: Bearer <token>'import requests
url = "https://roughy-api-staging.fly.dev/v1/cuts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://roughy-api-staging.fly.dev/v1/cuts', 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://roughy-api-staging.fly.dev/v1/cuts",
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://roughy-api-staging.fly.dev/v1/cuts"
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://roughy-api-staging.fly.dev/v1/cuts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://roughy-api-staging.fly.dev/v1/cuts")
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{
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"state": "pending",
"script": "<string>",
"error_code": "<string>",
"error_message": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z"
}
],
"limit": 123,
"next_cursor": "<string>"
}{
"error": {
"code": "not_found",
"message": "Asset or project not found."
}
}{
"error": {
"code": "rate_limited",
"message": "Per-user rate limit exceeded; honour `Retry-After`."
}
}Authorizations
Pass your API key as Authorization: Bearer sk_…. Mint a key from your dashboard's API-keys page.
Query Parameters
Restrict to one asset's cuts (1:N, newest first).
Restrict to one project.
Filter by lifecycle state.
Cut states reachable on the public API surface: a cut computes
pending → processing and lands completed, or failed.
pending, processing, completed, failed Maximum cuts to return (1-100). Default 20.
1 <= x <= 100Opaque continuation token from the previous page's next_cursor. Omit for the first page.
Response
One page of your cuts, newest first.
One page of the caller's cuts, newest first (keyset cursor pagination).
One page of items, ordered by this list's sort key descending. See the endpoint description for which key that is.
Show child attributes
Show child attributes
The page-size limit this response was computed with.
Opaque continuation token. Pass as cursor on the next request to fetch the following page; null means this is the last page.