List assets

October 12, 2026 (October 14, 2026)

Table of contents

  1. Request Headers
  2. Query Parameters
  3. Responses
  4. Model
  5. Examples
  6. Try It

List a Muse account’s whole Library as asset ids, newest first, as the Library in the muse.ai app shows it. Each item has a type:

  • image, video, audio: media files, uploaded, generated by Muse or made by the agent. They work as inputs of a job or a chat.
  • document: a document the agent wrote or you added, such as Markdown, CSV, PDF or a presentation. It works in a chat’s files, and an md, txt or html document also downloads as PDF.
  • web: a web app the agent built. It downloads as one HTML file, and can be published on a public link with POST /assets/assetId/share. shareUrl is its public link while it is shared.
  • podcast: a podcast episode the agent made. It downloads as MP3, and its cover with part=cover.

Each item downloads with GET /assets/assetId and can be removed with DELETE /assets/assetId. Muse may add other kinds to the Library later. They are listed with their own type, and with assetId null when the API cannot download them yet.

Every item also carries Muse’s own names for it, useful to match it to a workspace file or a reference in a chat, and to recognise a kind the API does not map yet:

  • museRef is Muse’s own reference: file:<workspace path> for a media file or a document (the same path GET /files shows), space:<slug> for a web app, podcast:<slug> for a podcast.
  • museType is Muse’s own type name: image, video or audio for media, and for example document, web or podcast for the other kinds.

origin tells where a media file came from:

  • uploaded: files you sent with POST /assets.
  • generated: images and videos Muse generated, in a job, a chat or the muse.ai app.
  • made: files the agent made with its own tools, for example an edited video or a song.

Read the next page with the cursor of the response, until cursor is null. New items go to the top of the list, so an item can show up again on the next page when items were added in between. partial: true means the list is not complete: a part of the Library could not be read right now, or the account has more than 500 media files and only the newest 500 are listed.

https://api.useapi.net/v1/muse/assets?email=email&type=type&origin=origin&limit=limit&cursor=cursor

Request Headers
Authorization: Bearer {API token}
Query Parameters
  • email is optional when the API token has one Muse account, and required when it has more. URL-encode it.
  • type is optional, only items of this type.
    Supported values: image, video, audio, document, web, podcast, or any other type the list shows.
  • origin is optional, only media files of this origin.
    Supported values: uploaded, generated, made.
  • limit is optional, the most items per page.
    Range: 1 to 100. Default: 50.
  • cursor is optional, the cursor from the previous page, to read the next one.
Responses
  • 200 OK

    {
      "email": "[email protected]",
      "assets": [
        {
          "assetId": "user:12345-email:6578616d706c6540676d61696c2e636f6d-image:media-generation-create-one-small-image-of-a-re-0-1b5617eb-685d-445f-a289-fdc9a792f696.webp",
          "type": "image",
          "origin": "generated",
          "mime": "image/webp",
          "bytes": 186402,
          "created": "2026-10-14T23:19:48.892Z",
          "name": "media-generation-create-one-small-image-of-a-re-0-1b5617eb-685d-445f-a289-fdc9a792f696.webp",
          "updated": "2026-10-14T23:19:48.892Z",
          "museType": "image",
          "museRef": "file:workspace/imagine_media/media-generation-create-one-small-image-of-a-re-0-1b5617eb-685d-445f-a289-fdc9a792f696.webp"
        },
        {
          "assetId": "user:12345-email:6578616d706c6540676d61696c2e636f6d-podcast:podcast~why-dogs-wag-their-tails-2026-10-14",
          "type": "podcast",
          "format": "mp3",
          "name": "Why Dogs Wag Their Tails",
          "duration": 22,
          "created": "2026-10-14T21:58:35.735354+00:00",
          "updated": "2026-10-14T21:58:35.735354+00:00",
          "museType": "podcast",
          "museRef": "podcast:why-dogs-wag-their-tails-2026-10-14"
        },
        {
          "assetId": "user:12345-email:6578616d706c6540676d61696c2e636f6d-web:space~hello-demo",
          "type": "web",
          "format": "html",
          "name": "Hello Demo",
          "created": "2026-10-14T21:55:06.000Z",
          "updated": "2026-10-14T21:56:07.000Z",
          "lastOpened": "2026-10-15T00:14:03.238Z",
          "museType": "web",
          "museRef": "space:hello-demo",
          "shareUrl": "https://muse.ai/s/hello-demo-k3v9q2m7xw4pzrt"
        },
        {
          "assetId": "user:12345-email:6578616d706c6540676d61696c2e636f6d-document:ws~your_files~cat-facts.md",
          "type": "document",
          "format": "md",
          "name": "cat-facts.md",
          "created": null,
          "updated": "2026-10-14T21:54:45.663Z",
          "lastOpened": "2026-10-15T00:14:04.306Z",
          "museType": "document",
          "museRef": "file:workspace/your_files/cat-facts.md"
        }
      ],
      "cursor": "4"
    }
    
  • 400 Bad Request — a parameter is invalid, or the token has more than one Muse account and email is missing.

    {
      "error": "Parameter origin (other) valid values: uploaded,generated,made",
      "code": 400
    }
    
    {
      "error": "Pass email: this token has 3 Muse accounts",
      "code": 400
    }
    
  • 401 Unauthorized

    Invalid API token.

    {
      "error": "useapi.net ⁝ Unauthorized",
      "code": 401
    }
    
  • 404 Not Found — the account named by email is not added.

    {
      "error": "Account [email protected] is not configured",
      "code": 404
    }
    
  • 503 Service Unavailable — Muse could not be reached. Retry shortly.

    {
      "error": "Could not connect to the Muse workspace of account [email protected] (…), please retry shortly",
      "code": 503
    }
    
  • 596 Account Error

    The account needs your attention, and it is paused until you add it again. You receive an email when this happens. There are two causes.

    Meta asks for a security check on the account. Sign in once at muse.ai in a browser, complete the check, then add the account again with POST /accounts using the same email and password. The API keeps using its session, so no new sign-in is needed.

    {
      "error": "Account [email protected]: Meta asks for a security check on account [email protected] (\"This account must complete a security checkpoint on the web\"). Sign in once at https://muse.ai in a browser, complete the check, then add the account again with POST /accounts",
      "code": 596
    }
    

    Or Muse refused to sign the account in again when its session needed renewing, most often because the password was changed. Add the account again with the current password.

    {
      "error": "Account [email protected]: Muse refused to sign in account [email protected] (…). Update its password with POST /accounts, or sign in at https://muse.ai to clear the block, then re-add it",
      "code": 596
    }
    
Model
{ // TypeScript, all fields are optional
  email: string
  assets: {
    assetId: string | null    // download with GET /assets/{assetId}; null for a kind the API cannot download yet
    type: string              // image, video, audio, document, web, podcast, or another kind Muse lists
    name: string | null       // the file name, or the title of a web app or podcast
    created: string | null    // ISO 8601
    updated: string | null    // ISO 8601, the list is sorted by it, newest first
    museType: string | null  // Muse's own type name, e.g. image, video, audio, document, web, podcast
    museRef: string | null   // Muse's own reference: file:<workspace path> (media, documents), space:<slug> or podcast:<slug>
    // media (image, video, audio)
    origin?: 'uploaded' | 'generated' | 'made'
    mime?: string | null      // e.g. image/webp, video/mp4, audio/mpeg
    bytes?: number | null
    // document, web, podcast
    format?: string | null    // e.g. md, csv, pdf, pptx for documents, html for web apps, mp3 for podcasts
    lastOpened?: string | null      // ISO 8601, documents and web apps
    status?: string | null    // web apps: the build status
    shareUrl?: string | null  // web apps: the public link, null when not shared
    duration?: number | null  // podcasts: seconds
  }[]
  cursor: string | null       // pass it as cursor for the next page, null on the last page
  partial?: true              // a part of the Library could not be read: the list is not complete
  error?: string              // errors only
  code?: number               // errors only
}
Examples
  • curl -H "Authorization: Bearer …" \
         "https://api.useapi.net/v1/muse/assets?email=example%40gmail.com&type=video&limit=10"
    
  • const token = "API token";
    const email = "Previously added account email";
    const all = [];
    let cursor = null;
    do {
      const params = new URLSearchParams({ email, origin: "generated", limit: "100" });
      if (cursor) params.set("cursor", cursor);
      const response = await fetch(`https://api.useapi.net/v1/muse/assets?${params}`, {
        headers: { "Authorization": `Bearer ${token}` },
      });
      const page = await response.json();
      all.push(...page.assets);
      cursor = page.cursor;
    } while (cursor);
    console.log(all.length, "generated files");
    
  • import requests
    token = "API token"
    email = "Previously added account email"
    apiUrl = "https://api.useapi.net/v1/muse/assets"
    headers = {
        "Authorization" : f"Bearer {token}"
    }
    response = requests.get(apiUrl, headers=headers, params={"email": email, "type": "video", "limit": 10})
    print(response, response.json())
    
Try It