Referencia de la API
Exportaciones
Una exportación genera un solo archivo con todos los leads que coinciden con tus filtros, para cuando hay demasiados leads para paginar. Créala, consúltala hasta que su status esté en ready y descarga su url. Puedes crear 10 exportaciones por hora por cuenta.
Con type en conversations, el archivo contiene en su lugar todas las conversaciones por DM de la cuenta, cada una con su lead y todos sus mensajes desde el primero. Está pensado para analizar tus DM en bloque, con un asistente de IA o con tu propio código, y ver qué mensaje de apertura consigue respuestas y qué respuesta ayuda a un lead a superar una objeción. Gemlead guarda su propia copia de todos tus DM sincronizada con X, ediciones y eliminaciones incluidas, así que el archivo se crea desde esa copia sin llamar a X y 1 500 conversaciones están listas en menos de un minuto.
El objeto export
Un archivo de leads o de conversaciones generado en segundo plano, para las extracciones grandes en las que paginar es demasiado lento.
Atributos
- idstringIdentificador único de la exportación.
- objectstringSiempre
export. - typestringLo que contiene el archivo, leads o conversaciones con sus mensajes.
leadsconversations - statusstring
processingmientras se genera el archivo, luegoreadyofailed.expiredcuando su enlace ha caducado.processingreadyfailedexpired - formatstringEl formato del archivo,
csvojsonlpara leads,jsonlomarkdownpara conversaciones.csvjsonlmarkdown - filtersobjectLos filtros con los que se creó la exportación, como en Listar leads o Listar conversaciones.
- row_countintegerLeads o conversaciones del archivo. La cifra crece mientras se genera el archivo. 100 000 leads o 20 000 conversaciones como máximo.
- total_countinteger o nullEn una exportación de conversaciones sin filtros, cuántas conversaciones tendrá el archivo, contadas al empezar a generarlo.
nullen los demás casos. - urlstring o nullDónde descargar el archivo, una vez listo. Funciona durante 24 horas, hasta
expires_at. - expires_atstring o nullCuándo deja de funcionar
url, en ISO 8601. - created_atstringCuándo se creó la exportación, en ISO 8601.
{
"id": "e4TnW8yHqA",
"object": "export",
"type": "leads",
"status": "ready",
"format": "csv",
"filters": {
"hot": true,
"persona": "lvWBPnytpS"
},
"row_count": 2134,
"total_count": null,
"url": "https://parsefiles.back4app.com/7Hn2kQ9xWm4LpR8tV3bZc6YdF1sJ0aUe/5f1c9e2b7a4d8c3e6f0b9a2d1c4e7f8a_gemlead-leads-e4TnW8yHqA.csv",
"expires_at": "2026-11-07T07:45:12.904Z",
"created_at": "2026-11-06T07:45:12.904Z"
}Crear una exportación
Empieza a generar un archivo de leads o de conversaciones. Responde al instante con la exportación en processing.
Parámetros del cuerpo
- typestringQué exportar.
leadspor defecto.leadsconversations - formatstringEl formato del archivo. Para leads,
csvojsonl,csvpor defecto. Para conversaciones,jsonlomarkdown,jsonlpor defecto.csvjsonlmarkdown - filtersobjectLos leads que exportar, con los filtros de Listar leads. Para conversaciones, solo
personayunread, como en Listar conversaciones.
Devuelve
Un objeto export con el estado processing y el código de estado HTTP 202.
Errores
- Falta un parámetro obligatorio.
paramlo indica. - Un parámetro tiene un valor que la API no acepta.
paramlo indica. - Más de 10 exportaciones en la última hora en la cuenta.
curl -X POST https://gemlead.ai/api/v1/exports \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"format": "csv",
"filters": {
"hot": true,
"persona": "lvWBPnytpS"
}
}'{
"id": "e4TnW8yHqA",
"object": "export",
"type": "leads",
"status": "processing",
"format": "csv",
"filters": {
"hot": true,
"persona": "lvWBPnytpS"
},
"row_count": 0,
"total_count": null,
"url": null,
"expires_at": null,
"created_at": "2026-11-06T07:45:12.904Z"
}Listar exportaciones
Devuelve tus exportaciones, primero las más recientes.
Parámetros de consulta
- limitintegerCuántos objetos devolver, de 1 a 100. 25 por defecto.
- cursorstringEl
next_cursorde la página anterior, para obtener la siguiente. Consulta Paginación.
Devuelve
Una lista de objetos export.
curl https://gemlead.ai/api/v1/exports \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"object": "list",
"data": [
{
"id": "e4TnW8yHqA",
"object": "export",
"type": "leads",
"status": "ready",
"format": "csv",
"filters": {
"hot": true,
"persona": "lvWBPnytpS"
},
"row_count": 2134,
"total_count": null,
"url": "https://parsefiles.back4app.com/7Hn2kQ9xWm4LpR8tV3bZc6YdF1sJ0aUe/5f1c9e2b7a4d8c3e6f0b9a2d1c4e7f8a_gemlead-leads-e4TnW8yHqA.csv",
"expires_at": "2026-11-07T07:45:12.904Z",
"created_at": "2026-11-06T07:45:12.904Z"
}
],
"has_more": false,
"next_cursor": null
}Obtener una exportación
Devuelve una exportación. Consúltala cada pocos segundos hasta que status esté en ready y luego descarga url.
Parámetros de ruta
- idstringObligatorioEl ID de la exportación.
Devuelve
Un objeto export.
Errores
- No hay ninguna exportación con este ID en la cuenta de la clave.
curl https://gemlead.ai/api/v1/exports/e4TnW8yHqA \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "e4TnW8yHqA",
"object": "export",
"type": "leads",
"status": "ready",
"format": "csv",
"filters": {
"hot": true,
"persona": "lvWBPnytpS"
},
"row_count": 2134,
"total_count": null,
"url": "https://parsefiles.back4app.com/7Hn2kQ9xWm4LpR8tV3bZc6YdF1sJ0aUe/5f1c9e2b7a4d8c3e6f0b9a2d1c4e7f8a_gemlead-leads-e4TnW8yHqA.csv",
"expires_at": "2026-11-07T07:45:12.904Z",
"created_at": "2026-11-06T07:45:12.904Z"
}Una conversación del archivo
Cada línea de un archivo jsonl de conversaciones, primero la conversación más reciente. Es el objeto conversation con su hilo completo, su lead y history. Un archivo markdown contiene lo mismo, con una transcripción por conversación.
Atributos
- idstringIdentificador único de la conversación.
- objectstringSiempre
conversation. - lead_idstringEl lead con el que hablas.
- profileobjectEl perfil de X del lead, como en el objeto lead.
- personaobject o nullEl buyer persona del lead.
- columnobject o nullLa columna de tu tablero de Conversaciones en la que está la conversación.
- unreadbooleanTrue si el último mensaje del lead aún no se ha leído.
- messages_countintegerMensajes en
messages. - first_message_atstring o nullCuándo se envió el primer mensaje, en ISO 8601.
- last_message_atstring o nullCuándo se envió el último mensaje, en ISO 8601.
- last_messageobject o nullEl último mensaje.
- leadobject o nullEl objeto lead, con su puntuación, su estado, su buyer persona y su campaña.
- historystring
completecuandomessageses el hilo completo.recentmientras Gemlead solo guarda los últimos mensajes de un hilo largo, antes de leer el resto desde X una sola vez.completerecent - messagesarray de objectsTodos los mensajes del hilo, primero los más antiguos, con su dirección, texto, fecha, adjuntos y reacciones. Los enlaces de los adjuntos funcionan durante 24 horas.
{
"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": 1,
"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"
},
"first_message_at": "2026-11-06T08:12:44.000Z",
"lead": {
"id": "msgOtJ8dvT",
"object": "lead",
"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"
},
"score": 86,
"score_reason": "Runs a paid trading community and asks how to collect payments for it.",
"hot": true,
"status": "scored",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"campaign": null,
"conversation_id": null,
"locked_to": null,
"found_at": "2026-11-05T14:02:11.482Z",
"scored_at": "2026-11-05T14:03:40.117Z",
"updated_at": "2026-11-05T14:03:40.117Z",
"metadata": {}
},
"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
}
]
}