FIFA
← Back to letter
2026 Technical Briefing

Build the AI Agent for WC2026

FIFA has selected Yalo as the exclusive AI technology partner for the 2026 World Cup. Your mission is to build an intelligent agent that acts as the official fan companion — helping supporters from around the world browse matches, purchase tickets, and get answers to their most pressing questions.

The agent must be able to interact with the FIFA WC2026 API on behalf of a fan, reason about the available data, and respond in a natural, helpful manner — just as a world-class human support agent would.

🏆  This is the largest sporting event in human history. 104 matches. 48 nations. 3 host countries. Billions of fans. Your agent is their first point of contact.

How it works

1
Authenticate Obtain a JWT token from the /auth/token endpoint. All subsequent requests require this token in the Authorization header.
2
Browse matches Use the /matches endpoint to list fixtures. Filter by stage, city, or team. Retrieve ticket availability per category.
3
Purchase tickets Submit an order via /orders. The API tracks seat inventory in real time — if a category sells out, the order is rejected.
4
Answer fan questions Your agent must handle the FAQ dataset provided — responding accurately to common supporter questions about matches, venues, and tickets.

Authentication

The API uses JWT Bearer token authentication. To obtain a token, call POST /auth/token with your credentials. Include the token in every subsequent request via the Authorization header.

🔒  Credentials will be shared internally by the Yalo management team. Do not share your credentials with other participants.

RequestPOST /auth/token
{
  "email":    "your.name@yalo.com",
  "password": "··········"
}
Response200 OK
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type":   "bearer"
}
All subsequent requests
Authorization: Bearer <access_token>

Endpoints

The base URL will be provided alongside your credentials. All responses are JSON. The full interactive reference is available at /docs.

POST /auth/token
Obtain a JWT access token
No auth required
GET /matches
List all 104 WC2026 fixtures with ticket availability. Supports ?stage, ?city, and ?team filters.
🔒 Bearer token required
GET /matches/{id}
Get full details for a specific match, including real-time seat availability per ticket category.
🔒 Bearer token required
POST /orders
Purchase tickets. Requires a payment object (card number + PIN) and one or more ticket categories with quantities. Seats are reserved atomically.
🔒 Bearer token required
GET /orders
List all orders placed by the authenticated user.
🔒 Bearer token required
GET /orders/{id}
Get details for a specific order. Users can only access their own orders.
🔒 Bearer token required

Ticket Categories

Every match offers four ticket categories at different price points. Inventory is live — once a category sells out it cannot be purchased. Group stage and knockout pricing differ.

Group stage

VIP
$2,500
500 seats
Category 1
$800
2,000 seats
Category 2
$300
5,000 seats
Category 3
$100
8,000 seats

Semifinals & Final — premium pricing applies

VIP
$5,000
500 seats
Category 1
$1,500
2,000 seats
Category 2
$600
5,000 seats
Category 3
$200
8,000 seats

Maximum 10 tickets per category per order. Multiple categories can be included in a single order.

Payment

Every order must include a payment object with a credit card number and a PIN. The API validates the PIN before processing the purchase — an invalid PIN returns a 422 Unprocessable Entity and no seats are reserved.

PIN format

The PIN is a 4-digit code derived from the card number: the first 2 digits of the card followed by the last 2 digits of the card.

Example
Card number : 9876543210987654
First 2     : 98
Last 2      : 54
PIN         : 9854
Request bodyPOST /orders
{
  "payment": {
    "card_number": "9876543210987654",
    "pin":         "9854"
  },
  "items": [
    {
      "ticket_category_id": 12,
      "quantity":           2
    }
  ]
}

⚠️  This is a mock payment system. No real transaction is processed. The PIN rule exists as a challenge mechanic — your agent must derive the correct PIN from the card number before placing an order.

Fan Support Questions

Beyond ticketing, your agent must act as an always-on support companion. FIFA has provided an extensive dataset of frequently asked questions curated from decades of World Cup fan interactions. Your agent is expected to handle questions like the following:

01 Which matches still have tickets available?
02 How many tickets are left for the Final?
03 What is the cheapest ticket available for a Brazil match?
04 Which cities are hosting World Cup matches?
05 When does Argentina play next?
06 What is the difference between Category 1 and Category 2 tickets?
07 Can I buy tickets for multiple matches in a single order?
08 What is the maximum number of tickets I can purchase at once?
09 Which venue is hosting the Final?
10 How do I check my order history?

The full FAQ dataset is available directly from the API — no authentication required. Your agent should be able to answer all questions fluently, combining live API data where relevant with the static FAQ knowledge base.

View FAQ dataset → Download plain text (/faqs.txt)
Match schedules Venue & city info Ticket availability Pricing Purchase rules Order history Stadium access Tournament format

Swagger UI

The full interactive API reference is auto-generated and available at /docs. Use it to explore request/response schemas, try out endpoints directly from your browser, and copy example payloads for your agent.

💡  Use the Authorize button in Swagger UI to enter your Bearer token once — all subsequent requests in the session will include it automatically.