Conversación
Historial del hilo actual.
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.
Historial del hilo actual.
Busca mensajes anteriores de esta conversación. Solo dentro del hilo actual.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.search |
| Herramienta MCP | conversation_search |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo, Voz, Chat, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
query: string // ≤ 200
limit?: integer // 1–10 · default 10
}Salida
{
items: Array<{
sequence: integer // -9007199254740991–9007199254740991
role: string
excerpt: string
createdAt: string
}>
}Lee un mensaje completo del hilo actual por su número.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.read |
| Herramienta MCP | conversation_read |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo, Voz, Chat, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
sequence: integer // 1–9007199254740991
page?: integer // 1–9007199254740991 · default 1
}Salida
{
sequence: integer // -9007199254740991–9007199254740991
role: string
text: string
hasMore: boolean
}Enseña una pregunta con botones de respuesta en el hilo. La respuesta llega como el siguiente mensaje de la persona. No guarda nada.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.choice |
| Herramienta MCP | conversation_choice |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo |
| Estado | Disponible |
| Widget | choice |
Entrada
{
question: string // ≤ 300
options: string[] // ≤ 6 items
allowOther?: boolean // default true · Whether the person may write their own answer instead.
}Salida
{
question: string
options: string[]
allowOther: boolean
}Pide a la persona que adjunte un archivo al hilo (un manual de marca, un logo, una foto) con una zona para soltarlo. El archivo llega en su siguiente mensaje.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.request_file |
| Herramienta MCP | conversation_request_file |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Nödo |
| Estado | Disponible |
| Widget | file_request |
Entrada
{
purpose: string // ≤ 300
accept?: "image" | "pdf" | "document" | "any" // default "any"
multiple?: boolean // default false
}Salida
{
purpose: string
accept: "image" | "pdf" | "document" | "any"
multiple: boolean
}Abre una conversación vacía en la marca, con Nödo o con el equipo, opcionalmente ligada a un trabajo. Solo el equipo de Nömad abre notas internas.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.create |
| Herramienta MCP | conversation_threads_create |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
title: string // ≤ 160
workId?: string // uuid
audience: "brand" | "internal"
kind?: "agent" | "team"
}Salida
{
conversation: Record<string, unknown>
}Crea la conversación y su primer mensaje de una vez: el mensaje es el asunto. Los archivos subidos antes con un borrador (draftId) pasan a la conversación.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.start |
| Herramienta MCP | conversation_threads_start |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
kind: "agent" | "team"
content: string // ≤ 4000
idempotencyKey: string // uuid
workId?: string // uuid
draftId?: string // uuid
attachments?: Array<{
path: string // ≤ 600
name: string // ≤ 200
mime: string // ≤ 120
size: integer // –9007199254740991
}> // ≤ 10 items
mentions?: Array<{
type: "mention"
capability: string // ≤ 80
input?: Record<string, unknown> // default {}
label: string // ≤ 160
at?: {
start: integer // 0–9007199254740991
end: integer // 0–9007199254740991
}
}> // ≤ 6 items
inserts?: unknown[] // ≤ 4 items
screen?: {
path: string
title?: string
navigation?: boolean // default true
form?: "phone" | "tablet" | "desktop"
elements?: string[] // ≤ 40 items · default []
}
}Salida
{
messageId?: string | null
runId?: string | null
status?: string | null
conversation: {
id: string
brandId: string
title: string
workId: string | null
audience: string // `brand`, `internal` or `private`.
kind: string // `agent` (Nödo answers) or `team` (the people at Nömad).
state: string // `open`, `waiting_brand`, `waiting_team` or `closed`.
channel: string // `app`, `whatsapp` or `email`.
titleAuto: boolean
assignee: {
id: string
name: string
avatarUrl: string | null
}
| null
lastMessageAt: string | null
version: integer // -9007199254740991–9007199254740991
createdAt: string
updatedAt: string
}
}Escribe en una conversación de la marca como la persona: texto, archivos ya subidos, menciones y tarjetas del «+». En un chat con Nödo, Nödo responde.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.messages.send |
| Herramienta MCP | conversation_messages_send |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
content: string // ≤ 4000
idempotencyKey: string // uuid
visibility?: "shared" | "internal"
attachments?: Array<{
path: string // ≤ 600
name: string // ≤ 200
mime: string // ≤ 120
size: integer // –9007199254740991
}> // ≤ 10 items
mentions?: Array<{
type: "mention"
capability: string // ≤ 80
input?: Record<string, unknown> // default {}
label: string // ≤ 160
at?: {
start: integer // 0–9007199254740991
end: integer // 0–9007199254740991
}
}> // ≤ 6 items
inserts?: unknown[] // ≤ 4 items
screen?: {
path: string
title?: string
navigation?: boolean // default true
form?: "phone" | "tablet" | "desktop"
elements?: string[] // ≤ 40 items · default []
}
}Salida
{
messageId?: string | null
runId?: string | null
status?: string | null
}Cambia el título de una conversación que la persona puede ver.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.rename |
| Herramienta MCP | conversation_threads_rename |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
title: string // ≤ 160
}Salida
{
id: string
brandId: string
title: string
workId: string | null
audience: string // `brand`, `internal` or `private`.
kind: string // `agent` (Nödo answers) or `team` (the people at Nömad).
state: string // `open`, `waiting_brand`, `waiting_team` or `closed`.
channel: string // `app`, `whatsapp` or `email`.
titleAuto: boolean
assignee: {
id: string
name: string
avatarUrl: string | null
}
| null
lastMessageAt: string | null
version: integer // -9007199254740991–9007199254740991
createdAt: string
updatedAt: string
}Cierra o reabre una conversación con el equipo, con la misma regla de estado que la Bandeja.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.set_state |
| Herramienta MCP | conversation_threads_set_state |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
state: "open" | "closed"
}Salida
{
id: string
brandId: string
title: string
workId: string | null
audience: string // `brand`, `internal` or `private`.
kind: string // `agent` (Nödo answers) or `team` (the people at Nömad).
state: string // `open`, `waiting_brand`, `waiting_team` or `closed`.
channel: string // `app`, `whatsapp` or `email`.
titleAuto: boolean
assignee: {
id: string
name: string
avatarUrl: string | null
}
| null
lastMessageAt: string | null
version: integer // -9007199254740991–9007199254740991
createdAt: string
updatedAt: string
}La conversación «Briefing con Nödo» de una tarea: la crea la primera vez y después siempre devuelve la misma.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.task_briefing.open |
| Herramienta MCP | conversation_task_briefing_open |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
taskId: string // uuid
}Salida
{
conversation: Record<string, unknown>
}Un id de borrador para subir archivos antes de que exista la conversación.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.drafts.reserve |
| Herramienta MCP | conversation_drafts_reserve |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
draftId: string // uuid
}Borra un archivo subido para un mensaje que no llegó a enviarse. Un archivo que ya lleva un mensaje guardado no se toca.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.uploads.discard |
| Herramienta MCP | conversation_uploads_discard |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
path: string // ≤ 600
}Salida
{
ok: true
}Ejecuta un comando «/» en una conversación y lo escribe con su resultado, sin llamar a ningún modelo. Permisos y confirmaciones son los de la capacidad del comando.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.commands.run |
| Herramienta MCP | conversation_commands_run |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
capabilityId: string // ≤ 60
content: string // ≤ 4000
argument?: unknown
idempotencyKey: string // uuid
locale?: "es" | "en"
}Salida
{
messageId: string
}Vota en una encuesta del «+» de una conversación. Una elección vacía retira el voto.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.polls.vote |
| Herramienta MCP | conversation_polls_vote |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
messageId: string // uuid
pollId: string
optionIds: string[] // ≤ 10 items
}Salida
{
ok: true
poll: unknown
}Acepta o cancela un cambio que Nödo preparó en una tarjeta. Solo quien lo pidió; el cambio vuelve a pasar todos los permisos.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.confirmations.decide |
| Herramienta MCP | conversation_confirmations_decide |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
confirmationId: string // uuid
accept: boolean
}Salida
{
status: string
error: string | null
undoUntil?: string // date-time
}Aprueba o archiva una imagen que Nödo propuso en su galería. Pasa por library.asset.review con sus propios permisos.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.images.review |
| Herramienta MCP | conversation_images_review |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
assetId: string // uuid
decision: "approve" | "archive"
}Salida
{
ok: boolean
status?: "approved" | "archived"
error?: string
}Ejecuta la acción que declara una tarjeta de Nödo. La capacidad nombrada pasa por todos los permisos de la persona.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.cards.run |
| Herramienta MCP | conversation_cards_run |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
kind: string // ≤ 40
action: string // ≤ 40
input: Record<string, unknown>
}Salida
{
ok: boolean
data?: unknown
error?: string
}Vuelve a leer una tarjeta viva con la misma entrada con la que se construyó.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.cards.refresh |
| Herramienta MCP | conversation_cards_refresh |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
capability: string // ≤ 80
input: Record<string, unknown>
}Salida
{
part?: unknown
error?: string
}«Deshacer» un cambio confirmado dentro de su ventana. Solo quien lo confirmó y una sola vez.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.cards.undo |
| Herramienta MCP | conversation_cards_undo |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
confirmationId: string // uuid
}Salida
{
ok: boolean
error?: string
}Crea una carpeta personal de chats con Nödo (sin id) o renombra y recolorea una propia.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.folders.save |
| Herramienta MCP | conversation_folders_save |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
folderId?: string // uuid
name: string // ≤ 60
tone?: string // ≤ 20
}Salida
{
ok: boolean
data?: Record<string, unknown>
error?: string
}Elimina una carpeta propia; sus chats vuelven a la lista. El equipo de Nömad nunca toca las carpetas de nadie.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.folders.delete |
| Herramienta MCP | conversation_folders_delete |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
folderId: string // uuid
}Salida
{
ok: boolean
error?: string
}Guarda el orden de todas las carpetas propias de la persona en la marca.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.folders.reorder |
| Herramienta MCP | conversation_folders_reorder |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
folderIds: string[] // ≤ 100 items
}Salida
{
ok: boolean
data?: integer // -9007199254740991–9007199254740991
error?: string
}Fija, archiva para uno mismo, mete en una carpeta o mueve la marca de leído. Solo cambia la vista de la persona.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.update_view |
| Herramienta MCP | conversation_threads_update_view |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
pinned?: boolean
archived?: boolean
folderId?: string | null
read?: boolean
}Salida
{
ok: boolean
data?: Record<string, unknown>
error?: string
}Quien creó un chat con Nödo lo hace privado o lo comparte con la marca.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.set_audience |
| Herramienta MCP | conversation_threads_set_audience |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
audience: "brand" | "private"
}Salida
{
ok: boolean
data?: {
audience: "brand" | "private"
version: integer // -9007199254740991–9007199254740991
}
error?: string
}Elimina un chat con Nödo: su creador o quien tiene el derecho de borrar de la marca. Las conversaciones con el equipo no se eliminan.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.delete |
| Herramienta MCP | conversation_threads_delete |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | Sí |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
}Salida
{
ok: boolean
error?: string
}«Pasar a mi Brand Manager» desde un chat con Nödo: una conversación nueva con el equipo, enlazada al chat y abierta con la nota de la persona.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.threads.escalate |
| Herramienta MCP | conversation_threads_escalate |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
note: string // ≤ 4000
requestKey: string // uuid
}Salida
{
ok: boolean
data?: {
conversationId: string
created: boolean
}
error?: string
}Encola un borrador de Nödo para un trabajo con el modelo y el presupuesto de IA de la marca.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.agent_runs.start |
| Herramienta MCP | conversation_agent_runs_start |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
workId: string // uuid
taskId?: string // uuid
request: string // ≤ 4000
idempotencyKey: string // uuid
}Salida
{
id: string | null
status: "queued" | "pending_dispatch" | "not_configured" | "model_unavailable"
}Pide parar una ejecución de Nödo en curso. Solo quien la ve: su conversación, o quien la pidió.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.agent_runs.cancel |
| Herramienta MCP | conversation_agent_runs_cancel |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
runId: string // uuid
}Salida
{
ok: true
}Aprueba (la guarda como archivo de la marca) o rechaza el texto que entregó una ejecución de Nödo.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.deliveries.review |
| Herramienta MCP | conversation_deliveries_review |
| Alcance | conversation.write |
| Rol mínimo | Miembro |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
runId: string // uuid
version: integer // –9007199254740991
status: "approved" | "rejected"
}Salida
{
data: Record<string, unknown>
}Envía un ticket a soporte de Nömad como la persona, con captura, archivos del borrador y tarjetas del «+».
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.feedback.submit |
| Herramienta MCP | conversation_feedback_submit |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
type: "bug" | "suggestion"
message: string // ≤ 20000
pageUrl?: string | null
userAgent?: string | null
brand?: string | null
ticketId?: string | null
imageBase64?: string | null
imageMimeType?: string | null
attachments?: unknown[] // ≤ 20 items
inserts?: unknown[] // ≤ 4 items
clientIp?: string | null
}Salida
{
ok: true
}Quita un archivo de un ticket que la persona aún está escribiendo, mientras ningún ticket tenga ese id.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.feedback.discard_upload |
| Herramienta MCP | conversation_feedback_discard_upload |
| Alcance | conversation.write |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, Pantallas, Apps |
| Estado | Disponible |
Entrada
{
ticketId: string // uuid
path: string // ≤ 600
}Salida
{
ok: true
}Cuántas conversaciones de la marca tienes sin leer (el número de «Mensajes» en el menú).
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.unread_count |
| Herramienta MCP | conversation_unread_count |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
asClient?: boolean // Read as the brand sees it (a staff viewer previewing as client). Only narrows.
}Salida
{
count: integer // 0–9007199254740991
}La lista de «Mensajes» como la ve la persona: hilos con el equipo y chats con Nödo, con su carpeta, fijado, archivo y lectura. offset lee la siguiente página de chats con Nödo.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.inbox.list |
| Herramienta MCP | conversation_inbox_list |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
offset?: integer // 0–10000
}Salida
{
team: Array<{
conversation: {
id: string
brandId: string
title: string
workId: string | null
audience: string // `brand`, `internal` or `private`.
kind: string // `agent` (Nödo answers) or `team` (the people at Nömad).
state: string // `open`, `waiting_brand`, `waiting_team` or `closed`.
channel: string // `app`, `whatsapp` or `email`.
titleAuto: boolean
assignee: {
id: string
name: string
avatarUrl: string | null
}
| null
lastMessageAt: string | null
version: integer // -9007199254740991–9007199254740991
createdAt: string
updatedAt: string
}
createdBy: string | null
lastSequence: integer // -9007199254740991–9007199254740991
preview: string | null // Last shared message, one line.
previewAuthor: {
kind: string // `self`, `nodo`, `staff` or `member`.
name?: string
}
| null
unread: boolean
folderId: string | null
pinnedAt: string | null
archivedAt: string | null
}>
nodo: Array<{
conversation: {
id: string
brandId: string
title: string
workId: string | null
audience: string // `brand`, `internal` or `private`.
kind: string // `agent` (Nödo answers) or `team` (the people at Nömad).
state: string // `open`, `waiting_brand`, `waiting_team` or `closed`.
channel: string // `app`, `whatsapp` or `email`.
titleAuto: boolean
assignee: {
id: string
name: string
avatarUrl: string | null
}
| null
lastMessageAt: string | null
version: integer // -9007199254740991–9007199254740991
createdAt: string
updatedAt: string
}
createdBy: string | null
lastSequence: integer // -9007199254740991–9007199254740991
preview: string | null // Last shared message, one line.
previewAuthor: {
kind: string // `self`, `nodo`, `staff` or `member`.
name?: string
}
| null
unread: boolean
folderId: string | null
pinnedAt: string | null
archivedAt: string | null
}>
nodoNextOffset: integer | null // Offset of the next page of Nödo chats; null when every chat is here.
archivedCount: integer // -9007199254740991–9007199254740991
}Lo que «Mensajes» pinta primero cuando va sobre el motor de sincronización, leído en una sola foto: los hilos de la marca (los más recientes y los que fijaste o archivaste en una carpeta) y, de tu propio grupo, tus chats privados, tus marcas de lectura, fijados, archivos y carpetas en esa marca, con el seq de cada grupo. Es parcial: el cliente completa los dos grupos con sync.bootstrap.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.inbox.seed |
| Herramienta MCP | conversation_inbox_seed |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | Pantallas, Apps, API |
| Estado | Disponible |
Entrada
{
limit?: integer // 1–200 · Latest brand threads and private chats to include (100 by default).
}Salida
{
brand: {
group: string
seq: integer // 0–9007199254740991
records: Array<{
entity: string
id: string // uuid
version: string
data: Record<string, unknown>
}>
complete: false
shapes: Record<string, integer>
}
person: {
group: string
seq: integer // 0–9007199254740991
records: Array<{
entity: string
id: string // uuid
version: string
data: Record<string, unknown>
}>
complete: false
shapes: Record<string, integer>
}
}Un hilo que pide un enlace, con el estado de la persona sobre él; thread: null si no lo puede ver.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.inbox.thread |
| Herramienta MCP | conversation_inbox_thread |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
}Salida
{
thread: Record<string, unknown> | null
}Lo que la persona archivó para sí («Archivados»).
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.inbox.archived |
| Herramienta MCP | conversation_inbox_archived |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
threads: Record<string, unknown>[]
}Títulos y texto compartido de los hilos que la persona puede ver.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.inbox.search |
| Herramienta MCP | conversation_inbox_search |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
query: string // ≤ 200
}Salida
{
hits: Record<string, unknown>[]
}Una página de mensajes de un hilo que la persona puede ver, con sus confirmaciones. cursor va hacia atrás; after lee solo lo posterior a la secuencia que ya tienes.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.messages.page |
| Herramienta MCP | conversation_messages_page |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{
conversationId: string // uuid
cursor?: string // ≤ 30
after?: string
}Salida
{
items: Array<{
id: string
sequence: integer // -9007199254740991–9007199254740991
role: string // `user`, `assistant` or `system`.
content: string
attachments: Array<{
path: string
name: string
mime: string
size: number
url: string
}>
author: {
id: string
name: string
avatarUrl: string | null
isStaff: boolean
}
| null
visibility: string
channelMeta: {
via?: string
}
| null
runId: string | null
parts: unknown[]
createdAt: string
}>
confirmations: Record<string, {
status: string
mine: boolean
}>
nextCursor: string | null
activeRun: {
id: string
status: string
partialText: string | null // What Nödo has written so far.
}
| null
latestRun: {
id: string
status: string
errorCode: string | null
}
| null
version: integer // -9007199254740991–9007199254740991
}El hilo abierto más reciente con el equipo de Nömad en la conversación principal de la marca, y su primera página de mensajes; nada si no hay.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.team.latest |
| Herramienta MCP | conversation_team_latest |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
conversationId: string | null
page: Record<string, unknown> | null
}Si la persona puede escribir, crear notas internas o mejorar el plan desde una tarjeta, si actúa como equipo y su nombre; si el plan de la marca incluye Brand Manager, el plan actual con su marca y los planes que lo incluyen.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.access |
| Herramienta MCP | conversation_access |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
canWrite: boolean
canCreateInternal: boolean
isStaff: boolean
canManageBilling: boolean
viewer: {
id: string
name: string
}
planIncludesManager: boolean // default true
plan: {
name: string
mark: string | null
}
| null // default null
managerPlans: Array<{
name: string
mark: string | null
}> // default []
}Lo que espera a la marca o ha cambiado hoy, una fila por cosa con su sitio para actuar, y lo que la Tienda tiene para lo que más necesita, en el idioma de quien lee. Es la tarjeta «Hoy» encima de una conversación nueva con Nödo. Sin modelo.
| Campo | Valor |
|---|---|
| Tipo | Lectura |
| Método HTTP | POST /api/v1/conversation.today |
| Herramienta MCP | conversation_today |
| Alcance | conversation.read |
| Rol mínimo | Lector |
| Confirmación humana | No |
| Puertas | API, MCP, Pantallas, Apps, Nödo |
| Estado | Disponible |
Entrada
{}Salida
{
day: string
text: string
rows: Array<{
kind: "approval" | "result" | "calendar" | "task" | "genome" | "setup" | "connection" | "question" | "stats" | "offer"
title: string // ≤ 160
meta?: string // ≤ 200
href?: string // ≤ 300
action?: "open" | "review" | "answer" | "connect"
}> // ≤ 6 items
summary: string // ≤ 1500
}Antes de dictar: devuelve una URL firmada de un solo uso (2 h) donde subir el audio (hasta 12 MB) y la ruta que después se pasa a conversation.dictation.transcribe.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.dictation.prepare_upload |
| Herramienta MCP | conversation_dictation_prepare_upload |
| Alcance | conversation.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | Apps |
| Estado | Disponible |
Entrada
{
mimeType: string // ≤ 100
fileSize: integer // –9007199254740991
}Salida
{
storagePath: string
uploadUrl: string // uri
token: string
contentType: "audio/webm" | "audio/mp4" | "audio/mpeg" | "audio/wav" | "audio/ogg" | "audio/aac" | "audio/flac"
}Transcribe el audio subido con conversation.dictation.prepare_upload y lo borra. Devuelve el texto; la persona decide si lo envía. Si nombras una marca que alcanzas, el coste se apunta en ella.
| Campo | Valor |
|---|---|
| Tipo | Escritura |
| Método HTTP | POST /api/v1/conversation.dictation.transcribe |
| Herramienta MCP | conversation_dictation_transcribe |
| Alcance | conversation.write |
| Rol mínimo | self |
| Confirmación humana | No |
| Puertas | Apps |
| Estado | Disponible |
Entrada
{
storagePath: string // ≤ 300
brandId?: string | null
language?: string | null
context?: string | null
}Salida
{
text: string
}Actualizado el 1 de enero de 1970