Retrieve a Muse account

October 12, 2026

Table of contents

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

Get one added account with a live read from Muse: its plan and how much of the weekly allowance it has used. The read uses the stored session, as a job does, and every call goes to Muse. The result is also saved, so GET /accounts and the choice of account for new jobs use it.

Muse meters each account weekly. GET /accounts/email returns the plan and usage in quota: tier, percentUsed, resetsAt and quotaStatus.

Plan Price Weekly allowance
Free $0 not published
Power $20/month 500 million Muse tokens
Maximum $100/month 3 billion Muse tokens

Source: Meta, About Muse subscriptions, October 2026. Availability can differ by region.

  • On the free plan, a video used 2 to 3 percent of the weekly allowance in our tests and an image 0 to 1 percent. Meta does not publish per-job token costs.
  • The allowance resets at resetsAt. Once it is used up, new jobs go to your other accounts, and a job pinned to the account answers 412.

If Muse no longer accepts the session, the API signs the account in again once, the same as on any other request, and then reads it. A paused account (one whose health is not OK) is returned as stored, without a call to Muse.

https://api.useapi.net/v1/muse/accounts/email

  • email is the email of an added account, URL-encoded in the path.
Request Headers
Authorization: Bearer {API token}
Responses
  • 200 OK

    {
      "email": "[email protected]",
      "maxJobs": 3,
      "added": "2026-10-12T00:34:19.139Z",
      "updated": "2026-10-12T01:29:14.234Z",
      "sessionExpiresAt": "2026-11-11T00:34:18.820Z",
      "quota": {
        "tier": "HATCH_FREE",
        "percentUsed": 3,
        "resetsAt": "2026-10-19T01:13:18.000Z",
        "quotaStatus": "SUFFICIENT",
        "topupBalance": 0,
        "readAt": "2026-10-12T01:29:14.794Z"
      },
      "health": "OK",
      "session": "signed-in"
    }
    
    • session is signed-in after a live read. It is checkpoint when Meta asks for a security check on the account (the account is paused from then on and health says what to do), and unknown when Muse did not answer the read: quotaError then says why and quota is the last saved one.
    • A paused account is returned as stored, without session.
  • 400 Bad Request — the email in the path is not a valid email.

    {
      "error": "Path parameter email (not-an-email) not a valid email",
      "code": 400
    }
    
  • 401 Unauthorized

    Invalid API token.

    {
      "error": "useapi.net ⁝ Unauthorized",
      "code": 401
    }
    
  • 404 Not Found — no account is added for this email.

    {
      "error": "Account [email protected] not found",
      "code": 404
    }
    
  • 503 Service Unavailable — Muse did not accept the session and signing in again could not finish right now. Retry in a few minutes.

    {
      "error": "Muse refused account [email protected]'s new session, please retry in a few minutes",
      "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
  maxJobs: number                 // jobs this account may run at the same time
  added: string                   // ISO 8601, when the account was first added
  updated?: string                // ISO 8601, the last re-add or maxJobs change
  sessionExpiresAt: string        // ISO 8601, when the Muse session expires (30 days, renewed by the API)
  quota?: {                       // the account's Muse plan and weekly usage, as last read
    tier: string | null           // Muse plan, e.g. HATCH_FREE
    percentUsed: number | null    // share of the weekly allowance used, in whole percent
    resetsAt: string | null       // ISO 8601, when the weekly allowance resets
    quotaStatus: string | null    // SUFFICIENT while jobs may run
    topupBalance: number | null
    readAt: string                // ISO 8601, when this was read from Muse
  }
  health: string                  // 'OK', or why the account needs attention (596)

  session?: 'signed-in' | 'checkpoint' | 'unknown'
  quotaError?: string             // session 'unknown': why Muse did not answer the read
  error?: string                  // errors only
  code?: number                   // errors only
}
Examples
  • curl "https://api.useapi.net/v1/muse/accounts/example%40gmail.com" \
       -H "Authorization: Bearer …"
    
  • const token = "API token";
    const email = "Previously added account email";
    const apiUrl = `https://api.useapi.net/v1/muse/accounts/${encodeURIComponent(email)}`;
    const response = await fetch(apiUrl, {
      headers: {
        "Authorization": `Bearer ${token}`,
      },
    });
    const result = await response.json();
    console.log("response", {response, result});
    
  • import requests
    from urllib.parse import quote
    token = "API token"
    email = "Previously added account email"
    apiUrl = f"https://api.useapi.net/v1/muse/accounts/{quote(email, safe='')}"
    headers = {
        "Authorization" : f"Bearer {token}"
    }
    response = requests.get(apiUrl, headers=headers)
    print(response, response.json())
    
Try It