---
title: "Create assets"
method: POST
path: "/api/spaces/{accountId}/{spaceId}/assets"
tags: ["Asset"]
---

# Create assets

`POST /api/spaces/{accountId}/{spaceId}/assets`

## Request

- Base URL: `https://makefx.app`
- URL: `https://makefx.app/api/spaces/{accountId}/{spaceId}/assets`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://makefx.app/api/oauth/authorize`, token URL `https://makefx.app/api/oauth/token`, scopes: `write`)
  - API key in cookie `auth_token`

Creates one to eight generations whose per-Asset holds are admitted together, optionally using an existing Asset Recipe with its current or recorded provider model.

## Path parameters

- `accountId` string, required: accountId path parameter
- `spaceId` string, required: spaceId path parameter

## Headers

- `API-Version` '2026-09-10'

## Request body

- object
  - `kind` 'image' | 'video' | 'audio', required
  - `model` string, required
  - `prompt` string
  - `references` object[]
    - `asset_id` string, required
    - `slot` string, required
    - `order` integer
  - `params` object
  - `count` integer
  - `from_asset_id` string
  - `recipe_mode` 'current' | 'exact'
  - `name` string
  - `seed` integer
  - `position` object: Passing one pins the cards; omitting lets the canvas lay them out.
    - `x` number, required
    - `y` number, required
  - `tags` string[]
  - `note` string
  - `request_id` string

## Response `200`

Success

- object
  - `assets` object[], required
    - `asset_id` string, required
    - `status` 'queued' | 'generating' | 'ready', required
    - `estimated_credits` integer, required
    - `terms` string, required
    - `next_poll_seconds` integer, nullable
    - `renders_in` 'browser'
    - `task_id` string
    - `web_url` string, uri, required
  - `estimated_credits` integer, required
  - `balance_after_credits` integer, required
  - `space_web_url` string, uri, required
  - `idempotent_replay` boolean

## Other responses

- `400`: The request did not match the schema
- `401`: No valid credentials. WWW-Authenticate names the protected resource metadata to start from
- `402`: The balance cannot cover the guarded holds
- `403`: The credentials are valid but not enough: the token lacks the scope, or the action needs a browser session rather than an app token
- `404`: Not found
- `429`: Rate limited. RateLimit names the policy; Retry-After says when to try again
- `500`: Internal server error
- `503`: The generation worker could not accept the workflow

---

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