late_swap
Late Swap Entries
FanDuel NBA late swap: re-solve the OPEN slots of your existing entries; locked players stay in their slot.
Send the FanDuel entries CSV for the slate (after the first tip: the 'Edit entries' download; before lock:
the entries-upload template). A player whose game has started keeps his exact column; every other slot is
re-solved on fresh projections and OUT news with the salary cap and 4-per-team rule over the WHOLE lineup.
Returns the same file with only those cells changed (csv, upload it at FanDuel > Edit entries) and a
per-entry diff. Started slates are hidden by list_slates(playable=true); pass the slate_id from
list_slates(playable=false), or omit it to use the FanDuel fixture id inside the file. NBA FanDuel classic only.
Responses:
200: Successful Response (Success Response) Content-Type: application/json
Example Response:
{
"status": "Status",
"csv": "Csv",
"filename": "Filename",
"slate_id": 1,
"fd_slate_id": "Fd Slate Id",
"date": "Date",
"salary_cap": 1,
"layout": "Layout",
"mode": "Mode",
"lock_buffer_minutes": 1,
"entries_total": 1,
"entries_changed": 1,
"entries_unchanged": 1,
"entries_infeasible": 1,
"per_entry": [
{
"entry_id": "Entry Id",
"contest_id": "Contest Id",
"contest_name": "Contest Name",
"status": "Status",
"reason": "Reason",
"locked": [
{
"col": 1,
"label": "Label",
"player_id": "Player Id",
"name": "Name"
}
],
"swaps": [
{
"col": 1,
"label": "Label",
"in_id": "In Id",
"in_name": "In Name"
}
],
"proj_before": 1.0,
"gain": 1.0
}
],
"started_games": [
"string"
],
"closing_games": [
"string"
],
"open_games": [
"string"
],
"evaluated_at_utc": "Evaluated At Utc",
"solves": 1,
"warnings": [
"string"
],
"note": "Note"
}422: Validation Error Content-Type: application/json
Example Response:
{
"detail": [
{
"loc": [],
"msg": "Message",
"type": "Error Type",
"ctx": {}
}
]
}Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"template_csv": "<template_csv>"
},
"name": "late_swap"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Slate date YYYY-MM-DD. Default: today in America/New_York. | |
| mode | No | 'optimal' re-solves every open slot (an entry is edited only when it gains >= min_gain projected points, or holds an OUT/missing player); 'replace_out' replaces only open-slot players who are OUT, have no projection, or are avoided. | optimal |
| sport | No | Only 'nba' is supported. | nba |
| avoids | No | Player names or ids never brought into an open slot. An avoided player already in an open slot is swapped out (both modes) unless his game starts within lock_buffer_minutes; a locked player is never removed. | |
| min_gain | No | Projected points a healthy, valid entry must gain before it is edited (mode 'optimal' only). | |
| platform | No | Only 'fd' (FanDuel) is supported. | fd |
| slate_id | No | V12 slate_id from /v1/slates, or the FanDuel fixture id (the prefix of every player/contest id in the file, e.g. 135843). Omit it to use the fixture id read from the template's contest_id. | |
| template_csv | Yes | Raw CSV of the FanDuel entries file for the slate: the 'Edit entries' download after lock, or the entries-upload template before lock. Rows keep their entry_id; the returned CSV is this file with only the open roster cells of entry rows changed. | |
| lock_buffer_minutes | No | A game starting within this many minutes takes no incoming player (the upload may land after its lock). |