import { OctosparkClient } from '@octospark/sdk'
const client = new OctosparkClient({
token: process.env.OCTOSPARK_TOKEN
})
const response = await client.assets.importAsset({
teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
body: {},
})import os
from octospark_sdk import OctosparkClient
client = OctosparkClient(token=os.environ["OCTOSPARK_TOKEN"])
response = client.assets.import_asset(
teamId=os.environ.get("OCTOSPARK_TEAM_ID", "teamId"),
body={}
)octospark assets import-asset \
--request '{"path":{"teamId":"teamId"},"body":{}}'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/import", base_url.trim_end_matches('/'), team_id);
let token = env::var("OCTOSPARK_TOKEN").expect("OCTOSPARK_TOKEN");
let mut request = client.post(url).bearer_auth(token);
request = request.json(&serde_json::json!({}));
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/import';
final uri = Uri.parse(url);
final headers = {
'Authorization': 'Bearer $token',
'Content-Type': 'application/json',
};
final response = await http.post(
uri,
headers: headers,
body: jsonEncode({}),
);
print(response.body);
}curl --request POST \
--url https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sourceUrl' => 'https://example.com/media/launch-teaser.png',
'contentBase64' => 'iVBORw0KGgoAAAANSUhEUg...',
'fileName' => 'launch-teaser.png',
'mimeType' => 'image/png',
'folderId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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-staging.octospark.ai/v1/teams/{teamId}/assets/import"
payload := strings.NewReader("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}'import Foundation
let parameters = [
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
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/import");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
val request = Request.Builder()
.url("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"asset": {
"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>"
},
"deduplicated": true
}{
"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"
}Import asset
Import an asset in a single call, either from a remote sourceUrl (fetched server-side) or from inline contentBase64 (max 10MB decoded). Returns the created asset; thumbnailing and enrichment run asynchronously. For large or local files, use the presigned requestUpload/confirmUpload flow instead so the bytes go directly to storage.
import { OctosparkClient } from '@octospark/sdk'
const client = new OctosparkClient({
token: process.env.OCTOSPARK_TOKEN
})
const response = await client.assets.importAsset({
teamId: process.env.OCTOSPARK_TEAM_ID ?? "teamId",
body: {},
})import os
from octospark_sdk import OctosparkClient
client = OctosparkClient(token=os.environ["OCTOSPARK_TOKEN"])
response = client.assets.import_asset(
teamId=os.environ.get("OCTOSPARK_TEAM_ID", "teamId"),
body={}
)octospark assets import-asset \
--request '{"path":{"teamId":"teamId"},"body":{}}'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/import", base_url.trim_end_matches('/'), team_id);
let token = env::var("OCTOSPARK_TOKEN").expect("OCTOSPARK_TOKEN");
let mut request = client.post(url).bearer_auth(token);
request = request.json(&serde_json::json!({}));
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/import';
final uri = Uri.parse(url);
final headers = {
'Authorization': 'Bearer $token',
'Content-Type': 'application/json',
};
final response = await http.post(
uri,
headers: headers,
body: jsonEncode({}),
);
print(response.body);
}curl --request POST \
--url https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sourceUrl' => 'https://example.com/media/launch-teaser.png',
'contentBase64' => 'iVBORw0KGgoAAAANSUhEUg...',
'fileName' => 'launch-teaser.png',
'mimeType' => 'image/png',
'folderId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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-staging.octospark.ai/v1/teams/{teamId}/assets/import"
payload := strings.NewReader("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}'import Foundation
let parameters = [
"sourceUrl": "https://example.com/media/launch-teaser.png",
"contentBase64": "iVBORw0KGgoAAAANSUhEUg...",
"fileName": "launch-teaser.png",
"mimeType": "image/png",
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
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/import");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}");
CURLcode ret = curl_easy_perform(hnd);val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"sourceUrl\": \"https://example.com/media/launch-teaser.png\",\n \"contentBase64\": \"iVBORw0KGgoAAAANSUhEUg...\",\n \"fileName\": \"launch-teaser.png\",\n \"mimeType\": \"image/png\",\n \"folderId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
val request = Request.Builder()
.url("https://api-staging.octospark.ai/v1/teams/{teamId}/assets/import")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"asset": {
"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>"
},
"deduplicated": true
}{
"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.
Body
Public http(s) URL the server fetches the file from (SSRF-guarded, max 200 MB); mutually exclusive with contentBase64.
1"https://example.com/media/launch-teaser.png"
Base64-encoded file content for small payloads, max 10 MB decoded; mutually exclusive with sourceUrl, and requires fileName and mimeType.
1"iVBORw0KGgoAAAANSUhEUg..."
Filename to store the asset under, including extension; required with contentBase64, otherwise derived from sourceUrl.
1"launch-teaser.png"
MIME type of the imported content; required with contentBase64, otherwise inferred from the fetch response.
1"image/png"
Folder to place the newly imported asset in; must exist and belong to the team. Omit to land the asset at the team 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}$