Référence API
Leads
Les leads sont les personnes que Gemlead trouve sur X pour tes personas. Dana AI score chacun de 0 à 100, et un lead est chaud à partir de 60. Liste-les avec des filtres, ajoute tes propres métadonnées comme un ID de CRM, ou agis sur un lead comme tu le ferais dans l'app.
L'objet lead
Une personne que Gemlead a trouvée sur X pour un de tes personas, avec le score que Dana AI lui a donné et où elle en est dans ta prospection.
Attributs
- idstringIdentifiant unique du lead.
- objectstringToujours
lead. - profileobjectLe profil X du lead.
- scoreinteger ou nullÀ quel point le lead correspond à ton persona, de 0 à 100. Null tant qu'il n'est pas scoré.
- score_reasonstring ou nullPourquoi le lead a eu ce score, en une ou deux phrases.
- hotbooleanVaut true quand le score est de 60 ou plus.
- statusstringOù en est le lead dans ton pipeline.
pendingscoringscoredin_campaigncontactedin_conversationclosed - personaobject ou nullLe persona pour lequel le lead a été trouvé.
- campaignobject ou nullLa campagne du lead, s'il y en a une.
- conversation_idstring ou nullLa conversation avec le lead, dès qu'elle existe. Utilise-la avec Récupérer une conversation.
- locked_toobject ou nullLe seul compte X du propriétaire auquel cette personne est réservée. Un lead ne va qu'à un compte X, les autres ne le contactent donc jamais. Null tant que rien ne retient le lead.
- found_atstringDate à laquelle Gemlead a trouvé le lead, en ISO 8601.
- scored_atstring ou nullDate à laquelle le lead a été scoré, en ISO 8601.
- updated_atstringDate de la dernière modification du lead, en ISO 8601.
- metadataobjectTes propres paires clé-valeur, définies avec Modifier un 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": {}
}Lister les leads
Renvoie tes leads, les plus récemment scorés en premier par défaut. Combine les filtres pour obtenir exactement les leads que tu veux.
Paramètres de requête
- personastringSeulement les leads du persona avec cet ID.
- statusstringSeulement les leads avec ces statuts, séparés par des virgules, comme
scored,in_campaign.pendingscoringscoredin_campaigncontactedin_conversationclosed - score_minintegerSeulement les leads avec au moins ce score, de 0 à 100.
- score_maxintegerSeulement les leads avec au plus ce score, de 0 à 100.
- hotboolean
truepour les leads avec un score de 60 ou plus,falsepour les autres. - scored_afterstringSeulement les leads scorés après cette date, en ISO 8601.
- scored_beforestringSeulement les leads scorés avant cette date, en ISO 8601.
- found_afterstringSeulement les leads trouvés après cette date, en ISO 8601.
- found_beforestringSeulement les leads trouvés avant cette date, en ISO 8601.
- orderstringL'ordre de tri.
-scored_atpar défaut, les plus récemment scorés en premier.-scored_at-score-found_at - limitintegerNombre d'objets à renvoyer, de 1 à 100. 25 par défaut.
- cursorstringLe
next_cursorde la page précédente, pour obtenir la suivante. Voir Pagination.
Renvoie
Une liste d'objets lead.
Erreurs
- Un paramètre a une valeur que l'API n'accepte pas.
paramindique lequel.
curl -G https://gemlead.ai/api/v1/leads \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-d hot=true \
-d limit=10{
"object": "list",
"data": [
{
"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": {}
}
],
"has_more": true,
"next_cursor": "eyJzIjoiMjAyNi0xMS0wNVQxNDowMzo0MC4xMTdaIn0"
}Récupérer un lead
Renvoie un lead.
Paramètres de chemin
- idstringObligatoireL'ID du lead.
Renvoie
Un objet lead.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
curl https://gemlead.ai/api/v1/leads/msgOtJ8dvT \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"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": {}
}Modifier un lead
Ajoute tes propres métadonnées à un lead, ou le clôture quand tu en as fini avec lui. Clôturer un lead arrête les étapes de campagne encore en attente pour lui, et Gemlead ne lui écrit plus.
Paramètres de chemin
- idstringObligatoireL'ID du lead.
Paramètres du corps
- metadataobjectPaires clé-valeur fusionnées dans les métadonnées du lead. Clés de 40 lettres, chiffres,
_ou-au plus, valeurs en chaînes de 500 caractères au plus, 20 clés maximum. Mets une clé ànullou à une chaîne vide pour la retirer, oumetadataànullpour tout effacer. - statusstringIndique
closedpour clôturer le lead.closed
Renvoie
L'objet lead à jour.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- Un paramètre a une valeur que l'API n'accepte pas.
paramindique lequel. - Le corps contient un champ que cet endpoint n'accepte pas.
curl -X PATCH https://gemlead.ai/api/v1/leads/msgOtJ8dvT \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"crm_id": "hs_48213"
}
}'{
"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": {
"crm_id": "hs_48213"
}
}Rescorer un lead
Demande à Dana AI de rescorer le lead par rapport à son persona, par exemple après une modification de sa description. Coûte jusqu'à 2 crédits par lead : 1 pour le premier tri, 1 de plus pour le score approfondi s'il passe ce tri.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
L'objet lead.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
curl -X POST \
https://gemlead.ai/api/v1/leads/msgOtJ8dvT/rescore \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"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": {}
}Actualiser un lead
Relit le profil X du lead, pour une nouvelle bio, une nouvelle photo ou un nouveau nombre d'abonnés.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
L'objet lead à jour.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- La session du compte X a expiré. Reconnecte-le dans l'app, puis réessaie.
- X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
curl -X POST \
https://gemlead.ai/api/v1/leads/msgOtJ8dvT/refresh \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"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": {}
}Suivre un lead
Suit immédiatement le lead sur X depuis ton compte X.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
L'objet lead.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- Le lead n'a pas d'ID de compte X à suivre.
- La session du compte X a expiré. Reconnecte-le dans l'app, puis réessaie.
- X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
curl -X POST \
https://gemlead.ai/api/v1/leads/msgOtJ8dvT/follow \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"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": {}
}Ne plus suivre un lead
Arrête immédiatement de suivre le lead sur X depuis ton compte X.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
L'objet lead.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- Le lead n'a pas d'ID de compte X, on ne peut donc pas arrêter de le suivre.
- La session du compte X a expiré. Reconnecte-le dans l'app, puis réessaie.
- X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
curl -X POST \
https://gemlead.ai/api/v1/leads/msgOtJ8dvT/unfollow \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"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": {}
}Faire d'un lead une source
Fait d'un excellent lead une source de son persona, pour trouver plus de gens comme lui. Gemlead lit ses abonnements, ses abonnés ou ceux qui commentent ses posts.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Paramètres du corps
- methodstring
followinglit les abonnements du lead,competitor_followersses abonnés,competitor_commentsceux qui commentent ses posts.followingpar défaut.followingcompetitor_followerscompetitor_comments
Renvoie
Un objet avec le lead_id, son persona_id, la method et la nouvelle source, ou le nom d'utilisateur competitor_account pour competitor_comments.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
- Le lead n'appartient à aucun persona.
- Le persona a déjà ce compte comme source avec cette méthode.
- Le persona a déjà 100 comptes concurrents.
- Un paramètre a une valeur que l'API n'accepte pas.
paramindique lequel. - X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
curl -X POST \
https://gemlead.ai/api/v1/leads/msgOtJ8dvT/convert_to_source \
-H "Authorization: Bearer $GEMLEAD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"method": "following"
}'{
"object": "lead_conversion",
"lead_id": "msgOtJ8dvT",
"persona_id": "lvWBPnytpS",
"method": "following",
"source": {
"id": "s9KdT3pXwM",
"object": "source",
"persona_id": "lvWBPnytpS",
"method": "following",
"profile": {
"username": "pickswithmike",
"name": "Mike Picks",
"profile_image_url": "https://pbs.twimg.com/profile_images/1722093311/mike_400x400.jpg",
"followers_count": 8400,
"following_count": 1210,
"url": "https://x.com/pickswithmike"
},
"status": "pending",
"paused": false,
"error": null,
"read_following": true,
"read_followers": false,
"score_self": true,
"self_lead_id": "Lp4WqZ7sXe",
"origin_lead_id": "msgOtJ8dvT",
"stats": {
"leads": 1184,
"scored_leads": 1160,
"hot_leads": 212,
"avg_score": 44
},
"last_activity_at": "2026-11-05T14:03:40.117Z",
"last_scraped_at": "2026-11-05T14:02:11.482Z",
"created_at": "2026-09-14T09:21:05.300Z"
},
"competitor_account": null
}Supprimer un lead
Supprime un lead. Il disparaît de tes listes, toutes les campagnes s'arrêtent pour lui, et Gemlead ne ramène pas la même personne pour ce persona. Pour écarter quelqu'un de tous les personas, ajoute-le à la liste d'exclusion.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
Un objet avec l'id du lead et deleted à true.
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
curl -X DELETE https://gemlead.ai/api/v1/leads/msgOtJ8dvT \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"id": "msgOtJ8dvT",
"object": "lead",
"deleted": true
}L'objet origine du lead
Comment Gemlead a trouvé un lead, le post qui l'a fait remonter et chaque campagne où il se trouve.
Attributs
- objectstringToujours
lead_origin. - lead_idstringL'ID du lead.
- personaobject ou nullLe persona pour lequel il a été trouvé.
- methodstring ou nullComment il a été trouvé.
followingkeywordscompetitor_followerscompetitor_comments - found_querystring ou nullLa recherche par mots-clés qui l'a trouvé, pour
keywords. - source_usernamestring ou nullLa source ou le compte concurrent par lequel il a été trouvé.
- found_postobject ou nullLe post qui a fait remonter le lead, s'il y en a un.
- campaignstableau d'objectsLes campagnes du lead, chacune avec son
id, sonname, lestatusdu lead dans cette campagne, lamethodde la campagne et lestepoù se trouve le lead.
{
"object": "lead_origin",
"lead_id": "msgOtJ8dvT",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"found_query": "paid discord picks",
"source_username": null,
"found_post": {
"method": "keywords",
"query": "paid discord picks",
"post_id": "1985102233445566778",
"text": "Thinking of moving my paid discord picks to a real checkout. Any tips?",
"url": "https://x.com/i/status/1985102233445566778",
"posted_at": "2026-11-05T13:40:02.000Z",
"found_at": "2026-11-05T14:02:11.482Z"
},
"campaigns": [
{
"id": "c7RkQ2wLxe",
"name": "Tipsters warm intro",
"status": "waiting",
"method": "keywords",
"step": "Timer"
}
]
}Récupérer l'origine d'un lead
Renvoie comment Gemlead a trouvé le lead, le post qui l'a fait remonter et chaque campagne où il se trouve, avec son étape actuelle.
Paramètres de chemin
- lead_idstringObligatoireL'ID du lead.
Renvoie
Erreurs
- Aucun lead avec cet ID sur le compte de la clé.
curl https://gemlead.ai/api/v1/leads/msgOtJ8dvT/origin \
-H "Authorization: Bearer $GEMLEAD_API_KEY"{
"object": "lead_origin",
"lead_id": "msgOtJ8dvT",
"persona": {
"id": "lvWBPnytpS",
"name": "Tipsters"
},
"method": "keywords",
"found_query": "paid discord picks",
"source_username": null,
"found_post": {
"method": "keywords",
"query": "paid discord picks",
"post_id": "1985102233445566778",
"text": "Thinking of moving my paid discord picks to a real checkout. Any tips?",
"url": "https://x.com/i/status/1985102233445566778",
"posted_at": "2026-11-05T13:40:02.000Z",
"found_at": "2026-11-05T14:02:11.482Z"
},
"campaigns": [
{
"id": "c7RkQ2wLxe",
"name": "Tipsters warm intro",
"status": "waiting",
"method": "keywords",
"step": "Timer"
}
]
}