API Yadulink · v1
Connecte tes outils à Yadulink avec une API claire.
Cette référence couvre l’authentification, les crédits, les leads, les actions LinkedIn asynchrones et les webhooks. Commence par le quickstart, puis ouvre uniquement les scopes nécessaires.
5 minutes
Démarrage rapide
Crée une clé depuis la gestion API, copie-la une seule fois, puis vérifie la connexion avec l’endpoint gratuit /me.
-
01
Crée une clé dédiée
Choisis un accès complet, en lecture seule ou des scopes personnalisés.
-
02
Stocke le secret
La valeur complète ne sera plus affichée après sa création.
-
03
Teste /me
La lecture est gratuite et confirme immédiatement l’authentification.
curl "https://app.yadulink.com/api/v1/me" \
-H "Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Accept: application/json"
{
"success": true,
"data": {
"id": 42,
"email": "[email protected]",
"api_access": {"eligible": true}
}
}
Authentification et scopes
Envoie la clé dans l’en-tête Authorization. Une clé expirée, suspendue ou révoquée est refusée. Utilise une clé distincte par outil pour limiter l’impact d’une révocation.
Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx
| Scope | Autorise |
|---|---|
account:read |
Lecture des ressources concernées |
credits:read |
Lecture des ressources concernées |
leads:read |
Lecture des ressources concernées |
leads:write |
Écriture ou action dans le domaine concerné |
lists:read |
Lecture des ressources concernées |
lists:write |
Écriture ou action dans le domaine concerné |
messages:read |
Lecture des ressources concernées |
messages:write |
Écriture ou action dans le domaine concerné |
profiles:write |
Écriture ou action dans le domaine concerné |
posts:write |
Écriture ou action dans le domaine concerné |
connections:write |
Écriture ou action dans le domaine concerné |
webhooks:manage |
Gestion des endpoints et livraisons webhook |
jobs:read |
Lecture des ressources concernées |
jobs:write |
Écriture ou action dans le domaine concerné |
mcp:self:profile:read |
Lecture des ressources concernées |
mcp:self:messages:read |
Lecture des ressources concernées |
mcp:self:messages:write |
Écriture ou action dans le domaine concerné |
mcp:self:outreach:read |
Lecture des ressources concernées |
mcp:self:outreach:write |
Écriture ou action dans le domaine concerné |
mcp:self:content:read |
Lecture des ressources concernées |
mcp:self:content:write |
Écriture ou action dans le domaine concerné |
mcp:self:credits:read |
Lecture des ressources concernées |
Crédits et facturation
Toutes les lectures sont gratuites. Les mutations synchrones sont débitées dans la même transaction. Les actions asynchrones réservent leurs crédits, puis les confirment ou les remboursent selon le résultat.
| Opération | Catégorie | Crédits |
|---|---|---|
|
Créer une séquence sequence_create
|
Automatisation | 5 |
|
Créer un lead lead_create
|
Données | 1 |
|
Créer une liste list_create
|
Données | 1 |
|
Modifier un lead lead_update
|
Données | 1 |
|
Modifier une liste list_update
|
Données | 1 |
|
Supprimer un lead lead_delete
|
Données | 1 |
|
Supprimer une liste list_delete
|
Données | 1 |
|
Actualiser les statistiques d’un post post_stats_refresh
|
2 | |
|
Actualiser une page de fil LinkedIn feed_refresh
|
2 | |
|
Actualiser une source de signaux LinkedIn linkedin_signal_refresh
|
2 | |
|
Aimer un post post_like
|
2 | |
|
Analyser un profil avec les filtres avancés profile_filter_read
|
2 | |
|
Lire les posts d’un profil profile_post_read
|
2 | |
|
Lire une page d’engagements post_engagement_page_read
|
2 | |
|
Visiter un profil profile_visit
|
2 | |
|
Commenter un post post_comment
|
8 | |
|
Envoyer un message send_message
|
10 | |
|
Envoyer une invitation send_connection_request
|
10 | |
|
Publier un post LinkedIn linkedin_post_publish
|
Publication | 10 |
Les crédits mensuels expirent au changement de mois. Les crédits achetés restent valables 365 jours. Les lots expirant le plus tôt sont consommés en premier.
Actions et jobs asynchrones
Les actions LinkedIn retournent un job. Conserve son identifiant, interroge son état, puis traite completed, failed ou canceled. Envoie une clé Idempotency-Key unique pour éviter les doublons.
curl -X POST "https://app.yadulink.com/api/v1/actions/send_message/jobs" \
-H "Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Idempotency-Key: message-prospect-123" \
-H "Content-Type: application/json" \
-d '{
"profile_url": "https://www.linkedin.com/in/prospect",
"message": "Bonjour…"
}'
| Action | Scope | Limite/jour |
|---|---|---|
profile_visit |
profiles:write |
80 |
post_like |
posts:write |
80 |
post_comment |
posts:write |
80 |
send_connection_request |
connections:write |
60 |
send_message |
messages:write |
80 |
Référence des endpoints
Les réponses utilisent toujours les enveloppes success, data, meta et error. La pagination accepte page et per_page, limité à 100 éléments.
Compte et contrat
| Endpoint | Scope | Coût |
|---|---|---|
|
GET
/me
Test authentication and retrieve the API key owner. |
— | 0 |
|
GET
/account/status
Check API eligibility, subscription access, and LinkedIn connection status. |
account:read
|
0 |
|
GET
/account/limits
Read rate limits, credit allowance, and action-job availability. |
account:read
|
0 |
|
GET
/developer/manifest
Machine-readable public API contract for integrations such as n8n. |
account:read
|
0 |
|
GET
/openapi.json
Public OpenAPI schema for the Yadulink Public API. |
— | 0 |
|
GET
/prospect-radar/schema
Read the Yadulink SaaS prospect radar scoring contract. |
leads:read
|
0 |
|
GET
/prospect-radar/summary
Read SaaS radar pipeline totals and configured LinkedIn accounts. |
leads:read
|
0 |
|
GET
/prospect-radar/accounts
List internal LinkedIn accounts configured for radar assignment. |
leads:read
|
0 |
|
POST
/prospect-radar/accounts
Create or update an internal LinkedIn account for radar assignment. |
leads:write
|
0 |
|
POST
/prospect-radar/candidates/bulk
Ingest sourced SaaS prospects and calculate server-side intent scores. |
leads:write
|
0 |
|
POST
/prospect-radar/discovery/linkedin
Run a bounded read-only LinkedIn people search for radar discovery. |
leads:read
|
0 |
|
POST
/prospect-radar/discovery/enrich-linkedin
Resolve up to 20 exact public LinkedIn identifiers through a connected internal account. |
leads:read
|
0 |
|
GET
/prospect-radar/candidates
List scored SaaS radar candidates. |
leads:read
|
0 |
|
POST
/prospect-radar/queue/claim
Claim the daily deduplicated prospect queue across active LinkedIn accounts. |
leads:write
|
0 |
|
GET
/prospect-radar/assignments
List per-account radar lifecycle assignments. |
leads:read
|
0 |
|
POST
/prospect-radar/assignments/digest-delivered
Acknowledge radar assignments only after their daily digest was delivered. |
leads:write
|
0 |
|
POST
/prospect-radar/invitations/reconcile
Match Unipile sent invitations with profiles previously proposed by the radar. |
leads:write
|
0 |
|
POST
/prospect-radar/invitations/reconcile-live
Fetch pending invitations through Yadulink and match radar assignments without exposing Unipile credentials. |
leads:write
|
0 |
|
POST
/prospect-radar/assignments/{assignment_id}/state
Record a reviewed radar lifecycle transition without sending a LinkedIn action. |
leads:write
|
0 |
Crédits
| Endpoint | Scope | Coût |
|---|---|---|
|
GET
/credits/balance
Read the current API credit balance. |
credits:read
|
0 |
|
GET
/credits/ledger
Read credit ledger entries with pagination and filters. |
credits:read
|
0 |
|
GET
/credits/overview
Read credit balance and consumption aggregates for a selected period. |
credits:read
|
0 |
|
GET
/credits/packs
List purchasable credit packs. Checkout must be started in the app session. |
credits:read
|
0 |
|
POST
/credits/packs/{pack_id}/checkout
Create a Stripe Checkout session for a credit pack from an authenticated app session. |
app_session
|
0 |
|
POST
/credits/quote
Preview the credit cost of an operation before creating it. |
credits:read
|
0 |
Leads et listes
| Endpoint | Scope | Coût |
|---|---|---|
|
GET
/lists
List lead lists. |
lists:read
|
0 |
|
POST
/lists
Create a lead list. |
lists:write
|
1 |
|
GET
/lists/{list_id}
Retrieve a lead list. |
lists:read
|
0 |
|
PUT
/lists/{list_id}
Update a lead list. |
lists:write
|
1 |
|
DELETE
/lists/{list_id}
Delete a lead list. |
lists:write
|
1 |
|
GET
/lists/{list_id}/leads
List leads from a specific list. |
leads:read
|
0 |
|
GET
/leads
List leads with filters and pagination. |
leads:read
|
0 |
|
GET
/leads/search
Search leads by query. |
leads:read
|
0 |
|
GET
/leads/{lead_id}
Retrieve a lead. |
leads:read
|
0 |
|
POST
/leads
Create a lead. |
leads:write
|
1 |
|
PUT
/leads/{lead_id}
Update a lead. |
leads:write
|
1 |
|
DELETE
/leads/{lead_id}
Delete a lead. |
leads:write
|
1 |
Actions et jobs
| Endpoint | Scope | Coût |
|---|---|---|
|
GET
/actions
List LinkedIn-side async actions available through the public API. |
account:read
|
0 |
|
POST
/actions/{operation}/jobs
Create an async job for a LinkedIn action. |
jobs:write<action required_scope>
|
Selon action |
|
GET
/jobs/{job_id}
Retrieve job status and result. |
jobs:read
|
0 |
|
POST
/jobs/{job_id}/cancel
Cancel a queued/running public API job and refund reserved credits when possible. |
jobs:write
|
0 |
Webhooks
| Endpoint | Scope | Coût |
|---|---|---|
|
GET
/webhooks
List webhook endpoints. |
webhooks:manage
|
0 |
|
GET
/webhooks/health
List unhealthy webhook endpoints and health counters. |
webhooks:manage
|
0 |
|
GET
/webhooks/{webhook_id}
Retrieve one webhook endpoint with health state. |
webhooks:manage
|
0 |
|
POST
/webhooks
Create a webhook endpoint. |
webhooks:manage
|
0 |
|
PUT
/webhooks/{webhook_id}
Update a webhook endpoint. |
webhooks:manage
|
0 |
|
POST
/webhooks/{webhook_id}/activate
Activate a webhook endpoint and clear failure state. |
webhooks:manage
|
0 |
|
POST
/webhooks/{webhook_id}/deactivate
Deactivate a webhook endpoint without deleting it. |
webhooks:manage
|
0 |
|
DELETE
/webhooks/{webhook_id}
Delete a webhook endpoint. |
webhooks:manage
|
0 |
|
POST
/webhooks/{webhook_id}/test
Queue a test webhook delivery. |
webhooks:manage
|
0 |
|
POST
/webhooks/{webhook_id}/rotate-secret
Rotate a webhook signing secret. |
webhooks:manage
|
0 |
|
GET
/webhooks/{webhook_id}/deliveries
Read recent webhook delivery attempts. |
webhooks:manage
|
0 |
|
GET
/webhooks/{webhook_id}/deliveries/{delivery_id}
Read one webhook delivery attempt with payload and response details. |
webhooks:manage
|
0 |
|
POST
/webhooks/{webhook_id}/deliveries/{delivery_id}/replay
Queue a replay of a previous webhook delivery with the same event id. |
webhooks:manage
|
0 |
Webhooks signés
Vérifie X-Yadulink-Signature avec HMAC-SHA256 sur timestamp.raw_json_payload. Réponds rapidement en 2xx ; les échecs temporaires sont retentés et restent visibles dans l’historique.
Événements disponibles
lead.created
lead.status_changed
connection.accepted
radar.connection_accepted
radar.message_received
job.completed
job.failed
job.canceled
{
"id": "evt_01...",
"event": "lead.created",
"api_version": "v1",
"created_at": "2026-07-24T14:30:00Z",
"data": {"lead_id": 123}
}
Erreurs et diagnostic
Conserve X-Request-ID dans tes logs. error.code reste stable pour les automatisations ; error.message est destiné à l’humain et error.details fournit le contexte utile.
subscription_required
Abonnement actif requis.
invalid_api_key
Clé absente, invalide, expirée ou inactive.
insufficient_scope
La clé API n'a pas le scope requis.
insufficient_api_credits
Solde de crédits insuffisant.
idempotency_key_reused
Même clé d'idempotence utilisée avec un payload différent.
linkedin_account_required
Compte LinkedIn connecté requis pour lancer l'action.
public_action_budget_unavailable
Limite de sécurité temporairement atteinte.
public_action_jobs_disabled
Cette action est momentanément indisponible.
Faits API verifies
Ce que la page API publique rend explicite.
Ce bloc cadre l'API comme une couche d'integration controlee pour les signaux LinkedIn, le routage CRM, les webhooks et les agents IA.
Faits vérifiés
Endpoint de base
La page API publique expose https://app.yadulink.com/api/v1 comme base API et explique authentification, scopes, jobs, webhooks et workflows de reporting.
Perimetre workflow
L'API connecte recherches, listes, actions, messages, analytics et webhooks aux systemes internes sans transformer LinkedIn en boite noire.
Controle
L'usage API est cadre par scopes minimaux, idempotence, limites d'action, logs et payloads d'evenements utiles au CRM et aux agents IA.
Méthode de vérification
Choisir le signal
Partir de l'evenement ou de l'objet qui doit sortir de Yadulink : reponse, invitation acceptee, visite profil, lead chaud, liste ou sequence.
Choisir le scope
Accorder uniquement le scope de lecture ou d'action necessaire a l'integration avant d'ajouter plus d'automatisation.
Tracer le resultat
Journaliser la cle, le compte, l'objet, le statut, la cle d'idempotence et la prochaine action pour auditer chaque operation API.