Référence API

Personas

Un persona est un type d'acheteur que tu veux toucher, comme des tipsters ou des patrons d'agence. Gemlead trouve des leads pour chaque persona actif et les score par rapport à sa description. Ses sources décident où Gemlead cherche.

Un propriétaire qui a plusieurs comptes X peut partager un persona entre eux. Ils travaillent avec les mêmes sources, les mêmes réglages et les mêmes leads, chacun avec ses propres campagnes, et un lead ne va qu'à un seul compte X. Le partage de persona définit quels comptes X le partagent.

L'objet persona

Un type d'acheteur que tu veux toucher. Gemlead cherche les leads qui correspondent à chaque persona actif et les score par rapport à lui.

Attributs

  • idstring
    Identifiant unique du persona.
  • objectstring
    Toujours persona.
  • namestring
    Le nom court du persona, comme Tipsters.
  • descriptionstring
    Qui est cet acheteur, avec tes mots. Le scoring s'en sert.
  • marketstring
    Si tu vends à des entreprises ou à des particuliers.
    b2bb2c
  • statusstring
    Si Gemlead cherche des leads pour ce persona.
    activepaused
  • websitestring ou null
    Le site web de ce que tu vends à ce persona.
  • statsobject
    Les compteurs depuis la création du persona, et ceux du jour dans le fuseau horaire de ton profil.
  • sharingobject
    Les comptes X du propriétaire qui partagent le persona. Voir le partage de persona.
  • created_atstring
    Date de création du persona, en ISO 8601.
  • updated_atstring
    Date de la dernière modification du persona, en ISO 8601.
L'objet persona
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "name": "Tipsters",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "website": "https://example.com",
  "stats": {
    "leads_found": 18420,
    "leads_scored": 17960,
    "hot_leads": 2134,
    "avg_score": 41,
    "today": {
      "leads_found": 312,
      "hot_leads": 38,
      "dms_sent": 25,
      "replies": 4
    }
  },
  "sharing": {
    "home_account": {
      "id": "a9PzK2vRtM",
      "username": "acme"
    },
    "shared_with": [
      {
        "id": "Hq4TnW8cLm",
        "username": "acme_sales"
      }
    ]
  },
  "created_at": "2026-09-14T09:21:05.300Z",
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Lister les personas

GET/v1/personasScope readMCPlist_personas

Renvoie tes personas dans l'ordre de ta page Personas.

Paramètres de requête

  • limitinteger
    Nombre d'objets à renvoyer, de 1 à 100. 25 par défaut.
  • cursorstring
    Le next_cursor de la page précédente, pour obtenir la suivante. Voir Pagination.

Renvoie

Une liste d'objets persona.

GET/v1/personas
curl https://gemlead.ai/api/v1/personas \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "object": "list",
  "data": [
    {
      "id": "lvWBPnytpS",
      "object": "persona",
      "name": "Tipsters",
      "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
      "market": "b2c",
      "status": "active",
      "website": "https://example.com",
      "stats": {
        "leads_found": 18420,
        "leads_scored": 17960,
        "hot_leads": 2134,
        "avg_score": 41,
        "today": {
          "leads_found": 312,
          "hot_leads": 38,
          "dms_sent": 25,
          "replies": 4
        }
      },
      "sharing": {
        "home_account": {
          "id": "a9PzK2vRtM",
          "username": "acme"
        },
        "shared_with": [
          {
            "id": "Hq4TnW8cLm",
            "username": "acme_sales"
          }
        ]
      },
      "created_at": "2026-09-14T09:21:05.300Z",
      "updated_at": "2026-11-06T07:45:12.904Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Récupérer un persona

GET/v1/personas/:idScope readMCPget_persona

Renvoie un persona avec ses stats.

Paramètres de chemin

  • idstringObligatoire
    L'ID du persona.

Renvoie

Un objet persona.

Erreurs

GET/v1/personas/:id
curl https://gemlead.ai/api/v1/personas/lvWBPnytpS \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "name": "Tipsters",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "website": "https://example.com",
  "stats": {
    "leads_found": 18420,
    "leads_scored": 17960,
    "hot_leads": 2134,
    "avg_score": 41,
    "today": {
      "leads_found": 312,
      "hot_leads": 38,
      "dms_sent": 25,
      "replies": 4
    }
  },
  "sharing": {
    "home_account": {
      "id": "a9PzK2vRtM",
      "username": "acme"
    },
    "shared_with": [
      {
        "id": "Hq4TnW8cLm",
        "username": "acme_sales"
      }
    ]
  },
  "created_at": "2026-09-14T09:21:05.300Z",
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Créer un persona

POST/v1/personasScope writeMCPcreate_persona

Crée un persona et commence tout de suite à lui trouver des leads. Le scoring 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, dans la limite de daily_scoring_limit leads par jour. Ajoute des sources maintenant ou plus tard avec Ajouter une source.

Paramètres du corps

  • namestringObligatoire
    Le nom du persona, d'un à trois mots, comme Ghostwriters, 100 caractères au plus.
  • websitestring
    Le site web de ton produit, 500 caractères au plus. L'IA qui score les leads le lit.
  • descriptionstringObligatoire
    Qui est cet acheteur, avec des mots simples. L'IA score chaque lead de 0 à 100 par rapport à ce texte, c'est donc le champ le plus important. Il peut contenir tes propres règles de scoring. 12 000 caractères au plus.
  • marketstring
    b2b quand des entreprises achètent, b2c quand des particuliers achètent pour eux-mêmes. b2b par défaut.
    b2bb2c
  • keywordstableau de strings
    Des mots d'un profil ou de ses posts qui signalent un bon fit. 100 au plus, chacun de 100 caractères au plus.
  • competitorstableau de strings
    Des produits comme le tien, quelqu'un qui en utilise un correspond à ta cible. 100 au plus.
  • avoidtableau de strings
    Les profils à scorer bas, comme agencies ou students. 100 au plus.
  • min_followersinteger
    Les profils avec moins d'abonnés ne sont pas scorés, de 0 à 10 000 000. 100 par défaut.
  • include_closed_inboxesboolean
    Scorer aussi les personnes aux DM fermés, une campagne les contacte par un commentaire. true par défaut.
  • auto_expandboolean
    Laisser Gemlead ajouter des sources tout seul à partir des meilleurs leads quand les autres s'épuisent. false par défaut.
  • auto_expand_directionstring
    Où l'Extension auto doit chercher ensuite, avec des mots simples comme more US founders. 500 caractères au plus.
  • daily_scoring_limitinteger
    Le maximum de leads scorés par jour pour ce persona. Le scoring 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. De 100 à 20 000. Par défaut, le rythme de ton plan, 3 300 par jour sur Starter et 10 000 sur Business.
  • sourcestableau d'objects
    Jusqu'à 20 sources de départ. Les comptes d'investisseurs, d'accélérateurs et de médias sont refusés, ils n'amènent aucun acheteur.

Renvoie

Le nouvel objet persona.

Erreurs

  • Il manque un paramètre obligatoire. param indique lequel.
  • Un paramètre a une valeur que l'API n'accepte pas. param indique lequel.
  • Le corps contient un champ que cet endpoint n'accepte pas.
  • Le compte a déjà 100 personas.
  • Une source de départ est refusée, comme un investisseur ou un compte média. param vaut sources.
POST/v1/personas
curl -X POST https://gemlead.ai/api/v1/personas \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Tipsters",
    "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
    "market": "b2c",
    "keywords": ["tipster", "betting tips"],
    "sources": [
      {
        "username": "pickswithmike"
      }
    ]
  }'
Réponse200
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "name": "Tipsters",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "website": "https://example.com",
  "stats": {
    "leads_found": 18420,
    "leads_scored": 17960,
    "hot_leads": 2134,
    "avg_score": 41,
    "today": {
      "leads_found": 312,
      "hot_leads": 38,
      "dms_sent": 25,
      "replies": 4
    }
  },
  "sharing": {
    "home_account": {
      "id": "a9PzK2vRtM",
      "username": "acme"
    },
    "shared_with": [
      {
        "id": "Hq4TnW8cLm",
        "username": "acme_sales"
      }
    ]
  },
  "created_at": "2026-09-14T09:21:05.300Z",
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Activer un persona

POST/v1/personas/:persona_id/activateScope writeMCPupdate_persona

Relance un persona en pause. Ses sources sont de nouveau lues et ses leads scorés.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Renvoie

L'objet persona.

Erreurs

POST/v1/personas/:persona_id/activate
curl -X POST \
  https://gemlead.ai/api/v1/personas/lvWBPnytpS/activate \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "name": "Tipsters",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "website": "https://example.com",
  "stats": {
    "leads_found": 18420,
    "leads_scored": 17960,
    "hot_leads": 2134,
    "avg_score": 41,
    "today": {
      "leads_found": 312,
      "hot_leads": 38,
      "dms_sent": 25,
      "replies": 4
    }
  },
  "sharing": {
    "home_account": {
      "id": "a9PzK2vRtM",
      "username": "acme"
    },
    "shared_with": [
      {
        "id": "Hq4TnW8cLm",
        "username": "acme_sales"
      }
    ]
  },
  "created_at": "2026-09-14T09:21:05.300Z",
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Mettre un persona en pause

POST/v1/personas/:persona_id/pauseScope writeMCPupdate_persona

Met un persona en pause. Gemlead arrête de lire ses sources et de scorer ses leads, et ses leads sont conservés.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Renvoie

L'objet persona, avec son status à paused.

Erreurs

POST/v1/personas/:persona_id/pause
curl -X POST \
  https://gemlead.ai/api/v1/personas/lvWBPnytpS/pause \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "name": "Tipsters",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "paused",
  "website": "https://example.com",
  "stats": {
    "leads_found": 18420,
    "leads_scored": 17960,
    "hot_leads": 2134,
    "avg_score": 41,
    "today": {
      "leads_found": 312,
      "hot_leads": 38,
      "dms_sent": 25,
      "replies": 4
    }
  },
  "sharing": {
    "home_account": {
      "id": "a9PzK2vRtM",
      "username": "acme"
    },
    "shared_with": [
      {
        "id": "Hq4TnW8cLm",
        "username": "acme_sales"
      }
    ]
  },
  "created_at": "2026-09-14T09:21:05.300Z",
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Supprimer un persona

DELETE/v1/personas/:persona_idScope writeMCPdelete_persona

Supprime un persona avec ses sources et les leads qui ne sont passés par aucune campagne. Ses campagnes sont archivées. C'est irréversible.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Renvoie

Un objet avec l'id du persona, deleted à true, et les nombres archived_campaigns et deleted_sources. Ses leads sont supprimés en arrière-plan, donc deleted_leads vaut null et ils peuvent encore apparaître dans Lister les leads pendant quelques minutes.

Erreurs

DELETE/v1/personas/:persona_id
curl -X DELETE https://gemlead.ai/api/v1/personas/lvWBPnytpS \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "id": "lvWBPnytpS",
  "object": "persona",
  "deleted": true,
  "archived_campaigns": 1,
  "deleted_sources": 6,
  "deleted_leads": null
}

Réordonner les personas

POST/v1/personas/reorderScope writeMCPreorder_personas

Définit l'ordre de tes personas, celui que l'app affiche. Envoie chaque persona une seule fois.

Paramètres du corps

  • persona_idstableau de stringsObligatoire
    Tous les ID de persona du compte, dans le nouvel ordre.

Renvoie

Une liste d'objets persona dans le nouvel ordre.

Erreurs

POST/v1/personas/reorder
curl -X POST https://gemlead.ai/api/v1/personas/reorder \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "persona_ids": ["lvWBPnytpS", "pQ8nX2rTjk"]
  }'
Réponse200
{
  "object": "list",
  "data": [
    {
      "id": "lvWBPnytpS",
      "object": "persona",
      "name": "Tipsters",
      "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
      "market": "b2c",
      "status": "active",
      "website": "https://example.com",
      "stats": {
        "leads_found": 18420,
        "leads_scored": 17960,
        "hot_leads": 2134,
        "avg_score": 41,
        "today": {
          "leads_found": 312,
          "hot_leads": 38,
          "dms_sent": 25,
          "replies": 4
        }
      },
      "sharing": {
        "home_account": {
          "id": "a9PzK2vRtM",
          "username": "acme"
        },
        "shared_with": [
          {
            "id": "Hq4TnW8cLm",
            "username": "acme_sales"
          }
        ]
      },
      "created_at": "2026-09-14T09:21:05.300Z",
      "updated_at": "2026-11-06T07:45:12.904Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

L'objet réglages de persona

Tout ce qui décide quels leads un persona trouve et comment l'IA les score, comme sur la page du persona dans l'app.

Attributs

  • objectstring
    Toujours persona_settings.
  • persona_idstring
    L'ID du persona.
  • namestring
    Le nom du persona, d'un à trois mots, comme Ghostwriters.
  • websitestring ou null
    Le site web de ton produit. L'IA qui score les leads le lit.
  • descriptionstring ou null
    Qui est cet acheteur, avec des mots simples. L'IA score chaque lead de 0 à 100 par rapport à ce texte, c'est donc le champ le plus important. Il peut contenir tes propres règles de scoring.
  • marketstring
    b2b quand des entreprises achètent, b2c quand des particuliers achètent pour eux-mêmes.
    b2bb2c
  • keywordstableau de strings
    Des mots d'un profil ou de ses posts qui signalent un bon fit.
  • competitorstableau de strings
    Des produits comme le tien. Quelqu'un qui en utilise un correspond à ta cible.
  • avoidtableau de strings
    Les profils à scorer bas, comme agencies ou students.
  • min_followersinteger
    Les profils avec moins d'abonnés ne sont pas scorés.
  • include_closed_inboxesboolean
    Si les personnes aux DM fermés sont aussi scorées. Une campagne les contacte par un commentaire.
  • auto_expandboolean
    Si Gemlead ajoute des sources tout seul à partir des meilleurs leads quand les autres s'épuisent.
  • auto_expand_directionstring ou null
    Où l'Extension auto doit chercher ensuite, avec des mots simples, comme more US founders.
  • daily_scoring_limitinteger
    Le maximum de leads scorés par jour pour ce persona. Le scoring 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.
  • statusstring
    Si Gemlead trouve et score des leads pour lui.
    activepaused
  • search_queriestableau de strings
  • competitor_accountstableau de strings
    Ses comptes concurrents, des noms d'utilisateur X sans le @.
  • updated_atstring
    Date de la dernière modification du persona, en ISO 8601.
L'objet réglages de persona
{
  "object": "persona_settings",
  "persona_id": "lvWBPnytpS",
  "name": "Tipsters",
  "website": "https://example.com",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "keywords": ["tipster", "betting tips", "trading signals"],
  "competitors": ["Patreon", "Whop"],
  "avoid": ["betting brands", "news accounts"],
  "min_followers": 500,
  "include_closed_inboxes": true,
  "auto_expand": false,
  "auto_expand_direction": null,
  "daily_scoring_limit": 3300,
  "search_queries": ["paid discord picks", "vip tips telegram"],
  "competitor_accounts": ["whop"],
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Récupérer les réglages d'un persona

GET/v1/personas/:persona_id/settingsScope readMCPget_persona_settings

Renvoie tous les réglages d'un persona, avec ses recherches par mots-clés et ses comptes concurrents.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Renvoie

Un objet réglages de persona.

Erreurs

GET/v1/personas/:persona_id/settings
curl https://gemlead.ai/api/v1/personas/lvWBPnytpS/settings \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "object": "persona_settings",
  "persona_id": "lvWBPnytpS",
  "name": "Tipsters",
  "website": "https://example.com",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "keywords": ["tipster", "betting tips", "trading signals"],
  "competitors": ["Patreon", "Whop"],
  "avoid": ["betting brands", "news accounts"],
  "min_followers": 500,
  "include_closed_inboxes": true,
  "auto_expand": false,
  "auto_expand_direction": null,
  "daily_scoring_limit": 3300,
  "search_queries": ["paid discord picks", "vip tips telegram"],
  "competitor_accounts": ["whop"],
  "updated_at": "2026-11-06T07:45:12.904Z"
}

Modifier les réglages d'un persona

PATCH/v1/personas/:persona_id/settingsScope writeMCPupdate_persona

Modifie les réglages que tu envoies et ne touche pas aux autres. Une liste envoyée remplace toute la liste. Pour ajouter un mot à keywords, renvoie donc la liste complète avec le nouveau mot.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Paramètres du corps

  • namestring
    Le nom du persona, d'un à trois mots, comme Ghostwriters, 100 caractères au plus.
  • websitestring
    Le site web de ton produit, 500 caractères au plus. L'IA qui score les leads le lit.
  • descriptionstring
    Qui est cet acheteur, avec des mots simples. L'IA score chaque lead de 0 à 100 par rapport à ce texte, c'est donc le champ le plus important. Il peut contenir tes propres règles de scoring. 12 000 caractères au plus.
  • marketstring
    b2b quand des entreprises achètent, b2c quand des particuliers achètent pour eux-mêmes. b2b par défaut.
    b2bb2c
  • keywordstableau de strings
    Des mots d'un profil ou de ses posts qui signalent un bon fit. 100 au plus, chacun de 100 caractères au plus.
  • competitorstableau de strings
    Des produits comme le tien, quelqu'un qui en utilise un correspond à ta cible. 100 au plus.
  • avoidtableau de strings
    Les profils à scorer bas, comme agencies ou students. 100 au plus.
  • min_followersinteger
    Les profils avec moins d'abonnés ne sont pas scorés, de 0 à 10 000 000. 100 par défaut.
  • include_closed_inboxesboolean
    Scorer aussi les personnes aux DM fermés, une campagne les contacte par un commentaire. true par défaut.
  • auto_expandboolean
    Laisser Gemlead ajouter des sources tout seul à partir des meilleurs leads quand les autres s'épuisent. false par défaut.
  • auto_expand_directionstring
    Où l'Extension auto doit chercher ensuite, avec des mots simples comme more US founders. 500 caractères au plus.
  • daily_scoring_limitinteger
    Le maximum de leads scorés par jour pour ce persona. Le scoring 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. De 100 à 20 000 pour chaque compte X qui partage le persona.

Renvoie

L'objet réglages de persona à jour.

Erreurs

PATCH/v1/personas/:persona_id/settings
curl -X PATCH \
  https://gemlead.ai/api/v1/personas/lvWBPnytpS/settings \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "min_followers": 500,
    "avoid": ["betting brands", "news accounts"]
  }'
Réponse200
{
  "object": "persona_settings",
  "persona_id": "lvWBPnytpS",
  "name": "Tipsters",
  "website": "https://example.com",
  "description": "Sports and trading tipsters who sell picks or signals to a paying community.",
  "market": "b2c",
  "status": "active",
  "keywords": ["tipster", "betting tips", "trading signals"],
  "competitors": ["Patreon", "Whop"],
  "avoid": ["betting brands", "news accounts"],
  "min_followers": 500,
  "include_closed_inboxes": true,
  "auto_expand": false,
  "auto_expand_direction": null,
  "daily_scoring_limit": 3300,
  "search_queries": ["paid discord picks", "vip tips telegram"],
  "competitor_accounts": ["whop"],
  "updated_at": "2026-11-06T07:45:12.904Z"
}

L'objet partage de persona

Les comptes X d'un même propriétaire qui travaillent avec le même persona. Ils partagent ses sources, ses réglages, ses leads et sa liste d'exclusion, et chacun y mène ses propres campagnes. Un lead ne va qu'à un seul compte X, indiqué par son locked_to.

Attributs

  • objectstring
    Toujours persona_sharing.
  • persona_idstring
    L'ID du persona.
  • home_accountobject ou null
    Le compte X sur lequel le persona a été créé. Ses sources et ses leads y sont rattachés.
  • shared_withtableau d'objects
    Les autres comptes X qui partagent le persona. Vide quand il n'est pas partagé.
  • available_accountstableau d'objects
    Les autres comptes X du propriétaire avec lesquels le persona peut être partagé. Toujours vide pour un membre de l'équipe, qui ne peut pas modifier le partage.
  • daily_scoring_limitinteger
    Le maximum de leads scorés par jour pour le persona, pour tout le groupe. Il peut aller jusqu'à 20 000 pour chaque compte X qui partage le persona.
L'objet partage de persona
{
  "object": "persona_sharing",
  "persona_id": "lvWBPnytpS",
  "home_account": {
    "id": "a9PzK2vRtM",
    "username": "acme"
  },
  "shared_with": [
    {
      "id": "Hq4TnW8cLm",
      "username": "acme_sales"
    }
  ],
  "available_accounts": [
    {
      "id": "Rb7YsK3dQp",
      "username": "acme_founder"
    }
  ],
  "daily_scoring_limit": 3300
}

Récupérer le partage d'un persona

GET/v1/personas/:persona_id/sharingScope readMCPget_persona_sharing

Renvoie les comptes X du propriétaire qui partagent un persona, et ceux avec lesquels il peut être partagé.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Renvoie

Un objet partage de persona.

Erreurs

GET/v1/personas/:persona_id/sharing
curl https://gemlead.ai/api/v1/personas/lvWBPnytpS/sharing \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "object": "persona_sharing",
  "persona_id": "lvWBPnytpS",
  "home_account": {
    "id": "a9PzK2vRtM",
    "username": "acme"
  },
  "shared_with": [
    {
      "id": "Hq4TnW8cLm",
      "username": "acme_sales"
    }
  ],
  "available_accounts": [
    {
      "id": "Rb7YsK3dQp",
      "username": "acme_founder"
    }
  ],
  "daily_scoring_limit": 3300
}

Modifier le partage d'un persona

PUT/v1/personas/:persona_id/sharingScope writeMCPupdate_persona_sharing

Choisit les autres comptes X du propriétaire qui partagent un persona, depuis n'importe quel compte X du groupe, comme Partagé avec dans l'app. Envoie la liste complète, ou une liste vide pour arrêter le partage. La daily_scoring_limit suit la taille du groupe, au même rythme pour chaque compte X. Seules les clés du propriétaire peuvent le faire.

Paramètres de chemin

  • persona_idstringObligatoire
    L'ID du persona.

Paramètres du corps

  • account_idstableau de stringsObligatoire
    Tous les autres comptes X du propriétaire qui partagent le persona, jusqu'à 20. Son compte d'origine le garde toujours.

Renvoie

L'objet partage de persona à jour.

Erreurs

  • Il manque un paramètre obligatoire. param indique lequel.
  • Un paramètre a une valeur que l'API n'accepte pas. param indique lequel.
  • Le corps contient un champ que cet endpoint n'accepte pas.
  • La clé appartient à un membre de l'équipe. Seul le propriétaire partage un persona.
  • Aucun persona avec cet ID, ou un compte X qui n'est pas au propriétaire. param indique lequel.
  • Un compte X que tu retires a encore des campagnes sur le persona. Supprime-les d'abord.
PUT/v1/personas/:persona_id/sharing
curl -X PUT \
  https://gemlead.ai/api/v1/personas/lvWBPnytpS/sharing \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_ids": ["Hq4TnW8cLm", "Rb7YsK3dQp"]
  }'
Réponse200
{
  "object": "persona_sharing",
  "persona_id": "lvWBPnytpS",
  "home_account": {
    "id": "a9PzK2vRtM",
    "username": "acme"
  },
  "shared_with": [
    {
      "id": "Hq4TnW8cLm",
      "username": "acme_sales"
    },
    {
      "id": "Rb7YsK3dQp",
      "username": "acme_founder"
    }
  ],
  "available_accounts": [],
  "daily_scoring_limit": 5000
}

L'objet suggestion de persona

Un persona que l'IA a écrit pour toi à partir d'un nom et de ton produit, prêt à être créé tel quel ou à retoucher d'abord.

Attributs

  • objectstring
    Toujours persona_suggestion.
  • statusstring
    pending pendant que l'IA écrit, puis ready ou error. none avant la première demande.
    pendingreadyerrornone
  • persona_namestring ou null
    Le nom demandé.
  • suggestionobject ou null
    Une fois ready, les champs description, keywords, competitors et avoid du persona, ceux de Créer un persona.
  • generated_atstring ou null
    Date de rédaction, en ISO 8601.
  • errorstring ou null
    Ce qui n'a pas marché, quand status vaut error.
L'objet suggestion de persona
{
  "object": "persona_suggestion",
  "status": "ready",
  "persona_name": "Tipsters",
  "suggestion": {
    "description": "Sports and trading tipsters who sell picks or signals to a paying community on Discord or Telegram.",
    "keywords": ["tipster", "vip picks", "trading signals"],
    "competitors": ["Patreon", "Whop"],
    "avoid": ["betting brands", "sports media"]
  },
  "generated_at": "2026-11-06T07:45:12.904Z",
  "error": null
}

Suggérer un persona

POST/v1/persona_suggestionsScope writeMCPsuggest_persona

Demande à l'IA d'écrire un persona à partir d'un nom et de ce que tu vends, ou de réécrire une description. Ça prend quelques secondes, donc la réponse est pending. Lis le résultat avec Récupérer la suggestion de persona.

Paramètres du corps

  • persona_namestringObligatoire
    Le persona à écrire, d'un à trois mots, comme Ghostwriters.
  • websitestring
    Le site web de ton produit. Par défaut celui de ton profil X.
  • briefstring
    Ce que tu vends et à qui, avec tes mots, 1 000 caractères au plus.
  • current_descriptionstring
    Une description à réécrire, avec instruction.
  • instructionstring
    Comment modifier current_description, comme shorter ou only US agencies. 2 000 caractères au plus.

Renvoie

Un objet suggestion de persona, avec son status à pending.

Erreurs

  • Il manque un paramètre obligatoire. param indique lequel.
  • Un paramètre a une valeur que l'API n'accepte pas. param indique lequel.
  • Le corps contient un champ que cet endpoint n'accepte pas.
  • X ou un service Gemlead n'a pas répondu. Rien n'a changé, réessaie dans une minute.
POST/v1/persona_suggestions
curl -X POST https://gemlead.ai/api/v1/persona_suggestions \
  -H "Authorization: Bearer $GEMLEAD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "persona_name": "Tipsters",
    "brief": "A checkout for paid Discord and Telegram groups."
  }'
Réponse202
{
  "object": "persona_suggestion",
  "status": "pending",
  "persona_name": "Tipsters",
  "suggestion": null,
  "generated_at": null,
  "error": null
}

Récupérer la suggestion de persona

GET/v1/persona_suggestions/latestScope readMCPget_persona_suggestion

Renvoie la dernière suggestion de persona du compte. Relance la requête à quelques secondes d'intervalle tant que la suggestion est pending.

Renvoie

Un objet suggestion de persona.

GET/v1/persona_suggestions/latest
curl https://gemlead.ai/api/v1/persona_suggestions/latest \
  -H "Authorization: Bearer $GEMLEAD_API_KEY"
Réponse200
{
  "object": "persona_suggestion",
  "status": "ready",
  "persona_name": "Tipsters",
  "suggestion": {
    "description": "Sports and trading tipsters who sell picks or signals to a paying community on Discord or Telegram.",
    "keywords": ["tipster", "vip picks", "trading signals"],
    "competitors": ["Patreon", "Whop"],
    "avoid": ["betting brands", "sports media"]
  },
  "generated_at": "2026-11-06T07:45:12.904Z",
  "error": null
}