Riferimento API
Export
Un export crea un solo file con tutti i lead che corrispondono ai tuoi filtri, per le estrazioni troppo grandi da paginare. Crealo, poi recuperalo finché il suo status è ready e scarica il suo url. Puoi creare 10 export all'ora per account.
Con type impostato su conversations, il file contiene invece tutte le conversazioni in DM dell'account, ognuna con il suo lead e tutti i messaggi dal primo. Serve a studiare i tuoi DM in blocco, con un assistente IA o con il tuo codice, per capire quale messaggio di apertura ottiene risposte e quale risposta aiuta un lead a superare un'obiezione. Gemlead conserva una propria copia di tutti i tuoi DM sincronizzata con X, modifiche ed eliminazioni comprese, quindi il file viene creato da quella copia senza chiamare X e 1 500 conversazioni sono pronte in meno di un minuto.
L'oggetto export
Un file di lead o di conversazioni creato in background, per le grandi estrazioni per cui la paginazione è troppo lenta.
Attributi
- idstringIdentificatore univoco dell'export.
- objectstringSempre
export. - typestringCosa contiene il file, lead oppure conversazioni con i loro messaggi.
leadsconversations - statusstring
processingmentre il file viene creato, poireadyofailed.expiredquando il suo link non esiste più.processingreadyfailedexpired - formatstringIl formato del file,
csvojsonlper i lead,jsonlomarkdownper le conversazioni.csvjsonlmarkdown - filtersobjectI filtri con cui è stato creato l'export, come in Elenca i lead o Elenca le conversazioni.
- row_countintegerLead o conversazioni nel file. Il numero cresce mentre il file viene creato. Al massimo 100 000 lead o 20 000 conversazioni.
- total_countinteger o nullPer un export di conversazioni senza filtri, quante conversazioni conterrà il file, contate all'inizio della creazione. Altrimenti
null. - urlstring o nullDove scaricare il file, quando è pronto. Funziona per 24 ore, fino a
expires_at. - expires_atstring o nullQuando
urlsmette di funzionare, ISO 8601. - created_atstringQuando è stato creato l'export, 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"
}Crea un export
Inizia a creare un file di lead o di conversazioni. Risponde subito con l'export in processing.
Parametri del body
- typestringCosa esportare. Di default
leads.leadsconversations - formatstringIl formato del file. Per i lead
csvojsonl, di defaultcsv. Per le conversazionijsonlomarkdown, di defaultjsonl.csvjsonlmarkdown - filtersobjectI lead da esportare, con i filtri di Elenca i lead. Per le conversazioni, solo
personaeunread, come in Elenca le conversazioni.
Restituisce
Un oggetto export con lo stato processing, e lo stato HTTP 202.
Errori
- Manca un parametro obbligatorio.
paramlo indica. - Un parametro ha un valore che l'API non accetta.
paramlo indica. - Più di 10 export nell'ultima ora sull'account.
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"
}Elenca gli export
Restituisce i tuoi export, dal più recente.
Parametri di query
- limitintegerQuanti oggetti restituire, da 1 a 100. Di default 25.
- cursorstringIl
next_cursordella pagina precedente, per avere la pagina successiva. Vedi Paginazione.
Restituisce
Un elenco di oggetti 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
}Recupera un export
Restituisce un export. Recuperalo ogni qualche secondo finché status è ready, poi scarica url.
Parametri di percorso
- idstringObbligatorioL'ID dell'export.
Restituisce
Un oggetto export.
Errori
- Nessun export con questo ID sull'account della chiave.
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 conversazione nel file
Ogni riga di un file jsonl di conversazioni, dalla conversazione più recente. È l'oggetto conversazione con il suo thread completo, il suo lead e history. Un file markdown contiene le stesse informazioni, con una trascrizione per conversazione.
Attributi
- idstringIdentificatore univoco della conversazione.
- objectstringSempre
conversation. - lead_idstringIl lead con cui stai parlando.
- profileobjectIl profilo X del lead, come nell'oggetto lead.
- personaobject o nullLa buyer persona del lead.
- columnobject o nullLa colonna della tua board Conversazioni in cui si trova la conversazione.
- unreadbooleanTrue quando l'ultimo messaggio del lead non è ancora stato letto.
- messages_countintegerMessaggi in
messages. - first_message_atstring o nullQuando è stato inviato il primo messaggio, ISO 8601.
- last_message_atstring o nullQuando è stato inviato l'ultimo messaggio, ISO 8601.
- last_messageobject o nullL'ultimo messaggio.
- leadobject o nullL'oggetto lead, con punteggio, stato, buyer persona e campagna.
- historystring
completequandomessagesè il thread completo.recentfinché Gemlead conserva solo gli ultimi messaggi di un thread lungo, prima di leggere il resto da X una sola volta.completerecent - messagesarray di objectsOgni messaggio del thread, dal più vecchio, con direzione, testo, orario, allegati e reazioni. I link degli allegati funzionano per 24 ore.
{
"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
}
]
}