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

  1. 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).
  2. 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.
  3. 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.
  4. 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).
  5. 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

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


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/98e5214c00e138b9. Report an issue: GitHub.