---
title: "Register a media asset"
method: POST
path: "/v1/assets"
tags: ["Models"]
---

# Register a media asset

`POST /v1/assets`

## Request

- Base URL: `https://api.sandbase.ai`
- URL: `https://api.sandbase.ai/v1/assets`
- Auth: HTTP bearer

## Request body

- CreateAssetRequest
  - `url` string, required: Source URL forwarded to the asset provider. SandBase requires a non-empty string; the provider must be able to fetch it.
  - `asset_type` 'Image' | 'Video' | 'Audio', required
  - `name` string

## Response `200`

Asset registered

- CreateAssetResponse
  - `id` string, required
  - `asset_url` string, required: Persistent asset:// reference used in generation requests.
  - `asset_type` 'Image' | 'Video' | 'Audio', required
  - `name` string
  - `created_at` string, date-time, required

## Other responses

- `400`: Invalid JSON, missing URL, or unsupported asset type
- `401`: Missing or invalid API key
- `402`: API key spending limit exceeded
- `403`: API key scope does not authorize this endpoint
- `500`: Asset provider credentials are unavailable or the asset record could not be saved
- `502`: Upstream asset registration failed

---

[API](https://skmtc.dev/sandbase/apis/sandbase-api.md) · [All operations](https://skmtc.dev/sandbase/apis/sandbase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sandbase/apis/sandbase-api/revisions/d40df2467ba2?raw)
