Referencia de la API

Conversaciones

Una conversación es tu hilo de DM con un lead en X, y su ID es el ID del lead. Lee todos los mensajes de un hilo, lístalos en bloque, responde desde tu cuenta de X y mantén en orden el tablero de Conversaciones. Las respuestas nuevas también llegan con el webhook reply.received.

El objeto conversation

Tu hilo de DM con un lead en X. Su ID es el ID del lead.

Atributos

  • idstring
    Identificador único de la conversación, el mismo que lead_id.
  • objectstring
    Siempre conversation.
  • lead_idstring
    El lead con el que hablas.
  • profileobject
    El perfil de X del lead, como en el objeto lead.
  • unreadboolean
    True si el último mensaje del lead aún no se ha leído.
  • last_message_atstring
    Cuándo se envió el último mensaje, en ISO 8601.
  • messages_countinteger
    Mensajes del hilo.
  • last_messageobject o null
    El último mensaje.
  • personaobject o null
    El buyer persona del lead.
  • columnobject o null
    La columna de tu tablero de Conversaciones en la que está la conversación, como Interesados. Consulta Columnas del pipeline.
  • historystring
    complete cuando messages es el hilo completo. recent mientras Gemlead solo guarda los últimos mensajes de un hilo largo, antes de leer el resto desde X una sola vez. Solo con messages.
    completerecent
  • messagesarray de objects
    Todos los mensajes del hilo, primero los más antiguos. Cuando obtienes una conversación, o cuando las listas con include_messages.
El objeto conversation
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  }
}

Listar conversaciones

GET/v1/conversationsScope readMCPlist_conversations

Devuelve tus conversaciones, de la más reciente a la más antigua.

Parámetros de consulta

  • unreadboolean
    true solo para las conversaciones no leídas.
  • personastring
    Solo las conversaciones con leads del buyer persona con este ID.
  • include_messagesboolean
    true para obtener cada conversación con todos sus mensajes, primero los más antiguos, y history. Las páginas pesan más, así que mantén limit en 25 o menos.
  • limitinteger
    Cuántos objetos devolver, de 1 a 100. 25 por defecto.
  • cursorstring
    El next_cursor de la página anterior, para obtener la siguiente. Consulta Paginación.

Devuelve

Una lista de objetos conversation, con messages solo cuando include_messages es true.

Errores

  • Un parámetro tiene un valor que la API no acepta. param lo indica.
GET/v1/conversations
curl -G https://gemlead.ai/api/v1/conversations \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -d unread=true
Respuesta200
{
  "object": "list",
  "data": [
    {
      "id": "msgOtJ8dvT",
      "object": "conversation",
      "lead_id": "msgOtJ8dvT",
      "profile": {
        "x_user_id": "1460283925",
        "username": "jane_builds",
        "name": "Jane Doe",
        "bio": "Runs a paid trading community. Daily setups, no hype.",
        "followers_count": 12400,
        "following_count": 380,
        "location": "Austin, TX",
        "website": "https://janedoe.com",
        "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
        "verified": true,
        "url": "https://x.com/jane_builds"
      },
      "unread": true,
      "last_message_at": "2026-11-06T08:12:44.000Z",
      "messages_count": 4,
      "last_message": {
        "id": "1985321409876543210",
        "object": "message",
        "direction": "inbound",
        "text": "Yes, I want to charge for my Discord. How does it work?",
        "created_at": "2026-11-06T08:12:44.000Z",
        "media": [],
        "reactions": [],
        "encrypted": false,
        "reply_to_message_id": null
      },
      "persona": {
        "id": "lvWBPnytpS",
        "name": "Tipsters"
      },
      "column": {
        "id": "q7m2xk4p",
        "name": "Interested"
      }
    }
  ],
  "has_more": true,
  "next_cursor": "eyJzIjoiMjAyNi0xMS0wNVQxNDowMzo0MC4xMTdaIn0"
}

Obtener una conversación

GET/v1/conversations/:idScope readMCPget_conversation

Devuelve una conversación con todos sus mensajes, primero los más antiguos.

Parámetros de ruta

  • idstringObligatorio
    El ID de la conversación.

Devuelve

Un objeto conversation con messages y history.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
GET/v1/conversations/:id
curl https://gemlead.ai/api/v1/conversations/msgOtJ8dvT \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  },
  "history": "complete",
  "messages": [
    {
      "id": "1985321409876543210",
      "object": "message",
      "direction": "inbound",
      "text": "Yes, I want to charge for my Discord. How does it work?",
      "created_at": "2026-11-06T08:12:44.000Z",
      "media": [],
      "reactions": [],
      "encrypted": false,
      "reply_to_message_id": null
    },
    {
      "id": "1985329981234567890",
      "object": "message",
      "direction": "outbound",
      "text": "Happy to show you. Do you sell picks monthly or per event?",
      "created_at": "2026-11-06T08:20:03.000Z",
      "media": [],
      "reactions": [
        {
          "emoji": "👍",
          "direction": "inbound",
          "created_at": "2026-11-06T08:24:51.000Z"
        }
      ],
      "encrypted": false,
      "reply_to_message_id": "1985321409876543210"
    }
  ]
}

Marcar como leída

POST/v1/conversations/:conversation_id/mark_readScope writeMCPupdate_conversation

Marca la conversación como leída en Gemlead, y en X con una confirmación de lectura.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

El objeto conversation.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/mark_read
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/mark_read \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": false,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  }
}

Marcar como no leída

POST/v1/conversations/:conversation_id/mark_unreadScope writeMCPupdate_conversation

Marca la conversación como no leída en Gemlead.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

El objeto conversation.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/mark_unread
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/mark_unread \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  }
}

Mover una conversación

POST/v1/conversations/:conversation_id/moveScope writeMCPupdate_conversation

Mueve la conversación a otra columna del tablero de Conversaciones.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Parámetros del cuerpo

Devuelve

El objeto conversation.

Errores

POST/v1/conversations/:conversation_id/move
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/move \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "column_id": "z3c6lf8a"
  }'
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "z3c6lf8a",
    "name": "Call booked"
  }
}

Fijar una conversación

POST/v1/conversations/:conversation_id/pinScope writeMCPupdate_conversation

Fija la conversación en tu inbox de X.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

El objeto conversation.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/pin
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/pin \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  }
}

Desfijar una conversación

POST/v1/conversations/:conversation_id/unpinScope writeMCPupdate_conversation

Desfija la conversación en tu inbox de X.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

El objeto conversation.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/unpin
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/unpin \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "lead_id": "msgOtJ8dvT",
  "profile": {
    "x_user_id": "1460283925",
    "username": "jane_builds",
    "name": "Jane Doe",
    "bio": "Runs a paid trading community. Daily setups, no hype.",
    "followers_count": 12400,
    "following_count": 380,
    "location": "Austin, TX",
    "website": "https://janedoe.com",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1460283925/jane_400x400.jpg",
    "verified": true,
    "url": "https://x.com/jane_builds"
  },
  "unread": true,
  "last_message_at": "2026-11-06T08:12:44.000Z",
  "messages_count": 4,
  "last_message": {
    "id": "1985321409876543210",
    "object": "message",
    "direction": "inbound",
    "text": "Yes, I want to charge for my Discord. How does it work?",
    "created_at": "2026-11-06T08:12:44.000Z",
    "media": [],
    "reactions": [],
    "encrypted": false,
    "reply_to_message_id": null
  },
  "persona": {
    "id": "lvWBPnytpS",
    "name": "Tipsters"
  },
  "column": {
    "id": "q7m2xk4p",
    "name": "Interested"
  }
}

Eliminar una conversación

DELETE/v1/conversations/:conversation_idScope writeMCPdelete_conversation

Elimina la conversación en Gemlead y en tu inbox de X. Su lead se detiene en todas las campañas. No se puede deshacer.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

Un objeto con el id de la conversación y deleted en true.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
DELETE/v1/conversations/:conversation_id
curl -X DELETE \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "msgOtJ8dvT",
  "object": "conversation",
  "deleted": true
}

El objeto message

Un DM de una conversación, enviado por ti o por el lead.

Atributos

  • idstring
    El ID del mensaje en X.
  • objectstring
    Siempre message.
  • directionstring
    inbound si lo escribió el lead, outbound si lo escribiste tú.
    inboundoutbound
  • textstring
    El texto del mensaje.
  • created_atstring
    Cuándo se envió, en ISO 8601.
  • mediaarray de objects
    Lo que lleva adjunto el mensaje, cada elemento con su type y su url. Las imágenes de X llegan a través de un enlace de Gemlead.
  • reactionsarray de objects
    Las reacciones con emoji del mensaje, primero las más antiguas, una por persona y emoji.
  • encryptedboolean
    true para un mensaje de X Chat que Gemlead aún no puede leer. Su text y su media siguen vacíos hasta que el código de X Chat lo desbloquee.
  • reply_to_message_idstring o null
    El ID del mensaje al que responde, null si no responde a ninguno.
El objeto message
{
  "id": "1985321409876543210",
  "object": "message",
  "direction": "inbound",
  "text": "Yes, I want to charge for my Discord. How does it work?",
  "created_at": "2026-11-06T08:12:44.000Z",
  "media": [],
  "reactions": [],
  "encrypted": false,
  "reply_to_message_id": null
}

Listar mensajes

GET/v1/conversations/:conversation_id/messagesScope readMCPlist_messages

Devuelve todo el historial de una conversación desde X, primero lo más reciente, página a página.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Parámetros de consulta

  • limitinteger
    Cuántos mensajes devolver, de 1 a 50. 25 por defecto.
  • cursorstring
    El next_cursor de la página anterior, para mensajes más antiguos.

Devuelve

Una lista de objetos message.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • Un parámetro tiene un valor que la API no acepta. param lo indica.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
GET/v1/conversations/:conversation_id/messages
curl -G \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/messages \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -d limit=50
Respuesta200
{
  "object": "list",
  "data": [
    {
      "id": "1985329981234567890",
      "object": "message",
      "direction": "outbound",
      "text": "Happy to show you. Do you sell picks monthly or per event?",
      "created_at": "2026-11-06T08:20:03.000Z",
      "media": [],
      "reactions": [
        {
          "emoji": "👍",
          "direction": "inbound",
          "created_at": "2026-11-06T08:24:51.000Z"
        }
      ],
      "encrypted": false,
      "reply_to_message_id": "1985321409876543210"
    },
    {
      "id": "1985321409876543210",
      "object": "message",
      "direction": "inbound",
      "text": "Yes, I want to charge for my Discord. How does it work?",
      "created_at": "2026-11-06T08:12:44.000Z",
      "media": [],
      "reactions": [],
      "encrypted": false,
      "reply_to_message_id": null
    }
  ],
  "has_more": true,
  "next_cursor": "eyJzIjoiMjAyNi0xMS0wNVQxNDowMzo0MC4xMTdaIn0"
}

Enviar un mensaje

POST/v1/conversations/:conversation_id/messagesScope writeMCPsend_message

Envía un DM al lead desde tu cuenta de X, al instante. Envía texto, un archivo o ambos. El destinatario siempre es el de la conversación.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Parámetros del cuerpo

  • textstring
    El mensaje, hasta 10 000 caracteres. Obligatorio si no hay media.
  • mediaobject
    Un archivo que enviar con el mensaje. Indica su url, o su data con su mime_type. Gemlead detecta su tipo a partir del propio archivo. Las imágenes admiten hasta 5 MB y los GIF hasta 15 MB. Los videos y las notas de voz pueden pesar tanto como X acepte, envía una url para los que no caben en el cuerpo de una solicitud.
  • reply_to_message_idstring
    Responder a este mensaje, uno de los 20 últimos de la conversación. Una respuesta con archivos necesita una conversación de X Chat.

Devuelve

El mensaje enviado, con su conversation_id, su reply_to_message_id y su transport, x_chat o classic.

Errores

POST/v1/conversations/:conversation_id/messages
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/messages \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Happy to show you. Do you sell picks monthly or per event?"
  }'
Respuesta200
{
  "id": "1985329981234567890",
  "object": "message",
  "conversation_id": "msgOtJ8dvT",
  "direction": "outbound",
  "text": "Happy to show you. Do you sell picks monthly or per event?",
  "created_at": "2026-11-06T08:20:03.000Z",
  "media": [],
  "reactions": [],
  "encrypted": false,
  "reply_to_message_id": null,
  "transport": "x_chat"
}

Añadir una reacción

POST/v1/conversations/:conversation_id/messages/:message_id/reactionsScope writeMCPreact_to_message

Reacciona a un mensaje con un emoji, desde tu cuenta de X.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.
  • message_idstringObligatorio
    El ID del mensaje, uno de los 20 últimos de la conversación.

Parámetros del cuerpo

  • emojistringObligatorio
    El emoji, como ❤️ o 👍.

Devuelve

Un objeto con el conversation_id, el message_id y el emoji.

Errores

  • No hay ningún mensaje con este ID en la cuenta de la clave.
  • Falta un parámetro obligatorio. param lo indica.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/messages/:message_id/reactions
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/messages/1985321409876543210/reactions \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emoji": "👍"
  }'
Respuesta200
{
  "object": "reaction",
  "conversation_id": "msgOtJ8dvT",
  "message_id": "1985321409876543210",
  "emoji": "👍"
}

Quitar una reacción

DELETE/v1/conversations/:conversation_id/messages/:message_id/reactionsScope writeMCPreact_to_message

Quita tu reacción de un mensaje.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.
  • message_idstringObligatorio
    El ID del mensaje, uno de los 20 últimos de la conversación.

Parámetros de consulta

  • emojistringObligatorio
    El emoji que quitar.

Devuelve

La reacción con deleted en true.

Errores

  • No hay ningún mensaje con este ID en la cuenta de la clave.
  • Falta un parámetro obligatorio. param lo indica.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
DELETE/v1/conversations/:conversation_id/messages/:message_id/reactions
curl -X DELETE \
  "https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/messages/1985321409876543210/reactions?emoji=%F0%9F%91%8D" \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "object": "reaction",
  "conversation_id": "msgOtJ8dvT",
  "message_id": "1985321409876543210",
  "emoji": "👍",
  "deleted": true
}

Eliminar un mensaje

DELETE/v1/conversations/:conversation_id/messages/:message_idScope writeMCPdelete_message

Elimina un mensaje para ti, o para los dos si es tuyo y la conversación está en X Chat.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.
  • message_idstringObligatorio
    El ID del mensaje, uno de los 20 últimos de la conversación.

Parámetros de consulta

  • for_everyoneboolean
    true lo elimina para los dos, solo tus propios mensajes en X Chat. Por defecto false.

Devuelve

Un objeto con el id del mensaje, su conversation_id, deleted en true y for_everyone.

Errores

  • No hay ningún mensaje con este ID en la cuenta de la clave.
  • Un parámetro tiene un valor que la API no acepta. param lo indica.
  • La sesión de la cuenta de X caducó. Vuelve a conectarla en la app e inténtalo de nuevo.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
DELETE/v1/conversations/:conversation_id/messages/:message_id
curl -X DELETE \
  "https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/messages/1985329981234567890?for_everyone=true" \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "id": "1985329981234567890",
  "object": "message",
  "conversation_id": "msgOtJ8dvT",
  "deleted": true,
  "for_everyone": true
}

El objeto conversation translation

Si los mensajes de una conversación se traducen y a qué idioma.

Atributos

  • objectstring
    Siempre conversation_translation.
  • conversation_idstring
    El ID de la conversación.
  • enabledboolean
    Si sus mensajes se traducen a medida que llegan.
  • decidedboolean
    Si alguien la activó o desactivó, en lugar de dejar el valor por defecto de Gemlead.
  • source_languagestring o null
    El idioma del lead, una vez detectado.
  • languagestring o null
    El idioma al que se traducen los mensajes.
  • shownboolean
    Si la app muestra los mensajes traducidos.
El objeto conversation translation
{
  "object": "conversation_translation",
  "conversation_id": "msgOtJ8dvT",
  "enabled": true,
  "decided": true,
  "source_language": "es",
  "language": "en",
  "shown": true
}

Obtener los ajustes de traducción

GET/v1/conversations/:conversation_id/translationScope readMCPupdate_conversation_translation

Indica si la conversación se traduce y a qué idioma.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Devuelve

Un objeto conversation translation.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
GET/v1/conversations/:conversation_id/translation
curl \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/translation \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Respuesta200
{
  "object": "conversation_translation",
  "conversation_id": "msgOtJ8dvT",
  "enabled": true,
  "decided": true,
  "source_language": "es",
  "language": "en",
  "shown": true
}

Actualizar los ajustes de traducción

PATCH/v1/conversations/:conversation_id/translationScope writeMCPupdate_conversation_translation

Activa o desactiva la traducción de la conversación, y si la app muestra los mensajes traducidos.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Parámetros del cuerpo

  • enabledboolean
    Traducir los mensajes a medida que llegan, los tuyos y los del lead.
  • shownboolean
    Mostrar los mensajes traducidos en la app. Necesita enabled.
  • languagestring
    El idioma al que traducir. Por defecto, tu idioma en Gemlead o, si no, el inglés.
    enfresitderuptnljazhkoartrhiidplukvithsv

Devuelve

El objeto conversation translation actualizado.

Errores

PATCH/v1/conversations/:conversation_id/translation
curl -X PATCH \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/translation \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "shown": true,
    "language": "en"
  }'
Respuesta200
{
  "object": "conversation_translation",
  "conversation_id": "msgOtJ8dvT",
  "enabled": true,
  "decided": true,
  "source_language": "es",
  "language": "en",
  "shown": true
}

Traducir mensajes

POST/v1/conversations/:conversation_id/translateScope writeMCPtranslate_messages

Traduce los mensajes recientes de la conversación. Con la traducción desactivada, traduce los mensajes de uno en uno.

Parámetros de ruta

  • conversation_idstringObligatorio
    El ID de la conversación.

Parámetros del cuerpo

  • message_idsarray de strings
    Los mensajes que traducir, entre los 20 últimos. Por defecto todos, con la traducción activada.
  • languagestring
    El idioma al que traducir. Por defecto, tu idioma en Gemlead o, si no, el inglés.
    enfresitderuptnljazhkoartrhiidplukvithsv

Devuelve

Un objeto con el conversation_id, el language y, en data, el message_id, el text y la translation de cada mensaje.

Errores

  • No hay ninguna conversación con este ID en la cuenta de la clave.
  • Un parámetro tiene un valor que la API no acepta. param lo indica.
  • La traducción está desactivada y pediste más de un mensaje.
  • X o un servicio de Gemlead no respondió. No ha cambiado nada, vuelve a intentarlo en un minuto.
POST/v1/conversations/:conversation_id/translate
curl -X POST \
  https://gemlead.ai/api/v1/conversations/msgOtJ8dvT/translate \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message_ids": ["1985321409876543210"],
    "language": "en"
  }'
Respuesta200
{
  "object": "message_translations",
  "conversation_id": "msgOtJ8dvT",
  "language": "en",
  "data": [
    {
      "message_id": "1985321409876543210",
      "text": "Sí, quiero cobrar por mi Discord. Cómo funciona?",
      "translation": "Yes, I want to charge for my Discord. How does it work?"
    }
  ]
}