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/meURL 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 ventanaX-RateLimit-RemainingPeticiones restantesX-RateLimit-ResetTimestamp (Unix) de reinicio de la ventanaSi se excede el límite, la API devuelve un 429 Too Many Requests.
Endpoints
/api/v1/meDevuelve 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"
}
}/api/v1/spacesLista 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 }
}/api/v1/spaces/:slugDevuelve 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 }
}
}/api/v1/spaces/:slug/postsLista 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 }
}/api/v1/posts/:idDevuelve 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 }
}
}/api/v1/eventsLista 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 }
}/api/v1/membersLista 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 ausente404Recurso no encontrado429Límite de peticiones excedido500Error interno del servidorComienza a integrar
Crea tu cuenta en Nexo y genera tu primera API key para empezar a construir integraciones.