NAV
shell

Introducción

Bienvenido a la documentación del API de Slang.

Autenticación

Para autorizar incluya Authorization en 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:

  1. El usuario autorizado por la organización se suscribe a Slang a través de sus páginas y sistemas.

  2. 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.

  3. 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!

  4. 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.

Alt text

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
email 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
email 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
email 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
email 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
email 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
email 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
email 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
email 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.