OpenBB-finance/OpenBB · error · Error
Failed to get Jupyter URL
Error message
Failed to get Jupyter URL
What it means
Raised at market_snapshots.py:177 when the Intrinio snapshots endpoint responded successfully but contained no usable file URLs: either the 'snapshots' key was absent/empty, or none of the snapshot entries had a 'files' list with a 'url' entry. It means the API call itself succeeded but there is no snapshot data for the requested time. OpenBB treats this as a hard error so callers do not mistake an empty result for an empty market.
Source
Thrown at desktop/src/routes/environments.tsx:1935
// Register for process monitoring
const processId = `jupyter-${envName}`;
await invoke("register_process_monitoring", { processId });
const result = await invoke<JupyterStatus>("start_jupyter_server", {
environment: envName,
directory: installDir,
working: workDir,
});
if (result?.url) {
jupyterUrlRef.current[envName] = result.url;
setJupyterStatus((prev) => ({ ...prev, [envName]: "running" }));
activeServers.current.add(envName);
// Open URL in browser window
openJupyterWindow(`${result.url}?token=launcher`);
} else {
throw new Error("Failed to get Jupyter URL");
}
} catch (err) {
setJupyterStatus((prev) => ({ ...prev, [envName]: "error" }));
jupyterUrlRef.current[envName] = null;
alert(`Failed to start Jupyter: ${err}`);
}
};
// Stop Jupyter server
const stopJupyterServer = async (envName: string) => {
if (jupyterStatus[envName] !== "running") return;
try {
setJupyterStatus((prev) => ({ ...prev, [envName]: "stopping" }));
await invoke("stop_jupyter_server", { environment: envName });
} catch (err) {
try {
const status = await invoke<JupyterStatus>("check_jupyter_server", {View on GitHub (pinned to 3e071fcc2c)
Solutions
- Retry without a date to get the latest available snapshot, or move the date to a trading day within the supported window (mid-June 2022 to present).
- If passing a plain date, pass a full ISO datetime with timezone (e.g. '2024-03-08T15:00:00-0500') instead of '2024-03-08' — date-only inputs are silently coerced to 20:00 ET which may be past the last snapshot.
- Inspect the raw response to confirm data exists for that datetime: curl 'https://api-v2.intrinio.com/securities/snapshots?api_key=KEY&at_datetime=2024-03-08T15:00:00-0500' and check for snapshots[].files[].url.
- If the raw API does return files but the error still fires, the Intrinio response schema changed — check for an updated openbb_intrinio provider package (pip install -U openbb-intrinio).
- Wrap the call and treat this error as 'no data for requested time', falling back to the nearest earlier trading day.
Example fix
# before res = obb.equity.market_snapshots(provider='intrinio', date='2024-03-09') # Saturday -> No snapshots found. # after res = obb.equity.market_snapshots(provider='intrinio', date='2024-03-08T15:00:00-0500') # trading day, explicit time
Defensive patterns
Strategy: validation
Validate before calling
from datetime import datetime, timezone, timedelta
# NY market hours ~ 9:30-16:00 ET on weekdays; snapshots exist only from ~June 2022
HISTORY_START = datetime(2022, 6, 15, tzinfo=timezone.utc)
def snapshot_date_is_plausible(d) -> bool:
if d is None:
return True # latest snapshot
dt = d if isinstance(d, datetime) else datetime.fromisoformat(str(d))
return dt.weekday() < 5 and dt >= HISTORY_START and dt <= datetime.now(timezone.utc) + timedelta(minutes=5) Type guard
def is_no_snapshots_error(exc: Exception) -> bool:
"""True when the requested datetime has no snapshot files."""
return isinstance(exc, OpenBBError) and 'No snapshots found' in str(exc) Try / catch
from openbb_core.app.model.abstract.error import OpenBBError
try:
res = obb.equity.market_snapshots(provider='intrinio', date=d)
except OpenBBError as e:
if 'No snapshots found' in str(e):
# no data for this datetime - treat as empty result or step back a trading day
res = None
else:
raise Prevention
- Request weekday trading days only; skip weekends and US market holidays.
- Keep dates within the historical window (mid-June 2022 onward) and never in the future.
- Pass full ISO datetimes with timezone rather than bare dates, which get coerced to 20:00 ET.
- Treat this error as 'no data for time requested' in pipelines and fall back to the nearest earlier trading day instead of crashing.
When it happens
Trigger: Calling `equity.market_snapshots(provider='intrinio', date=...)` where `at_datetime` points at a moment with no snapshot files: weekends/market holidays, a date outside the available historical window (data starts mid-June 2022), a future datetime, a date-only value that transform_query forces to 20:00 America/New_York (line 108-117) landing after the last snapshot, or the current day's snapshot not yet published. Also occurs if Intrinio changes its response schema (renames 'snapshots'/'files'/'url') so URL extraction silently finds nothing.
Common situations: Backfilling historical snapshots with dates before June 2022; requesting today's date before the snapshot file is generated; querying weekends/holidays; date passed as a naive string that gets normalized to an 8 PM ET default; upstream schema drift after an Intrinio API change.
Related errors
- Unsupported file format. Please use .json or .env files.
- Invalid extension type(s): {', '.join(invalid)}. Valid choic
- Error serializing output for an extension-modified endpoint
- Missing required package: {missing_package}. Please install
- pywry is not installed
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/98e5214c00e138b9.
Report an issue: GitHub.