Genere un cuadro de esports de doble eliminación
Convierta una lista ordenada de equipos en una estructura completa de doble eliminación sin dibujar rondas a mano.
Ejecutar — gratis
El generador interpreta el orden como la siembra, amplía el cuadro hasta la siguiente potencia de dos, asigna los pases libres necesarios y devuelve las llaves de ganadores y perdedores enlazadas. Cada plaza posterior indica el partido y el resultado que la alimentan, y la gran final incluye el reinicio condicional necesario cuando vence el finalista de perdedores. El resultado es determinista y sirve para software de torneos, grafismos de retransmisión, inscripciones o revisiones previas del evento.
Prepare la siembra y comprenda los pases libres
Introduzca los equipos del cabeza de serie más fuerte al más débil. El primer nombre recibe la semilla uno, el segundo la dos y así sucesivamente; el generador nunca altera esa clasificación al azar. Cada nombre debe contener texto visible y ser único sin distinguir mayúsculas, pues dos participantes indistinguibles volverían ambiguos los resultados. Un cuadro de doble eliminación se representa mejor con una potencia de dos: seis equipos ocupan ocho plazas, mientras que ocho no cambian. Las plazas vacías aparecen como objetos de pase libre, no como rivales inventados. La colocación canónica mantiene separados a los mejores cabezas de serie el mayor tiempo posible. Un equipo emparejado con un pase avanza sin jugar, pero se conserva la plaza del partido inicial para mantener estables los identificadores y enlaces posteriores. Esto resulta útil cuando la inscripción cierra con un número irregular o una baja tardía reduce el cuadro previsto.
Interprete los enlaces de ganadores y perdedores
La salida separa winners_bracket y losers_bracket en rondas numeradas. Los partidos iniciales contienen equipos sembrados u objetos de pase libre. Los siguientes contienen objetos de origen porque sus participantes dependen de los resultados: kind indica si llega un ganador o perdedor, match identifica el encuentro anterior y slot conserva el lado del nuevo cruce. Las derrotas de la llave de ganadores alimentan la de perdedores por etapas. Entre esas entradas, las rondas de consolidación reducen a los supervivientes antes de recibir otro grupo. Así se crea el ritmo habitual en el que un equipo queda eliminado tras su segunda derrota competitiva. Los identificadores son deterministas, como W2M1 o L3M2. Su aplicación puede guardar resultados con esas claves, resolver los enlaces al finalizar cada partido y mostrar la topología como lista, cuadro tradicional o gráfico televisivo. La estructura describe el avance; no pronostica ganadores ni inventa marcadores.
Gestione el campeonato e integre el resultado
El objeto grand_final contiene el primer partido por el título y un reinicio condicional. GF1 enfrenta al finalista invicto de ganadores con el superviviente de perdedores. Si vence el primero, el torneo termina porque su rival ya suma dos derrotas. Si vence el finalista de perdedores, ambos tienen una derrota y GF2 decide el campeón en igualdad. La condición queda explícita para evitar el error común de asumir una sola final. Para integrar la estructura, guarde la respuesta completa como definición del torneo y añada horarios, servidores, resultados y estados en su sistema mediante cada identificador estable. Resuelva un origen solo cuando el partido referido sea definitivo y trate los pases libres según sus reglas. El generador no usa red ni conserva equipos. En el navegador es gratuito; una solicitud API aplica el precio base mostrado de $0.002 para automatizar inscripciones o gestión de eventos.
Qué puede hacer con ella
Siembre una fase clasificatoria en línea
Convierta la clasificación de inscritos en rondas enlazadas, aunque el número final exija pases libres.
Cree un cuadro para retransmisión
Use identificadores estables y orígenes de avance para controlar grafismos sin reconectar rondas manualmente.
Inicialice software de torneos
Guarde primero la topología determinista y añada después horarios, puntuaciones, mapas y estados.
Preguntas frecuentes
¿Cuántos equipos se necesitan?
Se requieren al menos cuatro nombres únicos y no vacíos; el máximo admitido es de 64 equipos.
¿Cómo se asignan las semillas?
El orden de entrada es el orden de siembra. El primer equipo recibe la semilla uno y la colocación canónica separa a los favoritos.
¿Qué ocurre si la cantidad no es una potencia de dos?
El cuadro crece hasta la siguiente potencia de dos y las plazas sin usar se convierten en pases libres explícitos.
¿Incluye un reinicio de la gran final?
Sí. GF2 solo se disputa si el finalista de perdedores vence al invicto en GF1.
¿Programa horarios o elige ganadores?
No. Devuelve la topología y los enlaces de avance; su sistema gestiona horarios, marcadores y decisiones.
¿Cuánto cuesta una solicitud API?
El precio base por solicitud API es $0.002. También puede generar el cuadro gratis en el navegador.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}'const res = await fetch("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.esports_bracket_seed_matchups",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |