Skip to main content
POST
Pass teamId in the body (not the path). The team must belong to the API key organization.
Opponent required: send at least one of teamTwoId or teamTwoName.
  • teamTwoName — guest / external opponent display name
  • teamTwoId — linked team in the same API key organization (when only teamTwoId is sent, we set teamTwoName from that team’s name)
  • You may send both
If you omit both, the API returns 400 with: Either teamTwoId or teamTwoName must be provided.
If you do not provide a value for a format field, we set a default on our side (create only).You must still send teamId, startDate, and at least one of teamTwoName or teamTwoId. For everything else below, skipping the field means we fill it — the field is not left empty.If you send a value, we use yours. Send format fields yourself when you need exact game settings.
You must send: teamId, startDate, and at least one of teamTwoName or teamTwoId. Other body fields you may send: teamTwoId, teamTwoName, eventType, endDate, duration, matchupFormat, teamFormat, isTestGame, isScrimmage, enableYardage, allowZeroYardStart, fieldSizeInYard, overtimeType, overtimeDuration, locationName, placeId, location, practiceNote. Do not send startTime, endTime, or isRecurring — those are UI-only and are not accepted by this API.

Minimal example (guest opponent name)

Minimal example (linked opponent team)

Full payload (same values we set as defaults)

Sending this body is equivalent to the minimal example above — these are the format values we fill on our side when you omit them:
fieldSizeInYard is only set when enableYardage is true (then we default to 50 if you omit it). overtimeDuration is only needed when overtimeType is limited. Location fields (locationName, placeId, location) and practiceNote stay unset unless you send them.

Authorizations

Authorization
string
header
required

Public integration API key (bb_live_...). Not a login JWT.

Body

application/json

WARNING: You must send at least one of teamTwoId or teamTwoName (400 if both are omitted). When only teamTwoId is sent, we set teamTwoName from that team's name. WARNING: If you do not provide a value for a format field on create, we set a default on our side (eventType=game, duration=30, matchupFormat=halves, teamFormat=7v7, booleans false, overtimeType=unlimited, endDate=startDate+duration). You must still send teamId and startDate. If you send a value, we use yours.

teamId
string
required

Team that owns this schedule. You must send this.

Example:

"6917707a0e8f6ee5171235c2"

startDate
string<date-time>
required

When the event starts. You must send this.

Example:

"2026-09-26T22:00:00.000Z"

teamTwoId
string

Optional on its own, but you must send teamTwoId and/or teamTwoName. Opponent team Mongo id in the same API key organization. When only teamTwoId is sent, we set teamTwoName from that team's name.

Example:

"6917707a0e8f6ee5171235c3"

teamTwoName
string

Optional on its own, but you must send teamTwoId and/or teamTwoName. Opponent display name for a guest / external opponent.

Example:

"Long Island University"

endDate
string<date-time>

If you do not provide this field, we set startDate + duration minutes on our side.

Example:

"2026-09-26T22:30:00.000Z"

eventType
enum<string>

If you do not provide this field, we set game on our side.

Available options:
game,
practice
Example:

"game"

duration
enum<integer>

If you do not provide this field, we set 30 on our side.

Available options:
20,
24,
30,
40,
48,
50,
60
Example:

30

matchupFormat
enum<string>

If you do not provide this field, we set halves on our side.

Available options:
halves,
quarters,
runningClock
Example:

"halves"

teamFormat
enum<string>

If you do not provide this field, we set 7v7 on our side.

Available options:
4v4,
5v5,
6v6,
7v7,
8v8,
9v9,
11v11
Example:

"7v7"

isTestGame
boolean

If you do not provide this field, we set false on our side.

Example:

false

fieldSizeInYard
enum<integer>

Send when enableYardage is true. If enableYardage is true and you do not provide this field, we set 50 on our side.

Available options:
30,
40,
45,
50,
60,
64,
70,
80,
100
Example:

50

enableYardage
boolean

If you do not provide this field, we set false on our side.

Example:

false

isScrimmage
boolean

If you do not provide this field, we set false on our side.

Example:

false

allowZeroYardStart
boolean

If you do not provide this field, we set false on our side.

Example:

false

overtimeType
enum<string>

If you do not provide this field, we set unlimited on our side.

Available options:
limited,
unlimited
Example:

"unlimited"

overtimeDuration
number

Send when overtimeType is limited (minutes). We do not invent a limited overtime length.

Required range: x >= 1
Example:

5

practiceNote
string
locationName
string
placeId
string
tournamentId
string

Response

Schedule created

The response is of type object.