API Documentation
Everything an approved partner needs to show our picks, results and track record on their own site or app. JSON over HTTPS, one API key, four endpoints.
Overview
The Picks API gives approved partners our picks, graded results and track record, so you can present them under your own brand. Responses carry no YourSwami branding.
| Base URL | https://yourswami.com/api/v1 |
| Format | JSON over HTTPS. All times are UTC ISO 8601; dates are YYYY-MM-DD. |
| Authentication | Your API key in a request header. |
| Endpoints | GET /picks GET /results GET /record GET /me |
| Versioning | Within v1 we only add fields; we never remove or rename one. A breaking change would come as /v2, with notice. |
Quick start
Get today's picks in one request. Replace YOUR_API_KEY with the key you were issued.
Authentication
Send your key with every request, in either header:
Keep the key on your server. A key placed in a web page or a mobile app can be copied by anyone who looks. If a key may have leaked, contact us: we revoke it at once and issue a new one.
GET /picks
Picks in your agreement. With a date, every pick whose game is on that day, graded ones included. Without a date, what is current right now: picks announced but not yet dropped, and dropped picks until a few hours after the game starts.
| Parameter | Example | Description |
|---|---|---|
date | 2026-09-19 | Optional. The Eastern-time game day. |
league | MLB | Optional. One league in your agreement. |
GET /results
Graded picks and how they came through, with a won-lost summary. The results for a day are exactly the picks /picks lists for that day.
| Parameter | Example | Description |
|---|---|---|
date | 2026-09-18 | One day. Defaults to today (Eastern time). |
from, to | 2026-09-01 | A range of up to 31 days, used instead of date. Send both. |
league | NFL | Optional. One league in your agreement. |
GET /record
The won-lost-push record and current streak over the picks in your agreement, overall and per league. Units are net units at the posted price (a pick posted without a price is counted at -110).
| Parameter | Example | Description |
|---|---|---|
league | NFL | Optional. One league in your agreement. |
GET /me
Your account and what your key unlocks. Useful for checking a new integration and your access end date.
The pick object
Every endpoint that returns picks returns them in this shape.
| Field | Meaning |
|---|---|
id | Stable identifier. Use it to de-duplicate and to match a pick with its result later. |
league / league_name | NFL, NCAAF, NBA, NCAAB, MLB or NHL, and its display name. |
matchup | Full team names as "Away @ Home". |
away_team / home_team | Full team names, null if they cannot be read from the matchup. |
game_starts_at | Kickoff or first pitch (UTC), null when unknown. |
game_date | The Eastern-time day of the game. This is what ?date= matches. |
drops_at | When the pick is released. Before this time the pick is a preview. |
status | upcoming (not dropped yet), open (dropped, not graded), won, lost or push. |
is_lock | True for the Lock of the Day (only in agreements that include it). |
confidence / units | Confidence percentage and suggested units. |
locked | True while the play is not yet released to you. play is then null. |
play_available_at | When the play unlocks for you, once that is known. |
play.team | The team the pick is on (for totals, the team as posted). |
play.selection | The pick exactly as posted, line and price included, for example "Chicago Cubs RL +1.5 (-140)". Never reformatted. |
play.market | ML (moneyline), RL (run line), Spread, Total (over/under), F5 (first 5 innings) or Prop. |
play.odds | American odds as posted, for example "-112". Null when none was posted. |
analysis | Written reasoning. Present only if your agreement includes analysis; null while locked. |
When a play unlocks
A pick can be announced before its play is released. Until the play is released to you, the pick comes back with locked: true and play: null, carrying the matchup, game time, confidence and units, so you can show a preview.
The play unlocks when our members are alerted, plus any delay set in your agreement. play_available_at tells you when, once that is known. Graded picks are always unlocked. Poll /picks about once a minute around drop times to pick plays up promptly.
Dates and leagues
A pick's date is the Eastern-time day its game is played, returned as game_date. A pick posted on Thursday for a Saturday game is listed under Saturday. Picks stored without a game time use the day they were released.
Leagues: NFL NCAAF NBA NCAAB MLB NHL. The league parameter is not case sensitive.
Errors
Errors use standard HTTP status codes and always have this body:
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_date | A date is not YYYY-MM-DD, or a /results range is wrong (from after to, over 31 days, or date mixed with from/to). |
| 400 | invalid_league | Unknown league, or a league your agreement does not include. |
| 401 | missing_key | No API key was sent, or it is not in the expected format. |
| 401 | invalid_key | The key does not exist. |
| 401 | revoked | The key has been revoked. Ask your account manager for a new one. |
| 401 | key_expired | The key passed its end date. |
| 403 | suspended | Your account is paused. Contact your account manager. |
| 403 | access_ended | Your access period has ended. Contact your account manager to renew. |
| 429 | rate_limited | Too many requests. Wait the number of seconds in the Retry-After header. |
| 503 | unavailable | Temporary problem on our side. Retry shortly. |
Rate limits
Each key has a per-minute limit, 60 requests by default (see GET /me). Every response carries X-RateLimit-Limit and X-RateLimit-Remaining. Over the limit you get 429 with a Retry-After header in seconds.
Best practices
- Call the API from your server and cache the answer for your visitors; do not call it from their browsers.
- Use
idto de-duplicate picks and to match each pick with its result. - Show
play.selectionas it is; it is the pick exactly as posted, line and price included. - Show
game_starts_atin your audience's time zone. - Ignore fields you do not use. New fields may appear within v1.
- On
429or503, wait and retry; never retry in a tight loop.
Getting access
The API is available to approved partners under a partner agreement. To request access, email support@yourswami.com. Your account manager issues your key and sets which sports and add-ons it includes.