diegosouzapw/OmniRoute · error · Error
Sentinel /prepare failed (HTTP ${prepResp.status})
Error message
Sentinel /prepare failed (HTTP ${prepResp.status}) What it means
Error "Sentinel /prepare failed (HTTP ${prepResp.status})" thrown in diegosouzapw/OmniRoute.
Source
Thrown at open-sse/executors/chatgpt-web.ts:459
Authorization: `Bearer ${accessToken}`,
Cookie: buildSessionCookieHeader(cookie),
Priority: "u=1, i",
};
if (accountId) headers["chatgpt-account-id"] = accountId;
// Stage 1: POST /chat-requirements/prepare → { prepare_token, ... }
const prepResp = await tlsFetchChatGpt(SENTINEL_PREPARE_URL, {
method: "POST",
headers,
body: JSON.stringify({ p: prekey }),
timeoutMs: 30_000,
signal,
});
if (prepResp.status === 401 || prepResp.status === 403) {
throw new SentinelBlockedError(`Sentinel /prepare blocked (HTTP ${prepResp.status})`);
}
if (prepResp.status >= 400) {
throw new Error(`Sentinel /prepare failed (HTTP ${prepResp.status})`);
}
let prepData: ChatRequirements = {};
try {
prepData = JSON.parse(prepResp.text || "{}") as ChatRequirements;
} catch {
console.warn("[chatgpt-web] chat requirements prep JSON parse failed");
/* keep empty */
}
// Stage 2: POST /chat-requirements with the prepare_token in the body. This
// is the call that actually returns the chat-requirements-token used on the
// conversation request.
if (!prepData.prepare_token) {
return prepData; // pass through whatever we got — caller handles missing fields
}
const crBody: Record<string, unknown> = { p: prekey, prepare_token: prepData.prepare_token };
const crResp = await tlsFetchChatGpt(SENTINEL_CR_URL, {
method: "POST",View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at open-sse/executors/chatgpt-web.ts:459 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/9c41ed10a16482dd.
Report an issue: GitHub.