Skip to content

About

Unofficial n8n community node for Sleeper's public fantasy football API

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

n8n-nodes-sleeper

CI

Important

This is an unofficial community project and is not affiliated with, endorsed by, or sponsored by Sleeper or Blitz Studios.

n8n-nodes-sleeper is a read-only n8n community node for public Sleeper fantasy football, basketball, and hockey data. It needs no credentials and has no runtime dependencies.

Status

The source repository is public at github.com/christopherjnelson/n8n-nodes-sleeper. NBA/NHL controls require package version 0.3.0 or newer. Check the installed package version if the UI does not expose those controls. The four polling events are Draft Pick Made, Transaction Created or Updated, League Status Changed, and NFL Week Changed.

Features

  • 18 deterministic read operations across 14 resources
  • Exact opaque string IDs, per-input execution, paired-item links on successful outputs from all 18 actions, and continueOnFail()
  • Raw Sleeper response fields without hidden joins, enrichment, caching, or truncation
  • Operation-specific NFL, NBA, and NHL public API scope with zero credentials and zero runtime dependencies
  • Four Phase 1 polling triggers with first-run baselines and monotonic anti-replay state
  • usableAsTool: true for n8n AI agents without bundling an AI dependency

Installation

n8n Cloud

Search for Sleeper from the node picker or canvas. The verified action node is available in the n8n node catalog. The currently approved Cloud version may lag npm and may not include the latest actions or Sleeper Trigger. Confirm the installed version in your environment before relying on specific operations.

Self-hosted n8n

Where Community Nodes are supported, open Settings → Community Nodes and enter:

n8n-nodes-sleeper

The installer provides the latest version published to npm. NBA/NHL operations require package version 0.3.0 or newer. Check the installed package version if the UI does not expose those controls.

npm

Install the latest version published to npm:

npm install n8n-nodes-sleeper

The retained next selector follows the prerelease channel and may differ from stable:

npm install n8n-nodes-sleeper@next

For a reproducible install, confirm that the package registry lists the version before pinning it. The NBA/NHL features require 0.3.0 or newer:

npm install n8n-nodes-sleeper@0.3.0

See the community-testing guide for requested test evidence and privacy rules.

Local development

Clone this repository, install the locked development dependencies, and run:

pnpm install --frozen-lockfile
npm run dev

Open http://localhost:5690 manually. The task-runner broker uses port 5691. The CLI's o shortcut still targets 5678.

Do not install development builds into an active n8n service.

Credentials

No credentials are required. The node uses Sleeper's public, read-only API and CDN endpoints.

Operations

Resource Operation Required inputs Optional inputs Output shape
User Get Username or User ID — One raw user object
League Get League ID — One raw league object
League Get Many for User User ID, Sport, Season — One item per league; an empty array emits no items
League User Get Many League ID — One raw participating-user item
Roster Get Many League ID — One raw roster item
Matchup Get Many League ID, Week — One raw item per roster side
Transaction Get Many League ID, Round or Week — One raw transaction item
Playoff Get Bracket League ID, Bracket Type — One raw bracket-matchup item
Traded Pick Get Many League ID — One league-scoped traded-pick item
Draft Get Draft ID — One raw draft object
Draft Get Many for League League ID — One raw item per associated draft
Draft Get Many for User User ID, NFL/NBA, Season — One item per user draft
Draft Pick Get Many Draft ID — One raw item per recorded pick
Draft Traded Pick Get Many Draft ID — One draft-scoped traded-pick item
Player Get Many Sport, Active Only, Output Mode Position; collection: Team, Has Team, Player IDs, Output Fields; Return All/Limit; Sort By/Direction One keyed map or one item per player-map entry
Player Get Trending NFL/NBA, Trend Type, Lookback Hours, Limit — One raw player-ID/count item
Sport Get State NFL, NBA, or NHL — One raw sport-specific state object
Avatar Get URL Avatar ID, Image Size — One validated { avatar_id, size, url } object

Usernames can change. Save the stable user_id returned by User → Get for later user lookups. League and draft IDs are opaque strings and must not be converted to numbers.

League users and rosters are separate API results; this node does not join them. Matchup → Get Many emits one record per roster side and does not pair records sharing a matchup_id. Transaction → Get Many uses Sleeper's round path parameter, which commonly corresponds to an NFL week; NBA round-to-week semantics are not inferred. Draft Traded Pick → Get Many is draft-scoped; Traded Pick → Get Many is league-scoped. Unsafe numeric opaque IDs in the draft-scoped traded-pick response are returned as exact strings to avoid JavaScript precision loss. Sport support is operation-specific. Player catalogs support NFL, NBA, and NHL; trending supports NFL and NBA; user seasonal league and draft listings support NFL and observed NBA results; sport state supports NFL, NBA, and NHL. Sleeper's current documentation still labels seasonal user listing routes NFL-only. NHL catalogs support active filtering, but position filtering is hidden and rejected locally because tested NHL position queries returned empty results. NHL trending and seasonal user league/draft support are not advertised. NBA seasonal results are observed live behavior and retain the documentation caveat.

Usage examples

The repository includes importable, inactive workflows with no credentials:

Replace the clearly marked sample username before running the user-leagues example. The examples are repository resources and are intentionally excluded from the npm tarball.

Community workflow examples

The separate Sleeper workflow collection includes Preseason League Command Center and Daily Trending Players Digest to Discord. Their own setup guides cover the additional n8n configuration and credentials they require.

Player data guidance

Player → Get Many returns Sleeper's object keyed by player ID. The unfiltered response is approximately 5 MB, so Sleeper recommends fetching it sparingly and generally no more than once daily. Active Only sends the server-side active=true filter; Position sends a server-side fantasy-position filter for NFL and NBA. Tested NHL position filters returned an empty response, so Position is hidden and stale nonempty NHL values fail before a request. Sleeper documents no single-player endpoint.

NFL and NBA Position use a static dropdown with readable names and Sleeper codes, including Quarterback (QB) and Point Guard (PG); the default choice is All Positions (empty query value). NFL choices are DB (defensive back), DEF (team defense), DL (defensive line), K (kicker), K/P (kicker/punter), LB (linebacker), LEO, LS (long snapper), OG (offensive guard), OL (offensive line), OT (offensive tackle), P (punter), QB, RB (running back), TE (tight end), and WR (wide receiver). NBA choices are C (center), DEF (team entry), PF (power forward), PG (point guard), SF (small forward), and SG (shooting guard). Saved expressions remain intact when changing sports. To clear a stale NHL Position, switch to NFL or NBA, choose All Positions, then switch back to NHL. NHL keeps Position hidden and rejects any stale nonempty saved value locally.

Single Map, the default, emits the keyed object as one n8n item. One Item per Player preserves each raw player object and map order, adding the string map key as player_id only when that field is absent. The node performs no caching, deduplication, or static-data storage. For repeated lookups, fetch a bounded dataset on a schedule and store it externally.

The optional Team, Has Team, Player IDs, and Output Fields controls are in the player-options collection. They filter or project the fetched map locally; team matching ignores case, player IDs are comma-separated exact map keys, and Has Team is off unless explicitly set to true. Output Fields accepts comma-separated flat field names; blank keeps all fields. Projection runs for both output modes and always retains player_id, falling back to the exact map key if the player object has no ID. Return All defaults to true; when disabled, Limit defaults to 50. The top-level Sort By control can use full_name, team, position, or player_id, with ascending order by default. Sorting applies only to One Item per Player; Player ID uses numeric-aware string ordering (for example, 200 sorts before 1000) without converting IDs to numbers. The native map-entry order is retained when no sort is selected.

The node applies filters, then sort, then limit, then field projection. These controls run locally after the player map is fetched; they do not reduce the API response downloaded from Sleeper. They reduce the saved execution history and downstream items. Active and supported position filters remain server-side. Position remains hidden and locally rejected for NHL.

Trending players and attribution

Player → Get Trending defaults to Adds, a 24-hour lookback, and 25 results. Results contain raw player IDs and counts; the node does not fetch the player map or add names or rankings. Sleeper requires attribution when you display or republish its trending-player data. Credit Sleeper in the consuming application, page, report, or downstream output.

Rate guidance

Keep request frequency well below Sleeper's documented limit of roughly 1,000 calls per minute. Avoid polling static league or player data unnecessarily, and keep player queries bounded with Active Only and Position whenever possible.

Error behavior

The action node validates required and controlled values before transport, then delegates HTTP execution and service errors to n8n's declarative request framework. Successful outputs from all 18 actions link to their source input item. Errors raised by n8n's transport or continue-on-fail handling follow n8n's own error-item behavior and may not carry paired-item metadata. A successful HTTP response with a null body becomes a focused not-found error; Sleeper has been observed to return HTTP 200 with null for an unknown user. Invalid response shapes produce a focused node-operation error. Empty array responses emit no fabricated placeholder item.

Troubleshooting

Confirm opaque IDs are passed as strings and controlled inputs use one of the choices shown in the editor. Avatar → Get URL validates the image with a HEAD request, so a missing image or CDN outage is reported as a request failure. Use the issue forms for reproducible defects and private vulnerability reporting for security reports.

Privacy and public data

Sleeper exposes public user and league data without authentication. This node does not log in, access private accounts, or request private endpoints. Workflows can still store, transform, or forward returned public data, so workflow owners remain responsible for downstream data handling and retention.

Community testing

Release feedback remains welcome from clean, supported self-hosted n8n environments. Follow the community-testing guide, then use the structured issue forms for compatibility results, reproducible bugs, or feature requests. Report suspected security issues only through private vulnerability reporting.

AI-tool use

The node can be selected as an n8n AI tool. Operations remain deterministic and read-only, and the package contains no AI runtime dependency. Give agents specific user, league, or draft IDs and bounded player queries; do not ask an agent to infer private or unknown identifiers.

Compatibility

  • Package engine: Node.js 22.22.0 or newer
  • Earlier isolated UI baseline: n8n 2.32.7
  • Final 0.3.0 packed-package runtime smoke: n8n 2.42.4 on Node.js 24.18.0 (2026-10-07)
  • Node-picker summary check: n8n 2.42.4 on 2026-10-07
  • Development CLI: @n8n/node-cli 0.46.4
  • Development package manager: pnpm 11.15.0

These are tested versions, not a promise of compatibility with every version admitted by a peer dependency range.

Limitations

Sport availability depends on the operation. NHL trending and NHL seasonal user league/draft listings are not offered. Sleeper's current docs still call user seasonal league/draft routes NFL only; NBA results are live-observed and retain that caveat. NHL state omits fields available in NFL/NBA state, so raw sport-specific state objects pass through without inferred values. No NBA or NHL week trigger is included; only the existing NFL Week Changed trigger watches global state.

The package continues to omit authentication, lineup changes, adds/drops, trades, draft actions, league-setting changes, chat, Sleeper Picks, paid contests, player search, single-player lookup, composite standings, scoreboards, roster resolution, activity feeds, enrichment, and hidden caching.

Avatar → Get URL makes a HEAD request to the documented CDN URL before emitting it. The operation therefore fails when the image is missing or the CDN is unavailable; it emits URL metadata rather than binary image data.

Ordinary action operations use n8n declarative routing. The Sleeper Trigger remains programmatic because polling compares validated responses with persisted state across scheduled invocations.

Development

pnpm install --frozen-lockfile
pnpm run validate
pnpm run typecheck
pnpm run lint
pnpm run format:check
pnpm run test
pnpm run build
pnpm run scan:source
pnpm run smoke:load
pnpm run package:check
pnpm run smoke:install

See CONTRIBUTING.md for scope and contribution rules, docs/testing.md for automated checks, docs/manual-testing.md for the editor smoke guide, and docs/release-readiness.md for current release status and links to the dated release record.

Release and provenance

Releases run from reviewed annotated version tags. GitHub Actions validates the exact tagged source, publishes directly to npm with provenance through GitHub OIDC, verifies the published package, and then creates the GitHub Release. Versions 0.1.1, 0.2.0, and 0.2.1 used the former staged flow; see docs/releasing.md for the active procedure and historical records.

Contributing

Contributions must preserve the read-only public-API scope, exact workflow values, zero runtime dependencies, and all automated gates. Security reports follow SECURITY.md.

License

MIT. See LICENSE.

Attribution

Sleeper API data and names remain the property of their respective owners. Trending-data users must provide the attribution required by Sleeper's API documentation.

The node icon is the current Sleeper-controlled robot favicon, extracted without visual changes from the multi-size icon served by Sleeper's homepage. See branding documentation.

Non-affiliation

This project is unofficial. It is not affiliated with, endorsed by, sponsored by, or produced by Sleeper or Blitz Studios. Sleeper owns the robot favicon used as the node icon; its inclusion does not imply endorsement.

Resources

About

Unofficial n8n community node for Sleeper's public fantasy football API

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages