Conexiones
Redes, web y analítica conectadas.
Privacidad y analítica
Utilizamos cookies técnicas necesarias y, solo si das tu consentimiento, analítica y pixels de marketing para mejorar la web y medir campañas.
Redes, web y analítica conectadas.
Integraciones de la marca (redes, web, analítica) con su estado y el catálogo disponible.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/connections.list |
| Herramienta MCP | connections_list |
| Alcance | connections.read |
| Rol mínimo | Admin |
| Confirmación humana | No |
| Puertas | Nödo, Voz, MCP, API, Chat, Pantallas, Apps |
| Estado | Disponible |
| Widget | list |
Entrada
{
includeCatalog?: boolean // default false
}Salida
{
items: Array<{
id: string // uuid
provider: string // Provider key, e.g. instagram, wordpress, google_analytics.
account: string | null
status: "connected" | "needs_attention" | "disconnected" | "pending_setup"
connectedAt: string | null
attention?: {
state: "reconnect" | "permissions" | "expiring" | "paused" | "rate_limited" // `reconnect`: it stopped working and only a new sign-in fixes it. `permissions`: some permissions are missing. `expiring`: access ends at `renewBy` unless someone signs in again. `paused`: paused in Nömad. `rate_limited`: the network paused requests until `until`; nothing to do.
cause: "password_changed" | "security_checkpoint" | "session_expired" | "app_removed" | "page_role_removed" | "missing_permissions" | "instagram_page_link" | "account_restricted" | "rate_limited" | "provider_unavailable" | "token_expiry" | "data_access_expiry" | "unknown" | null // Why, in plain terms: password_changed (the person who connected it changed their password), security_checkpoint (the network asks them to complete a security check), session_expired, app_removed (Nömad was removed from the connected apps), page_role_removed (they no longer manage the page), missing_permissions, instagram_page_link (the Instagram account is no longer linked to its Facebook page), account_restricted, token_expiry (sign-in access ends), data_access_expiry (Meta asks to confirm data access every 90 days).
renewBy: string | null // When access ends unless someone signs in again (past when it already ended).
until: string | null // When a network pause lifts.
canReconnect: boolean // A new sign-in is the way out. Only a brand owner or admin can do it, in Nömad › Connections.
}
| null // Present when the account needs a person or ends soon; null when it is fine.
}>
catalog?: Array<{
provider: string
name: string
available: boolean
}>
}Devuelve el enlace para autorizar una cuenta del proveedor. Una persona lo abre y autoriza; nunca se piden contraseñas ni claves en la conversación. En las apps, el enlace queda atado a esa instalación y vuelve a la app; después se eligen las cuentas con connections.setup_resources y connections.resources_attach.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.connect |
| Herramienta MCP | connections_connect |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps, API, MCP |
| Estado | Disponible |
| Widget | confirm |
Entrada
{
provider: string // ≤ 60 · Product key to connect, as connections.list / connections.overview name it.
mode?: "profile" | "organization" // LinkedIn only: the member profile or a Page.
variant?: string // ≤ 60 · Way to connect when the product offers several (Instagram); omitted = the default.
account?: string // ≤ 253 · Login hint for the provider.
platform?: "ios" | "android" // Apps only: the platform the consent returns to.
clientBindingHash?: string // Apps only: base64url SHA-256 of the secret the app keeps for this consent.
}Salida
{
authorizationUrl: string // uri
expiresAt: string | null // When the started consent lapses (apps); null for a link that starts it when opened.
clientBinding: "bound" | "none" // `bound`: tied to this app installation.
}Desconecta una integración. Las publicaciones programadas en esa cuenta dejan de salir.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.disconnect |
| Herramienta MCP | connections_disconnect |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Nödo, MCP, API, Chat, Pantallas, Apps |
| Estado | Próximamente |
| Widget | confirm |
Entrada
{
connectionId: string // uuid
}Salida
{
ok: true
id?: string
revision?: integer // -9007199254740991–9007199254740991
}Tras dar permiso en la red, las cuentas y páginas que esa autorización alcanza, para elegir cuáles conectar. Desde las apps lleva la prueba de que la autorización la empezó esa instalación.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/connections.setup_resources |
| Herramienta MCP | connections_setup_resources |
| Alcance | connections.read |
| Rol mínimo | Admin |
| Confirmación humana | No |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
grantId: string // uuid
clientBindingSecret?: string
integrationCode?: string
}Salida
{
resources: Array<{
id: string // uuid · Pass in `externalResourceIds` of `connections.resources_attach`.
productId: string
resourceType: string
displayName: string
handle: string | null
avatarUrl: string | null
alreadyConnected: boolean // Connected to this brand already.
unavailable: boolean // Cannot be attached here (it does not say why).
upgradesConnection: boolean
reconnectsConnection: boolean
backsUpConnection: boolean // Finishing adds this authorization as a backup («Añadir como respaldo»).
reconnectsFromOtherAccount: boolean
businessId: string | null
businessName: string | null
linkedPageId: string | null // Setup row of the Facebook Page an Instagram account is linked to, when listed.
}>
}Tras dar permiso en la red, conecta las cuentas elegidas de esa autorización. Instagram, Facebook y Threads traen sus últimos 90 días de publicaciones.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.resources_attach |
| Herramienta MCP | connections_resources_attach |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
grantId: string // uuid
externalResourceIds: string[] // ≤ 100 items
}Salida
{
connectionIds: string[]
}Desconecta una cuenta conectada y retira su autorización en la red si nada más la usa. Lo programado en ella se pausa.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.integration_disconnect |
| Herramienta MCP | connections_integration_disconnect |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brandIntegrationId: string // uuid
}Salida
{
remoteRevoked: boolean
revocation: {
revocation_status: string // `revoked`, `already_revoked`, `kept` (another account uses it) or `failed`.
} // What happened to the provider authorization.
}Descarta una autorización que se dio pero cuyas cuentas no se llegaron a conectar, y la retira en la red.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.setup_cancel |
| Herramienta MCP | connections_setup_cancel |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
grantId: string // uuid
}Salida
{
remoteRevoked: boolean
revocation: {
revocation_status: string // `revoked`, `already_revoked`, `kept` (another account uses it) or `failed`.
} // What happened to the provider authorization.
}Quita la autorización de respaldo de una persona en una cuenta conectada. Se retira en la red solo si nada más la usa.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.backup_remove |
| Herramienta MCP | connections_backup_remove |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brandIntegrationId: string // uuid
grantId: string // uuid
}Salida
{
revocationStatus: string
}Elige con qué autorización trabaja una cuenta conectada. Elegir un respaldo cambia a él ahora; tiene que funcionar.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.backup_primary_set |
| Herramienta MCP | connections_backup_primary_set |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
brandIntegrationId: string // uuid
grantId: string // uuid
}Salida
{
switched: boolean
}«Reintentar los N posts fallidos»: tras reconectar, vuelve a poner en cola lo que falló en esa cuenta mientras estaba caída, y lo envía ya.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.posts_retry_failed |
| Herramienta MCP | connections_posts_retry_failed |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
connectionId: string // uuid
}Salida
{
requested: integer // -9007199254740991–9007199254740991
retried: integer // -9007199254740991–9007199254740991
failed: integer // -9007199254740991–9007199254740991
}Conecta las cuentas de MailerLite o Brevo de la marca con su clave de API. La clave se guarda cifrada.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.email_api_key_connect |
| Herramienta MCP | connections_email_api_key_connect |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
providerSlug: "mailerlite" | "brevo"
apiKey: string // ≤ 1000
accountLabel?: string // ≤ 120
}Salida
{
connectionIds: string[]
}Conecta una web de WordPress con una contraseña de aplicación. La contraseña se guarda cifrada.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.wordpress_connect |
| Herramienta MCP | connections_wordpress_connect |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
siteUrl: string // ≤ 2048
username: string // ≤ 120
applicationPassword: string // ≤ 500
}Salida
{
connectionIds: string[]
}La prueba de revisión de LinkedIn: publica un texto con el publicador real y lo guarda para poder borrarlo después.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.verification_linkedin_publish |
| Herramienta MCP | connections_verification_linkedin_publish |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brandIntegrationId: string // uuid
message: string // ≤ 3000
confirmed: true
}Salida
{
permalink: string
remoteStatus: "published" | "processing"
auditId: string
}Borra en LinkedIn la publicación de prueba que hizo la revisión y lo deja anotado.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.verification_linkedin_delete |
| Herramienta MCP | connections_verification_linkedin_delete |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
auditId: string // ≤ 20
confirmed: true
}Salida
{
ok: true
}La prueba de verificación de Google: sube un vídeo de la Biblioteca con el publicador real de YouTube, privado por defecto.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.verification_youtube_publish |
| Herramienta MCP | connections_verification_youtube_publish |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
brandIntegrationId: string // uuid
brandFileId: string // uuid
title: string // ≤ 100
description?: string // ≤ 5000 · default ""
privacyStatus?: "private" | "unlisted" | "public" // default "private"
confirmed: true
}Salida
{
permalink: string
remoteStatus: "published" | "processing"
}Corta el acceso de una app externa (MCP) a la marca. Si era su último acceso, su autorización y sus sesiones también se cierran.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.external_access_revoke |
| Herramienta MCP | connections_external_access_revoke |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas, Apps |
| Estado | Disponible |
Entrada
{
grantId: string // uuid
}Salida
{
id: string
}Da a una app externa (MCP) que la persona ya autorizó acceso a la marca con los permisos elegidos.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/connections.external_access_grant |
| Herramienta MCP | connections_external_access_grant |
| Alcance | connections.write |
| Rol mínimo | Admin |
| Confirmación humana | Sí |
| Puertas | Pantallas |
| Estado | Disponible |
Entrada
{
clientId: string // ≤ 256
scopes: string[] // ≤ 20 items
}Salida
{
id: string
}Cuántas conexiones de la marca han dejado de funcionar o piden permisos nuevos (el aviso de la carcasa). Nulo si todas van bien.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/connections.attention |
| Herramienta MCP | connections_attention |
| Alcance | connections.read |
| Rol mínimo | Admin |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
summary: {
attentionCount: integer // -9007199254740991–9007199254740991
brokenCount: integer // -9007199254740991–9007199254740991
}
| null
}Las conexiones de la marca agrupadas como las muestra su inicio: cuántas, de qué y en qué estado.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/connections.overview |
| Herramienta MCP | connections_overview |
| Alcance | connections.read |
| Rol mínimo | Admin |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
overview: {
products: Array<{
id: string
slug: string
name: string
category: string // `channel`, `ads`, `analytics`, `tag_management`, `website` or `email_marketing`.
rolloutStatus: string // `planned`, `active`, `standby` or `disabled`.
defaultAccessMode: string
providerSlug: string
providerName: string
providerRolloutStatus: string
authStrategy: string // `oauth2`, `api_key`…
linkedinModeRollout: Record<string, string> | null
linkedinModeConfigured: Record<string, boolean> | null
implemented: boolean
configured: boolean
capabilities: string[]
requiredScopes: string[]
docsUrl: string | null
connections: Array<{
id: string
grantId: string
label: string | null
status: string // `connected`, `needs_attention`, `disconnected`, `pending_setup`…
accessMode: string
resourceType: string
externalId: string
displayName: string
handle: string | null
avatarUrl: string | null
connectedAt: string
lastErrorCode: string | null
renewBy: string | null // When access ends unless someone signs in again; null when it renews by itself.
renewReason: string | null // `token_expiry` or `data_access_expiry`; null without a deadline.
}> // Current, listed connections only.
}>
connectedCount: integer // -9007199254740991–9007199254740991
needsAttentionCount: integer // -9007199254740991–9007199254740991
}
}Actualizado el 1 de enero de 1970