Genere una sopa de letras reproducible con semilla
Convierta una lista de palabras en una sopa de letras completa sin colocar cada letra a mano.
Ejecutar — gratis
Indique las palabras, el tamaño de la cuadrícula y una semilla entera; el generador sitúa cada término en horizontal, vertical o diagonal, permite cruces de letras compatibles y rellena las celdas restantes de forma reproducible. La respuesta incluye las filas terminadas y las coordenadas exactas, por lo que sirve para actividades impresas, pruebas automatizadas, material didáctico y aplicaciones que necesitan un juego estable con su solución.
Prepare las palabras y elija las dimensiones
Comience con entre una y veinte palabras distintas escritas con las letras inglesas de la A a la Z. El uso de mayúsculas o minúsculas no cambia el resultado, pues el generador normaliza cada término aceptado a mayúsculas antes de colocarlo. Elija <code>grid_size</code> como número de filas y columnas de la cuadrícula cuadrada, entre 2 y 25. La palabra más larga no puede superar ese tamaño: un término de seis letras necesita al menos seis celdas, porque cada palabra sigue una línea recta. Una cuadrícula grande ofrece más separación y relleno; una compacta favorece los cruces. Si el conjunto no cabe, aumente el tamaño o reduzca la lista. Los duplicados se rechazan tras normalizar las mayúsculas para evitar soluciones ambiguas. También se rechazan espacios, guiones, tildes, cifras y signos, de modo que cada celda contenga siempre un único carácter previsible.
Use una semilla para repetir posiciones y relleno
El campo <code>seed</code> controla todas las decisiones que de otro modo parecerían aleatorias. Para cada palabra, el generador enumera las posiciones válidas hacia el este, oeste, norte, sur y las cuatro diagonales, y las ordena mediante una secuencia seudoaleatoria derivada de la semilla. Coloca primero las palabras largas y retrocede de forma determinista cuando una opción impide situar otra posterior. Dos términos pueden compartir una celda únicamente si ambos requieren la misma letra, por lo que los cruces siguen siendo legibles. Una vez colocada la lista completa, la misma secuencia produce las letras de relleno. Si repite exactamente las mismas palabras en el mismo orden, el mismo tamaño y la misma semilla, recibirá idéntica cuadrícula y solución. La semilla está pensada para reproducibilidad, no para secreto ni imprevisibilidad criptográfica.
Interprete la cuadrícula y construya la solución
La respuesta devuelve <code>grid</code> como un arreglo de cadenas de igual longitud, una por fila. Puede mostrarlas en una fuente monoespaciada o dividir cada cadena en caracteres para crear celdas. Las coordenadas de <code>placements</code> empiezan en cero: <code>row: 0</code> y <code>column: 0</code> señalan la esquina superior izquierda. Los códigos <code>E</code> y <code>W</code> indican horizontal, <code>N</code> y <code>S</code> vertical, y <code>NE</code>, <code>NW</code>, <code>SE</code> y <code>SW</code> diagonal. Las ubicaciones conservan el orden de la lista enviada aunque el algoritmo procese primero los términos largos. Puede ocultarlas al jugador y guardarlas como solución, o utilizarlas para resaltar respuestas en una interfaz. Si no existe una disposición completa, la solicitud devuelve un error de entrada en vez de omitir palabras o entregar un tablero parcial.
Qué puede hacer con ella
Cree fichas para clase
Genere un juego estable para el alumnado y conserve las ubicaciones devueltas como hoja de soluciones independiente.
Desarrolle juegos interactivos
Muestre la cuadrícula como celdas seleccionables y use coordenadas y direcciones para validar cada palabra marcada.
Prepare datos de prueba reproducibles
Guarde una lista y una semilla compactas y regenere exactamente la misma cuadrícula en cada ejecución.
Preguntas frecuentes
¿Cuánto cuesta una solicitud de API?
El precio de la API es $0.002 por sopa de letras; también puede ejecutar el generador gratis en el navegador.
¿La misma semilla produce siempre el mismo juego?
Sí, siempre que las palabras, su orden, el tamaño y la semilla sean exactamente iguales.
¿En qué direcciones aparecen las palabras?
Pueden avanzar en ambos sentidos horizontal, vertical y diagonal, con ocho códigos de dirección.
¿Pueden cruzarse dos palabras?
Sí. Pueden compartir una celda cuando el carácter que necesita cada una coincide.
¿Qué ocurre si las palabras no caben?
Recibirá un error de entrada, nunca una cuadrícula parcial; aumente el tamaño o reduzca la lista.
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/game/word-search-grid-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"words":["ORBIT","MOON","STAR"],"grid_size":8,"seed":42}'const res = await fetch("https://api.kit.forhosting.com/game/word-search-grid-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"words": [
"ORBIT",
"MOON",
"STAR"
],
"grid_size": 8,
"seed": 42
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/word-search-grid-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"words": [
"ORBIT",
"MOON",
"STAR"
],
"grid_size": 8,
"seed": 42
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/word-search-grid-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"words":["ORBIT","MOON","STAR"],"grid_size":8,"seed":42}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"words":["ORBIT","MOON","STAR"],"grid_size":8,"seed":42}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/word-search-grid-generate", 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
{
"words": [
"ORBIT",
"MOON",
"STAR"
],
"grid_size": 8,
"seed": 42
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.word_search_grid_generate",
"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.
Límites
max_grid_size | 25 |
max_words | 20 |
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. |