Volver al inicio

API de Nexo

Accede a los datos de la plataforma Nexo desde tus aplicaciones e integraciones. La API REST devuelve JSON y requiere autenticación via API key.

Autenticación

Todas las peticiones a la API requieren autenticación mediante una API key. Puedes crear y gestionar tus API keys desde la sección Ajustes → API Keys en tu cuenta de Nexo.

Incluye tu API key en el header Authorization:

curl -H "Authorization: Bearer nexo_tu_api_key_aqui" \
  https://tu-dominio.com/api/v1/me

URL base y formato

Todos los endpoints se encuentran bajo /api/v1/. Las respuestas tienen el formato:

{
  "data": { ... },       // El recurso o lista de recursos
  "meta": {              // Solo en listados
    "total": 42,
    "page": 1,
    "perPage": 20
  }
}

Los listados soportan paginación con los query params ?page=1&perPage=20. El valor máximo de perPage es 50.

Limites de uso

Cada API key tiene un límite de 100 peticiones por minuto. Los headers de respuesta incluyen información sobre el estado del rate limit:

X-RateLimit-LimitMáximo de peticiones por ventana
X-RateLimit-RemainingPeticiones restantes
X-RateLimit-ResetTimestamp (Unix) de reinicio de la ventana

Si se excede el límite, la API devuelve un 429 Too Many Requests.

Endpoints

GET/api/v1/me

Devuelve la información del usuario autenticado.

Ejemplo de respuesta

{
  "data": {
    "id": "clx...",
    "email": "usuario@ejemplo.com",
    "name": "Juan Pérez",
    "headline": "Desarrollador Full Stack",
    "bio": "...",
    "location": "Ciudad de México",
    "website": "https://ejemplo.com",
    "avatarUrl": null,
    "role": "USER",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "updatedAt": "2025-03-20T14:00:00.000Z"
  }
}
GET/api/v1/spaces

Lista todos los espacios públicos de la plataforma.

Parametros

pagenumberPágina (default: 1)
perPagenumberResultados por página (default: 20, máx: 50)

Ejemplo de respuesta

{
  "data": [
    {
      "id": "clx...",
      "name": "Desarrollo Web",
      "slug": "desarrollo-web",
      "description": "Espacio para discutir...",
      "icon": "code",
      "type": "DISCUSSION",
      "createdAt": "2025-01-10T...",
      "_count": { "members": 45, "posts": 120, "events": 3 }
    }
  ],
  "meta": { "total": 12, "page": 1, "perPage": 20 }
}
GET/api/v1/spaces/:slug

Devuelve los detalles de un espacio por su slug.

Ejemplo de respuesta

{
  "data": {
    "id": "clx...",
    "name": "Desarrollo Web",
    "slug": "desarrollo-web",
    "description": "Espacio para discutir...",
    "icon": "code",
    "type": "DISCUSSION",
    "isPublic": true,
    "createdAt": "2025-01-10T...",
    "updatedAt": "2025-03-15T...",
    "section": { "id": "clx...", "name": "Tecnología" },
    "_count": { "members": 45, "posts": 120, "events": 3, "resources": 8, "articles": 5, "links": 12 }
  }
}
GET/api/v1/spaces/:slug/posts

Lista los posts de un espacio. Ordenados por pin y fecha de creación.

Parametros

pagenumberPágina (default: 1)
perPagenumberResultados por página (default: 20, máx: 50)

Ejemplo de respuesta

{
  "data": [
    {
      "id": "clx...",
      "title": "Nuevo framework de JS",
      "content": "Acabo de descubrir...",
      "imageUrl": null,
      "isPinned": false,
      "createdAt": "2025-03-20T...",
      "updatedAt": "2025-03-20T...",
      "author": {
        "id": "clx...",
        "name": "María García",
        "headline": "Tech Lead",
        "avatarUrl": null
      },
      "_count": { "comments": 5, "likes": 12 }
    }
  ],
  "meta": { "total": 120, "page": 1, "perPage": 20 }
}
GET/api/v1/posts/:id

Devuelve un post con sus comentarios.

Ejemplo de respuesta

{
  "data": {
    "id": "clx...",
    "title": "Nuevo framework de JS",
    "content": "Acabo de descubrir...",
    "imageUrl": null,
    "isPinned": false,
    "createdAt": "2025-03-20T...",
    "author": { "id": "clx...", "name": "María García", ... },
    "space": { "id": "clx...", "name": "Desarrollo Web", "slug": "desarrollo-web" },
    "comments": [
      {
        "id": "clx...",
        "content": "Muy interesante!",
        "createdAt": "2025-03-20T...",
        "author": { "id": "clx...", "name": "Carlos López", ... }
      }
    ],
    "_count": { "likes": 12, "comments": 5 }
  }
}
GET/api/v1/events

Lista los próximos eventos de los espacios a los que pertenece el usuario autenticado.

Parametros

pagenumberPágina (default: 1)
perPagenumberResultados por página (default: 20, máx: 50)

Ejemplo de respuesta

{
  "data": [
    {
      "id": "clx...",
      "title": "Meetup de React",
      "description": "Discutiremos...",
      "startDate": "2025-04-15T18:00:00.000Z",
      "endDate": "2025-04-15T20:00:00.000Z",
      "location": "Oficinas Nexo",
      "isOnline": false,
      "space": { "id": "clx...", "name": "Desarrollo Web", "slug": "desarrollo-web" },
      "_count": { "rsvps": 23 }
    }
  ],
  "meta": { "total": 5, "page": 1, "perPage": 20 }
}
GET/api/v1/members

Lista los miembros de la plataforma.

Parametros

pagenumberPágina (default: 1)
perPagenumberResultados por página (default: 20, máx: 50)
searchstringFiltrar por nombre (búsqueda parcial)

Ejemplo de respuesta

{
  "data": [
    {
      "id": "clx...",
      "name": "Ana Martínez",
      "headline": "Product Manager",
      "location": "Bogotá",
      "avatarUrl": null,
      "createdAt": "2025-02-01T..."
    }
  ],
  "meta": { "total": 150, "page": 1, "perPage": 20 }
}

Códigos de error

401API key inválida o ausente
404Recurso no encontrado
429Límite de peticiones excedido
500Error interno del servidor

Comienza a integrar

Crea tu cuenta en Nexo y genera tu primera API key para empezar a construir integraciones.