Search workspace files

October 12, 2026

Table of contents

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

Find files in the Muse workspace of an account by part of their name, by extension, or both, in a folder and its subfolders. Results come in pages: read on with offset while hasMore is true.

Files and assets are two views of the same workspace. Assets are the images, videos and audio files, each with an assetId for jobs and chats. /files covers the whole workspace, including the code, documents and data the agent writes. A media file listed here also carries its assetId.

Paths always start with workspace/, for example workspace/your_files/report.pdf.

https://api.useapi.net/v1/muse/files/search?email=email&path=path&name=name&extensions=extensions&limit=limit&offset=offset

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.
  • path is optional, the folder to search in, including its subfolders.
    Default: workspace.
  • name is optional, a part of the file name, for example report.
  • extensions is optional, a comma-separated list of file extensions, for example pdf,csv.
  • limit is optional, the most files per page.
    Range: 1 to 200. Default: 50.
  • offset is optional, how many matches to skip, for the next page.
    Default: 0.

Send at least one of name and extensions.

Responses
  • 200 OK

    {
      "email": "[email protected]",
      "path": "workspace",
      "entries": [
        {
          "name": "sunkissed-lyrics.txt",
          "path": "workspace/your_files/sunkissed-lyrics.txt",
          "type": "file",
          "bytes": 769,
          "modified": "2026-10-05T05:02:00.385Z",
          "assetId": null
        }
      ],
      "total": 1,
      "hasMore": false
    }
    
  • 400 Bad Request — neither name nor extensions was sent, or a parameter is invalid.

    {
      "error": "Pass name and/or extensions (e.g. extensions=pdf,csv)",
      "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": "Muse could not do it right now (…), please retry",
      "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
  path: string                 // the folder searched
  entries: {
    name: string
    path: string                 // workspace/…
    type: 'file' | 'directory'
    bytes: number | null
    modified: string | null      // ISO 8601
    assetId?: string | null      // files only: the asset id of an image, video or audio file, else null
  }[]
  total: number | null         // all matches
  hasMore: boolean             // more matches after this page: pass offset
  error?: string               // errors only
  code?: number                // errors only
}
Examples
  • curl -H "Authorization: Bearer …" \
         "https://api.useapi.net/v1/muse/files/search?email=example%40gmail.com&extensions=pdf,csv&limit=20"
    
  • const token = "API token";
    const params = new URLSearchParams({ email: "[email protected]", name: "lyrics" });
    const response = await fetch(`https://api.useapi.net/v1/muse/files/search?${params}`, {
      method: "GET",
      headers: {
        "Authorization": `Bearer ${token}`,
      }
    });
    console.log("response", response.status, await response.json());
    
  • import requests
    token = "API token"
    apiUrl = "https://api.useapi.net/v1/muse/files/search"
    headers = {
        "Authorization" : f"Bearer {token}"
    }
    response = requests.get(apiUrl, headers=headers, params={"email": "[email protected]", "extensions": "pdf,csv", "limit": 20})
    print(response, response.json())
    
Try It