Mastodon
Header_API

Transfer lineups and match data as a Universal Link from association software directly into the app – simple, fast, secure

With the Lineup Link API, associations, leagues, and clubs can generate a short link from their existing systems. When tapped, this link opens the referee app What's the Score, Bro? Reffing on the iPhone and automatically passes in the full lineup.

Integration is free, secure, and straightforward. Your system only needs to send a small JSON message (approx. 2–6 KB) to the API and will receive back a short Universal Link. There are no security risks for existing IT infrastructures: no inbound connections, no webhooks, no user accounts. Everything stays as it is – you simply make one outgoing API call.

Install the app, unlock the Pro version, and try it directly on your iPhone:

U7 Youth Match
4 × 15 minutes
7 field players + substitutes 

Women’s Cup Match
2 × 45 minutes
2 × 15 minutes extra time
11 field players + substitutes

Men’s Indoor Tournament Match
15 minutes
Direct penalty shootout
6 field players + substitutes

The value for referees using Apple Watch and the app What's the Score, Bro? Reffing

sofort_startklar

Instantly ready: Tap – app opens – lineup is there. No manual typing, no transfer errors.

spiellogik2

Game logic included: Halftime length, number of halves, knockout mode with extra time or direct penalty shootout are automatically embedded.

aufstellung

Less stress on match day: Captains & goalkeepers are marked, substitutes are complete, player numbers validated (0–99).

datensparsam

Data-minimal: Only numbers and roles are transmitted – no names or personal data.

Lineup Link API – Reference

Base URL: https://lineup.whatsthescorebro.com
Version: v1
Format: application/json
Auth: not required (rate limits apply)

Submit a lineup

Creates a server-side payload and returns:
lid – the short link ID
link – the Universal Link
expiresAt – expiration date of the link
 

Request Body (JSON)

Field Type Required Values Description
v integer = 1 Schema version
players array min 1 entry All players of both teams, including substitutes
halvesMinutes integer 1–45 Minutes per half
halvesNumber integer 1–4 Number of halves
elimination boolean true/false Knockout match
onlyPenalties boolean true/false Penalty shootout only, no extra time (e.g. for tournaments/indoor matches)
extraTime integer 1–15 Extra time in minutes per half
ttlSeconds integer 60–31,536,000 Validity of the link (max. 1 year). Higher values will be capped.

Player (Object in players[])

Field Type Required Values/Constraints Description
n integer 0–99 Jersey number
t enum "home" | "guest" Team assignment
p enum "on" | "off" Starting lineup (on) or bench (off)
c boolean Captain
g boolean Goalkeeper

Example

Response (200)

Error Codes

Code Body Meaning
422 {"error":"invalid_payload","details":[...]} Validation failed (e.g. number > 99, missing fields)
429 {"error":"rate_limited"} Too many requests
5xx {"error":"server_error"} Unexpected error

Sample Implementations

Node.js

Python

PHP

C#

Java

Ruby