lfnovo/open-notebook · error · HTTPException
Failed to fetch episode profiles
Error message
Failed to fetch episode profiles
What it means
Generic 500 raised when listing episode profiles fails unexpectedly (non-OpenNotebookError exception). The real cause is logged with the profile-fetch context.
Source
Thrown at api/routers/episode_profiles.py:93
@router.get("/episode-profiles", response_model=List[EpisodeProfileResponse])
async def list_episode_profiles():
"""List all available episode profiles"""
try:
profiles = await EpisodeProfile.get_all(order_by="name asc")
speaker_names = await _speaker_names_by_id()
return [
_profile_to_response(
p, speaker_names.get(p.speaker_config) if p.speaker_config else None
)
for p in profiles
]
except HTTPException:
raise
except OpenNotebookError:
raise
except Exception as e:
logger.error(f"Failed to fetch episode profiles: {e}")
raise HTTPException(
status_code=500, detail="Failed to fetch episode profiles"
)
@router.get("/episode-profiles/{profile_name}", response_model=EpisodeProfileResponse)
async def get_episode_profile(profile_name: str):
"""Get a specific episode profile by name"""
try:
profile = await EpisodeProfile.get_by_name(profile_name)
if not profile:
raise HTTPException(
status_code=404, detail=f"Episode profile '{profile_name}' not found"
)
return _profile_to_response(
profile, await _speaker_name_for(profile.speaker_config)
)View on GitHub (pinned to a7de90d38a)
Solutions
- Check API logs for the logged exception detail
- Confirm SurrealDB is running and reachable (make status)
- Restart the API so migrations re-run and connections refresh
- If a specific record fails to deserialize, inspect/repair it in the DB
Defensive patterns
Strategy: retry
Try / catch
try:
profiles = await client.get("/api/episode-profiles")
except httpx.HTTPStatusError as e:
if e.response.status_code >= 500:
await wait_for_api_healthy()
profiles = await client.get("/api/episode-profiles")
else:
raise Prevention
- Start tiers in order (database → api) before calling the API
- Add health checks before batch operations
- Surface API logs when 500s appear — detail is server-side only
When it happens
Trigger: GET /api/episode-profiles failing at the DB layer — SurrealDB unreachable, auth failure, or a deserialization problem turning malformed rows into EpisodeProfile objects.
Common situations: Database not started (make database), SurrealDB restarted without the API noticing, schema migration left half-applied, corrupted records.
Related errors
- Failed to fetch episode profile
- Failed to create episode profile
- Failed to update episode profile
- Failed to delete episode profile
- Failed to duplicate episode profile
AI-assisted analysis of lfnovo/open-notebook@a7de90d38a (2026-08-27).
Data as JSON: /api/errors/a0ac8f3a21af7ce2.
Report an issue: GitHub.