Introducción
Bienvenido a la documentación del API de Slang.
Autenticación
Para autorizar incluya
Authorizationen los encabezados de la petición.
# Ejemplo
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/groups' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Reemplazar
{token}con su API key de su organización.
Slang utiliza API keys para permitir acceso al API. Esta se proveerá por medio de un representante de Customer Success.
El API espera que todas las peticiones incluyan un header como se ve a continuación:
Authorization: Basic {token}
Usuarios
El proceso de creación de usuarios a través de los APIs descritos abajo, funciona de la siguiente manera:
El usuario autorizado por la organización se suscribe a Slang a través de sus páginas y sistemas.
La Organización envía a Slang, a través del API de users, los siguientes datos del usuario: ID del grupo al que pertenece (si aplica), nombre completo y correo electrónico. Cabe destacar que los sistemas de la organización pueden acceder al API de grupos para así determinar el grupo al que corresponde el usuario.
Al recibir estos datos, Slang crea la cuenta del usuario (asignándolo, en caso dado, al grupo que fue especificado). Luego de esto, Slang envía al correo electrónico del usuario las instrucciones para que este termine la activación de la cuenta, configure su contraseña y ¡empiece a usar Slang!
Este nuevo usuario aparecerá de inmediato en el Learning Management System (LMS), en la sección "Pending invitations" y bajo el grupo asignado, en caso de que este fuera especificado.

Verificar email
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/validate-email/{email}' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint valida si un email está o no disponible en la plataforma.
HTTP Request
GET /integrations/v1/validate-email/{email}
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea verificar | String | 255 | Si |
HTTP Response
Crear usuario
curl --location --request POST 'https://api.demo.slangapp.com/integrations/v1/users' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}' \
--data-raw '{
"name": {name},
"email": {email},
"group_id": {group_id},
"tier_id": {tier_id}
}'
Este endpoint crea un usuario en la plataforma.
HTTP Request
POST /integrations/v1/users
Ejemplo del
body
{
"name": "John Smith",
"email": "j.smith@slangapp.com",
"group_id": 1,
"tier_id": 4
}
Body Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| name | El nombre del nuevo usuario | String | 255 | Si |
| El email del nuevo usuario | String | 255 | Si | |
| group_id | El identificador del grupo al que pertence el nuevo usuario | Integer | No | |
| tier_id | El identificador del tier/licencia para asignar al usuario | Integer | No |
El group_id es obtenido a través del API de Grupos
El tier_id es obtenido a través del API de Tiers
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"user": {
"id": 7651231
"name": "John Smith",
"email": "j.smith@slangapp.com",
"organization_id": 123,
"organization": "Slang",
"cohort_id": 1,
"cohort": "Slang Colombia",
"pro_ends_at": "2020-12-30 19:00:00.000000",
"suspended_at": "2020-12-30 19:00:00.000000"
}
}
Suspender usuario
curl --location --request DELETE 'https://api.demo.slangapp.com/integrations/v1/users/{email}' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint suspende un usuario previamente creado en la plataforma.
HTTP Request
DELETE /integrations/v1/users/{email}
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea suspender | String | 255 | Si |
HTTP Response
Reactivar usuario
curl --location --request PUT 'https://api.demo.slangapp.com/integrations/v1/users/{email}' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint reactiva un usuario previamente creado en la plataforma.
HTTP Request
PUT /integrations/v1/users/{email}
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea reactivar | String | 255 | Si |
HTTP Response
Renovar usuario
curl --location --request PATCH 'https://api.demo.slangapp.com/integrations/v1/users/{email}' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}' \
--data-raw '{
"pro_ends_at": {iso_8601}
}'
Este endpoint renueva un usuario en la plataforma.
HTTP Request
PATCH /integrations/v1/users/{email}
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea renovar | String | 255 | Si |
Ejemplo del
body
{
"pro_ends_at": "2022-12-30 19:00:00.000000"
}
Body Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| pro_ends_at | La nueva fecha de expiración para el usuario | ISO 8601 | Si |
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"user": {
"id": 73453,
"name": "John Smith",
"email": "j.smith@slangapp.com",
"organization_id": 123,
"organization": "Slang",
"cohort_id": 321,
"cohort": "Slang Colombia",
"pro_ends_at": "2020-12-30 19:00:00.000000",
"suspended_at": "2020-12-30 19:00:00.000000"
}
}
Obtener usuario
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/users/{email}' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint retorna información sobre un usuario de la plataforma.
HTTP Request
GET /integrations/v1/users/{email}
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea buscar | String | 255 | Si |
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"user": {
"name": "John Smith",
"email": "j.smith@slangapp.com",
"organization_id": 123,
"organization": "Slang",
"cohort_id": 321,
"cohort": "Slang Colombia",
"pro_ends_at": "2020-12-30 19:00:00.000000",
"suspended_at": "2020-12-30 19:00:00.000000"
}
}
Tiers (licencias)
Obtener tiers
curl --location --request GET 'https://api.slangapp.com/integrations/v1/tiers' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint retorna los tiers de la organización con los detalles de número de licensias disponibles, fechas de inicio y expiración del plan.
HTTP Request
GET /integrations/v1/tiers
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"organization-tiers": [
{
"tier-id": 2,
"starts-at": "2025-07-14T17:36:26.398-04:00",
"ends-at": "2025-12-31T00:00:00.000-05:00",
"quantity": 1000,
"trial": false,
"tier-name": "Standard",
"available-licenses": 723
},
{
"tier-id": 4,
"starts-at": "2025-07-14T17:36:26.398-04:00",
"ends-at": "2025-12-31T00:00:00.000-05:00",
"quantity": 20,
"trial": false,
"tier-name": "Premium",
"available-licenses": 3
},
{
"tier-id": 6,
"starts-at": "2025-07-14T17:36:26.398-04:00",
"ends-at": "2025-12-31T00:00:00.000-05:00",
"quantity": 5,
"trial": false,
"tier-name": "Executive",
"available-licenses": 0
},
{
"tier-id": 1,
"starts-at": "2025-07-14T17:36:26.398-04:00",
"ends-at": "2025-12-31T23:59:59.000-05:00",
"quantity": 1000,
"trial": false,
"tier-name": "Starter",
"available-licenses": 9
}
]
}
Grupos
Crear grupos
curl --location --request POST 'https://api.slang.test/integrations/v1/groups' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}' \
--data-raw '{"name": "Testing API"}'
HTTP Request
POST /integrations/v1/groups
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"cohort":
{
"id": 324061,
"name": "Testing API",
"slug": "testing-api",
"studiable-course-ids": []
}
}
Obtener grupos
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/groups' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint retorna los identificadores de los grupos previamente creados en Slang a través del LMS.
HTTP Request
GET /integrations/v1/groups
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"cohorts": [
{
"id": 301,
"name": "Básico 1",
"slug": "basico-1",
"studiable-course-ids": []
},
{
"id": 456,
"name": "Avanzado 2",
"slug": "avanzado-2",
"studiable-course-ids": []
}
]
}
Estadísticas
Resultado de tests
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/users/{email}/tests' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint retorna los resultados de los tests de un usuario creado en Slang a través del LMS.
HTTP Request
GET /integrations/v1/users/{email}/tests
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea buscar | String | 255 | Si |
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"tests": [
{
"created-at": "2021-11-11T12:00:05.393-05:00",
"expires-at": null,
"score": null,
"name": "General English",
"band": null,
"state": "pending"
},
{
"created-at": "2022-01-20T14:20:34.846-05:00",
"expires-at": null,
"score": null,
"name": "CEFR English (old version)",
"band": null,
"state": "inProgress"
}
]
}
Progreso de cursos
curl --location --request GET 'https://api.demo.slangapp.com/integrations/v1/users/{email}/courses-progress' \
--header 'content-type: application/json' \
--header 'Authorization: Basic {token}'
Este endpoint retorna los resultados del progreso de cursos asignados a un usuario creado en Slang a través del LMS. El progreso está representado por un número entre 0 y 1, donde 0 indica que no hay progreso y 1 que el curso ha sido completado.
HTTP Request
GET /integrations/v1/users/{email}/courses-progress
URL Parameters
| Nombre | Descripción | Tipo | Longitud | Requerido |
|---|---|---|---|---|
| El email que se desea buscar | String | 255 | Si |
HTTP Response
application/json
Ejemplo de respuesta JSON
{
"courses": [
{
"id": 159,
"name": "Basic English",
"progress": 0.0
},
{
"id": 353,
"name": "COVID-19: English for Infectious Disease Control",
"progress": 0.34
},
{
"id": 462,
"name": "Beginner 1",
"progress": 1.0
}
]
}
Errores
| Error | Significado |
|---|---|
| 400 | Bad Request -- Petición inválida. |
| 401 | Unauthorized -- Autenticación fallida. |
| 404 | Not Found -- Recurso no encotrado. |
| 406 | Not Acceptable -- El formato del body no es json. |
| 409 | Conflict -- El recurso tiene un conflicto. |
| 429 | Too Many Requests -- Demasiadas peticiones. |
| 500 | Internal Server Error -- Problema en el servidor. |
| 503 | Service Unavailable -- Servicio no disponible. |