jackwener/OpenCLI · error · AuthRequiredError

TikTok Studio item_list requires login: ${statusMsg || statu

Error message

TikTok Studio item_list requires login: ${statusMsg || statusCode}

What it means

assertApiSuccess inspects TikTok's status_code/status_msg. When status_code is non-zero and the status message matches the auth-failure pattern (auth, login, permission, unauthorized, forbidden), the library raises AuthRequiredError for www.tiktok.com instead of a generic failure, telling you the session is not authenticated for TikTok Studio.

Source

Thrown at clis/tiktok/creator-videos.js:120

}

function looksAuthFailure(message) {
    return /\b(auth|login|log in|permission|unauthori[sz]ed|forbidden)\b/i.test(message);
}

function unwrapPayload(data) {
    if (!data || typeof data !== 'object') {
        throw new CommandExecutionError('TikTok Studio item_list returned an empty response');
    }
    return data.data && typeof data.data === 'object' ? data.data : data;
}

function assertApiSuccess(data) {
    const statusCode = data.status_code ?? data.statusCode;
    const statusMsg = String(data.status_msg ?? data.statusMsg ?? '').trim();
    if (statusCode !== undefined && Number(statusCode) !== 0) {
        if (looksAuthFailure(statusMsg)) {
            throw new AuthRequiredError('www.tiktok.com', `TikTok Studio item_list requires login: ${statusMsg || statusCode}`);
        }
        throw new CommandExecutionError(`TikTok Studio item_list failed: ${statusMsg || statusCode}`);
    }
    if (statusMsg && !/^(success|ok)$/i.test(statusMsg)) {
        if (looksAuthFailure(statusMsg)) {
            throw new AuthRequiredError('www.tiktok.com', `TikTok Studio item_list requires login: ${statusMsg}`);
        }
        throw new CommandExecutionError(`TikTok Studio item_list failed: ${statusMsg}`);
    }
}

function normalizeNumber(value) {
    const n = Number(value);
    return Number.isFinite(n) ? n : 0;
}

function formatDate(value) {
    const seconds = Number(value);

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Run the TikTok login flow for this CLI (e.g. `opencli tiktok login`) and retry.
  2. Refresh or re-import cookies for www.tiktok.com.
  3. Confirm the logged-in account actually owns the creator studio being queried.
  4. If the message is spurious (not really an auth issue), inspect status_msg/statusCode from the raw response to confirm.

Example fix

// before
opencli tiktok creator-videos --user-name someuser
// after (re-authenticate first)
opencli tiktok login
opencli tiktok creator-videos --user-name someuser
Defensive patterns

Strategy: try-catch

Try / catch

import { AuthRequiredError } from './errors.js';
try {
  const videos = await listCreatorVideos(opts);
} catch (e) {
  if (e instanceof AuthRequiredError || String(e.message).includes('requires login')) {
    await tiktokLogin('www.tiktok.com');
    return listCreatorVideos(opts);
  }
  throw e;
}

Prevention

When it happens

Trigger: item_list responds with statusCode != 0 and a status_msg like 'user not login', 'please log in', or 'permission denied' — e.g. expired/missing cookies when calling fetchCreatorVideosPage.

Common situations: Session cookies expired or were cleared; running headless without completing TikTok login; TikTok invalidating the session after a password change or suspicious-activity logout; using a different account than the studio owner.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/be04c39bd6851549. Report an issue: GitHub.