import { OctosparkClient } from '@octospark/sdk'
const client = new OctosparkClient({
token: process.env.OCTOSPARK_TOKEN
})
const response = await client.assets.listAssets({
teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
query: {},
})import os
from octospark_sdk import OctosparkClient
client = OctosparkClient(token=os.environ["OCTOSPARK_TOKEN"])
response = client.assets.list_assets(
teamId=os.environ.get("OCTOSPARK_TEAM_ID", "teamId")
)octospark assets list \
--request '{"path":{"teamId":"teamId"}}'use reqwest::Client;
use std::env;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let client = Client::new();
let base_url = env::var("OCTOSPARK_API_URL").unwrap_or_else(|_| "https://api.octospark.ai".to_string());
let team_id = env::var("OCTOSPARK_TEAM_ID").unwrap_or_else(|_| "teamId".to_string());
let url = format!("{}/v1/teams/{}/assets", base_url.trim_end_matches('/'), team_id);
let token = env::var("OCTOSPARK_TOKEN").expect("OCTOSPARK_TOKEN");
let mut request = client.get(url).bearer_auth(token);
let response = request.send().await?;
println!("{}", response.text().await?);
Ok(())
}import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
Future<void> main() async {
final baseUrl = Platform.environment['OCTOSPARK_API_URL'] ?? 'https://api.octospark.ai';
final token = Platform.environment['OCTOSPARK_TOKEN'];
final teamId = Platform.environment['OCTOSPARK_TEAM_ID'] ?? 'teamId';
final url = '${baseUrl.replaceFirst(RegExp(r'/$'), '')}/v1/teams/$teamId/assets';
final uri = Uri.parse(url);
final headers = {
'Authorization': 'Bearer $token',
};
final response = await http.get(
uri,
headers: headers,
);
print(response.body);
}curl --request GET \
--url https://api-staging.octospark.ai/v1/teams/{teamId}/assets \
--header 'Authorization: Bearer <token>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.octospark.ai/v1/teams/{teamId}/assets",
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-staging.octospark.ai/v1/teams/{teamId}/assets"
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-staging.octospark.ai/v1/teams/{teamId}/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.octospark.ai/v1/teams/{teamId}/assets")
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$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api-staging.octospark.ai/v1/teams/{teamId}/assets' -Method GET -Headers $headersimport Foundation
let url = URL(string: "https://api-staging.octospark.ai/v1/teams/{teamId}/assets")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val request = Request.Builder()
.url("https://api-staging.octospark.ai/v1/teams/{teamId}/assets")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"originalFilename": "<string>",
"fileSize": 123,
"mimeType": "<string>",
"assetType": "image",
"assetCategory": "user_upload",
"assetTypeData": {
"type": "image",
"width": 123,
"height": 123,
"format": "<string>",
"colorSpace": "<string>",
"meme": {
"sourceTemplateId": "<string>",
"sourceUrl": "<string>",
"captionBoxCount": 1,
"templatePageUrl": "<string>",
"captionZones": [
{
"key": "<string>",
"label": "<string>",
"x": 0.5,
"y": 0.5,
"width": 0,
"height": 0,
"style": {
"fontFamily": "<string>",
"fontSize": 259,
"fill": "<string>",
"stroke": "<string>",
"strokeWidth": 10,
"align": "left",
"bold": true,
"uppercase": true,
"verticalAlign": "top",
"italic": true,
"shadow": true,
"opacity": 0.5
},
"rotation": 0
}
],
"layout": {
"source": "imgflip_official",
"sourcePageUrl": "<string>",
"capturedAt": "<string>",
"canvasWidth": 4096.5,
"canvasHeight": 4096.5,
"imageBounds": {
"x": 0.5,
"y": 0.5,
"width": 0,
"height": 0
},
"sourceApiUrl": "<string>",
"generatorScriptUrl": "<string>",
"modelId": "<string>",
"generationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"aspectRatio": "<string>"
},
"storagePath": "<string>",
"thumbnailPath": "<string>",
"aiTitle": "<string>",
"aiDescription": "<string>",
"aiAltText": "<string>",
"aiTags": [
"<string>"
],
"contentHash": "<string>",
"processingStatus": "pending",
"processingError": "<string>",
"isDeleted": true,
"deletedAt": "<string>",
"hardDeletedAt": "<string>",
"sharedWithOrg": true,
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"folderName": "<string>",
"displayName": "<string>",
"aspectRatio": "<string>",
"isProcessing": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"thumbnailUrl": "<string>",
"fileUrl": "<string>",
"previewUrlsExpireAt": "<string>"
}
],
"total": 123,
"nextCursor": "<string>",
"prevCursor": "<string>"
}{
"issues": [
{
"_tag": "Pointer",
"path": [
"<string>"
],
"message": "<string>"
}
],
"message": "<string>",
"_tag": "HttpApiDecodeError"
}{
"message": "<string>",
"_tag": "Unauthorized"
}{
"message": "<string>",
"_tag": "PaymentRequired"
}{
"message": "<string>",
"_tag": "Forbidden"
}{
"message": "<string>",
"_tag": "NotFound"
}{
"message": "<string>",
"_tag": "Conflict",
"code": "<string>",
"currentRevision": 123
}{
"message": "<string>",
"code": "<string>",
"_tag": "UnprocessableEntity"
}{
"message": "<string>",
"_tag": "TooManyRequests",
"code": "<string>",
"retryAfterSeconds": 123
}{
"message": "<string>",
"_tag": "InternalError"
}List assets
List a team’s active media assets with pagination and optional filters such as folder. Each item carries signed preview URLs (thumbnailUrl, fileUrl) valid until previewUrlsExpireAt, so render a grid from this one response and refetch it before expiry instead of signing assets one by one. Trashed assets are excluded; use listTrash for those. To find assets by content, prefer searchAssets (free keyword) or searchAgenticAssets (paid semantic).
import { OctosparkClient } from '@octospark/sdk'
const client = new OctosparkClient({
token: process.env.OCTOSPARK_TOKEN
})
const response = await client.assets.listAssets({
teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
query: {},
})import os
from octospark_sdk import OctosparkClient
client = OctosparkClient(token=os.environ["OCTOSPARK_TOKEN"])
response = client.assets.list_assets(
teamId=os.environ.get("OCTOSPARK_TEAM_ID", "teamId")
)octospark assets list \
--request '{"path":{"teamId":"teamId"}}'use reqwest::Client;
use std::env;
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {
let client = Client::new();
let base_url = env::var("OCTOSPARK_API_URL").unwrap_or_else(|_| "https://api.octospark.ai".to_string());
let team_id = env::var("OCTOSPARK_TEAM_ID").unwrap_or_else(|_| "teamId".to_string());
let url = format!("{}/v1/teams/{}/assets", base_url.trim_end_matches('/'), team_id);
let token = env::var("OCTOSPARK_TOKEN").expect("OCTOSPARK_TOKEN");
let mut request = client.get(url).bearer_auth(token);
let response = request.send().await?;
println!("{}", response.text().await?);
Ok(())
}import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
Future<void> main() async {
final baseUrl = Platform.environment['OCTOSPARK_API_URL'] ?? 'https://api.octospark.ai';
final token = Platform.environment['OCTOSPARK_TOKEN'];
final teamId = Platform.environment['OCTOSPARK_TEAM_ID'] ?? 'teamId';
final url = '${baseUrl.replaceFirst(RegExp(r'/$'), '')}/v1/teams/$teamId/assets';
final uri = Uri.parse(url);
final headers = {
'Authorization': 'Bearer $token',
};
final response = await http.get(
uri,
headers: headers,
);
print(response.body);
}curl --request GET \
--url https://api-staging.octospark.ai/v1/teams/{teamId}/assets \
--header 'Authorization: Bearer <token>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.octospark.ai/v1/teams/{teamId}/assets",
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-staging.octospark.ai/v1/teams/{teamId}/assets"
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-staging.octospark.ai/v1/teams/{teamId}/assets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.octospark.ai/v1/teams/{teamId}/assets")
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$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api-staging.octospark.ai/v1/teams/{teamId}/assets' -Method GET -Headers $headersimport Foundation
let url = URL(string: "https://api-staging.octospark.ai/v1/teams/{teamId}/assets")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val request = Request.Builder()
.url("https://api-staging.octospark.ai/v1/teams/{teamId}/assets")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"teamId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"originalFilename": "<string>",
"fileSize": 123,
"mimeType": "<string>",
"assetType": "image",
"assetCategory": "user_upload",
"assetTypeData": {
"type": "image",
"width": 123,
"height": 123,
"format": "<string>",
"colorSpace": "<string>",
"meme": {
"sourceTemplateId": "<string>",
"sourceUrl": "<string>",
"captionBoxCount": 1,
"templatePageUrl": "<string>",
"captionZones": [
{
"key": "<string>",
"label": "<string>",
"x": 0.5,
"y": 0.5,
"width": 0,
"height": 0,
"style": {
"fontFamily": "<string>",
"fontSize": 259,
"fill": "<string>",
"stroke": "<string>",
"strokeWidth": 10,
"align": "left",
"bold": true,
"uppercase": true,
"verticalAlign": "top",
"italic": true,
"shadow": true,
"opacity": 0.5
},
"rotation": 0
}
],
"layout": {
"source": "imgflip_official",
"sourcePageUrl": "<string>",
"capturedAt": "<string>",
"canvasWidth": 4096.5,
"canvasHeight": 4096.5,
"imageBounds": {
"x": 0.5,
"y": 0.5,
"width": 0,
"height": 0
},
"sourceApiUrl": "<string>",
"generatorScriptUrl": "<string>",
"modelId": "<string>",
"generationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"aspectRatio": "<string>"
},
"storagePath": "<string>",
"thumbnailPath": "<string>",
"aiTitle": "<string>",
"aiDescription": "<string>",
"aiAltText": "<string>",
"aiTags": [
"<string>"
],
"contentHash": "<string>",
"processingStatus": "pending",
"processingError": "<string>",
"isDeleted": true,
"deletedAt": "<string>",
"hardDeletedAt": "<string>",
"sharedWithOrg": true,
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"folderName": "<string>",
"displayName": "<string>",
"aspectRatio": "<string>",
"isProcessing": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"thumbnailUrl": "<string>",
"fileUrl": "<string>",
"previewUrlsExpireAt": "<string>"
}
],
"total": 123,
"nextCursor": "<string>",
"prevCursor": "<string>"
}{
"issues": [
{
"_tag": "Pointer",
"path": [
"<string>"
],
"message": "<string>"
}
],
"message": "<string>",
"_tag": "HttpApiDecodeError"
}{
"message": "<string>",
"_tag": "Unauthorized"
}{
"message": "<string>",
"_tag": "PaymentRequired"
}{
"message": "<string>",
"_tag": "Forbidden"
}{
"message": "<string>",
"_tag": "NotFound"
}{
"message": "<string>",
"_tag": "Conflict",
"code": "<string>",
"currentRevision": 123
}{
"message": "<string>",
"code": "<string>",
"_tag": "UnprocessableEntity"
}{
"message": "<string>",
"_tag": "TooManyRequests",
"code": "<string>",
"retryAfterSeconds": 123
}{
"message": "<string>",
"_tag": "InternalError"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Team (workspace) id (UUID). Discover ids via the list teams endpoint or the agent context.
Query Parameters
Opaque pagination cursor from the previous page response (nextCursor/prevCursor); omit to start at the first page.
Page size as a positive integer string; defaults to 25, capped at 100.
"25"
"100"
Field to sort by; each endpoint accepts its own allowlist and defaults to createdAt.
"createdAt"
Sort direction: asc or desc; defaults to desc.
asc, desc Restrict results to one media type (e.g. image or video).
image, video, audio, gif, document Restrict results to one AI-assigned asset category.
user_upload, render, template, green_screen_template, sound_effect, music, brand_asset, ai_image, ai_video, other Restrict results to one folder by uuid, or the literal "root" for assets outside any folder.
^(root|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"root"
Set to "chat_uploads" to list ONLY the per-team chat-uploads folder; absent excludes it (the default Media Library view).
chat_uploads