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.

  1. 01

    Crée une clé dédiée

    Choisis un accès complet, en lecture seule ou des scopes personnalisés.

  2. 02

    Stocke le secret

    La valeur complète ne sera plus affichée après sa création.

  3. 03

    Teste /me

    La lecture est gratuite et confirme immédiatement l’authentification.

curl
curl "https://app.yadulink.com/api/v1/me" \
  -H "Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Accept: application/json"
Réponse
{
  "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
ScopeAutorise
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érationCatégorieCré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
LinkedIn 2

Actualiser une page de fil LinkedIn

feed_refresh
LinkedIn 2

Actualiser une source de signaux LinkedIn

linkedin_signal_refresh
LinkedIn 2

Aimer un post

post_like
LinkedIn 2

Analyser un profil avec les filtres avancés

profile_filter_read
LinkedIn 2

Lire les posts d’un profil

profile_post_read
LinkedIn 2

Lire une page d’engagements

post_engagement_page_read
LinkedIn 2

Visiter un profil

profile_visit
LinkedIn 2

Commenter un post

post_comment
LinkedIn 8

Envoyer un message

send_message
LinkedIn 10

Envoyer une invitation

send_connection_request
LinkedIn 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.

POST /actions/send_message/jobs
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…"
  }'
ActionScopeLimite/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

EndpointScopeCoû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

EndpointScopeCoû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

EndpointScopeCoû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

EndpointScopeCoû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

EndpointScopeCoû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

01

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.

02

Choisir le scope

Accorder uniquement le scope de lecture ou d'action necessaire a l'integration avant d'ajouter plus d'automatisation.

03

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.