Retrieve an account

September 29, 2026

Table of contents

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

Get one connected account with a live read from Google: whether the session is still signed in, the account’s current plan, and its usage in the 5-hour and weekly windows.

Google does not count generations. Each Studio action has an estimated cost as a percentage of the 5-hour window (estimatedCostPercent), and Google refuses a new job once its estimate is more than the remainingPercent of a window. Compare the two before you start a large job such as an Audio Overview or a slide deck. See How much one account can generate for the Free, Pro and Ultra estimates.

A signed-out session found here is handled like on any other request. The API re-checks it once, and if it is still signed out the account is paused and you receive an email with the re-add link.

The response can be up to 60 seconds old.

https://api.useapi.net/v1/gemini-notebook/accounts/email

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

    {
      "email": "[email protected]",
      "tier": "pro",
      "googleTier": "TIER_PRO",
      "googleTierCode": 2,
      "maxJobs": 3,
      "added": "2026-09-27T22:48:12.588Z",
      "cookies": [
        "SID",
        "HSID",
        "SSID",
        "APISID",
        "SAPISID",
        "LSID",
        "OSID",
        "__Secure-OSID"
      ],
      "cookiesExpireAt": "2027-11-01T22:48:08.442Z",
      "addedVia": "setup-browser",
      "limits": {
        "notebooks": 500,
        "sourcesPerNotebook": 300
      },
      "health": "OK",
      "session": "signed-in",
      "outputLanguage": null,
      "quota": {
        "windows": [
          {
            "window": "5h",
            "resetsAt": "2026-09-28T04:25:40.000Z",
            "usedPercent": 63.11,
            "remainingPercent": 36.89
          },
          {
            "window": "weekly",
            "resetsAt": "2026-10-04T23:25:40.000Z",
            "usedPercent": 3.01,
            "remainingPercent": 96.99
          }
        ],
        "blocked": [
          "cinematic"
        ],
        "actions": [
          {
            "action": "audio",
            "allowed": true,
            "costTier": 3,
            "estimatedCostPercent": 11.03
          },
          {
            "action": "video",
            "allowed": true,
            "costTier": 3,
            "estimatedCostPercent": 10.92
          },
          {
            "action": "cinematic",
            "allowed": false,
            "costTier": 4,
            "estimatedCostPercent": 77.02
          },
          {
            "action": "video_short",
            "allowed": true,
            "costTier": 3,
            "estimatedCostPercent": 8.73
          },
          {
            "action": "infographic",
            "allowed": true,
            "costTier": 2,
            "estimatedCostPercent": 2.68
          },
          {
            "action": "slides",
            "allowed": true,
            "costTier": 3,
            "estimatedCostPercent": 13.63
          },
          {
            "action": "report",
            "allowed": true,
            "costTier": 2,
            "estimatedCostPercent": 1.08
          },
          {
            "action": "quiz",
            "allowed": true,
            "costTier": 1,
            "estimatedCostPercent": 0.57
          },
          ...
        ]
      }
    }
    
    • Here the 5-hour window has 36.89% left, so an Audio Overview (11.03%) can start, while a cinematic video (77.02%) is refused until the window resets at resetsAt.
    • session tells what the live read found:
      • signed-in — the account works. tier, googleTier, googleTierCode and quota are fresh from Google.
      • signed-out — Google signed the account out. It is paused, health holds the re-add message and you receive an email with the re-add link.
      • verifying — another request is re-checking the session right now. Retry in about a minute.
      • signed-in (re-checked) — Google briefly reported the account as signed out, and the re-check found it signed in.
      • unknown (could not reach Google to re-check), unavailable (bot-check), unavailable (shell-error) — Google could not be reached. The account is not paused. Retry later.
      • unknown — the session works but the usage read failed. quotaError holds the reason.
    • outputLanguage is Google’s account-wide language for Studio artifacts, as a language code such as es, or null when it was never set. Change it with POST /accounts. It is returned only with session: signed-in.
    • quota is returned only with session: signed-in.
    • An account that is already paused (its health is the re-add message) is returned as stored, without session or quota. Re-add it with POST /accounts.
  • 400 Bad Request — the email in the path is not a valid email, or no account is connected yet.

    {
      "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 connected for this email.

    {
      "error": "Account [email protected] not found",
      "code": 404
    }
    
Model
{ // TypeScript, all fields are optional
  email: string
  tier: string                    // Google's plan, short form: 'free' | 'pro' | 'ultra' | 'plus' | … | 'unknown'
  googleTier?: string | null      // Google's own plan name: 'TIER_FREE' | 'TIER_PRO' | 'TIER_ULTRA' | 'TIER_PLUS' | …
  googleTierCode?: number | null  // Google's plan code: 1 = Free, 2 = Pro, 3 = Ultra, 4 = Plus, …
  maxJobs: number
  added: string                   // ISO 8601, when the account was first connected
  updated?: string                // ISO 8601, the last re-add or maxJobs change
  cookies: string[]               // names of the stored cookies, never their values
  cookiesExpireAt: string | null  // ISO 8601, the earliest expiry Google stated for the stored cookies
  addedVia?: 'setup-browser'      // present when the account was added by the automated setup
  limits?: {
    notebooks: number | null            // notebooks allowed on the plan
    sourcesPerNotebook: number | null   // sources allowed per notebook
  }
  health: string                  // 'OK', 'verifying', or the reason the account must be re-added
  session?: string                // what the live read found, see Responses
  outputLanguage?: string | null  // Google's account-wide Studio output language, null when unset
  quota?: {
    windows: {
      window: '5h' | 'weekly'
      resetsAt: string | null     // ISO 8601
      usedPercent: number
      remainingPercent: number
    }[]
    blocked: string[]             // actions Google refuses right now
    actions: {
      action: string              // 'audio' | 'video' | 'cinematic' | 'video_short' | 'infographic' | 'slides' | 'report' | 'table' | 'flashcards' | 'quiz' | 'mindmap' | 'qna' | …
      allowed: boolean
      costTier: number | null
      estimatedCostPercent: number | null   // Google's estimate, as % of the 5h window
    }[]
  }
  quotaError?: string             // present with session 'unknown'
}

With session: signed-in, tier, googleTier and googleTierCode come from the live read, and googleTier / googleTierCode are null when Google’s answer carries no plan code. POST /accounts and GET /accounts return the stored record, which omits both fields instead of returning null.

Examples
  • curl "https://api.useapi.net/v1/gemini-notebook/accounts/user%40example.com" \
       -H "Authorization: Bearer …"
    
  • const token = "API token";
    const email = "Previously configured account email";
    const apiUrl = `https://api.useapi.net/v1/gemini-notebook/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 configured account email"
    apiUrl = f"https://api.useapi.net/v1/gemini-notebook/accounts/{quote(email, safe='')}"
    headers = {
        "Authorization" : f"Bearer {token}"
    }
    response = requests.get(apiUrl, headers=headers)
    print(response, response.json())
    
Try It