Skip to main content

Integrations

Fantasy Project talks to a handful of outside systems. Use this page to find which one a feature depends on, how it authenticates and what breaks when it's down.

Unofficial and best-effort

ESPN has no public fantasy API. The project uses undocumented endpoints and browser automation, which may conflict with ESPN's terms of use. Read the disclaimer before you run it. Other sources (Sleeper, nflverse, RotoWire, Reddit) are public data feeds that can also change or throttle without notice.

What does each integration do?​

SystemUsed forAuthCadencePage
ESPN FantasyLeague reads, lineup, waiver, trade and draft writesespn_s2 and SWID session cookiesReads on demand and weekly. Writes on a trigger.ESPN Fantasy
SleeperPlayer master, injury status, weekly projectionsNoneEvery 10 min on game days, dailySleeper
nflversePlay-by-play, usage metrics, scheduleNoneWeekly after games finishnflverse
LLM providersChat, rumor digest, trade notesAPI keys (Groq, Gemini). None for Ollama.Per request, plus daily digestLLM providers
RotoWire and RedditNews and chatter for rumor signalsNone (RSS), app-only OAuth (Reddit)Every 30 minRumor feeds
OpenBaoStores and delivers every credential aboveKubernetes auth, through External SecretsHourly syncOpenBao
ntfyPhone pushes for failures and trades that need youWrite-only access tokenOn each eventntfy phone notifications

RabbitMQ is also external to each service but internal to the system. See the queue contract explorer.

How do failures differ?​

SourceIf it's downThe system
ESPNReads and writes failRetries a short, fixed time for expired sessions. Refuses to guess when an outcome is unclear.
SleeperNo new injury or projection dataKeeps the last stored values. The next run catches up.
ntfyPhone pushes don't arriveLogs a warning and carries on. Bots never fail because of it.
nflverseMetrics for the week are missingWrites nothing partial. A rerun fills the week.
LLMChat or digest text is unavailableFalls through the provider chain. Scoring and decisions don't depend on it.
Rumor feedsFewer rumor signalsSkips the source for that run.
OpenBaoSecret changes don't landExisting Kubernetes Secrets keep working.