Yadulink API · v1

Connect your tools to Yadulink with a clear API.

This reference covers authentication, credits, leads, asynchronous LinkedIn actions and webhooks. Start with the quickstart, then open only the scopes you need.

The full documentation is on docs.yadulink.com

This page summarizes the contract. The detailed guides and the endpoint reference generated from the OpenAPI schema are kept up to date there.

5 minutes

Quick start

Create a key from API management, copy it once, then check the connection with the free /me endpoint.

  1. 01

    Create a dedicated key

    Choose full access, read-only, or custom scopes.

  2. 02

    Store the secret

    The full value won't be shown again after it's created.

  3. 03

    Test /me

    The read is free and confirms authentication immediately.

curl
curl "https://app.yadulink.com/api/v1/me" \
  -H "Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Accept: application/json"
Reply
{
  "success": true,
  "data": {
    "id": 42,
    "email": "[email protected]",
    "api_access": {"eligible": true}
  }
}

Authentication and scopes

Send the key in the Authorization header. An expired, suspended or revoked key is rejected. Use a separate key per tool to limit the impact of a revocation.

Authorization: Bearer yd_xxxxxxxxxxxxxxxxxxxxxxxx
ScopeAllows
account:read Reading the relevant resources
credits:read Reading the relevant resources
leads:read Reading the relevant resources
leads:write Write or action in the relevant area
lists:read Reading the relevant resources
lists:write Write or action in the relevant area
messages:read Reading the relevant resources
messages:write Write or action in the relevant area
profiles:write Write or action in the relevant area
posts:write Write or action in the relevant area
connections:write Write or action in the relevant area
webhooks:manage Endpoint and webhook delivery management
jobs:read Reading the relevant resources
jobs:write Write or action in the relevant area
mcp:self:profile:read Reading the relevant resources
mcp:self:messages:read Reading the relevant resources
mcp:self:messages:write Write or action in the relevant area
mcp:self:outreach:read Reading the relevant resources
mcp:self:outreach:write Write or action in the relevant area
mcp:self:content:read Reading the relevant resources
mcp:self:content:write Write or action in the relevant area
mcp:self:credits:read Reading the relevant resources

Credits and billing

All reads are free. Synchronous mutations are charged in the same transaction. Asynchronous actions hold their credits, then commit or refund them depending on the outcome.

OperationCategoryCredits

Create sequence

sequence_create
Automation 5

Create a lead

lead_create
Data 1

Create a list

list_create
Data 1

Delete a lead

lead_delete
Data 1

Delete a list

list_delete
Data 1

Edit a lead

lead_update
Data 1

Edit a list

list_update
Data 1

Analyse a profile with advanced filters

profile_filter_read
LinkedIn 2

Like a post

post_like
LinkedIn 2

Read a profile's posts

profile_post_read
LinkedIn 2

Read an engagement page

post_engagement_page_read
LinkedIn 2

Refresh a LinkedIn feed page

feed_refresh
LinkedIn 2

Refresh a LinkedIn signal source

linkedin_signal_refresh
LinkedIn 2

Refresh post statistics

post_stats_refresh
LinkedIn 2

Visit a profile

profile_visit
LinkedIn 2

Comment on a post

post_comment
LinkedIn 8

Send a message

send_message
LinkedIn 10

Send an invitation

send_connection_request
LinkedIn 10

Publish a LinkedIn post

linkedin_post_publish
Publication 10

Monthly credits expire when the month rolls over. Purchased credits stay valid for 365 days. The batches expiring soonest are used first.

Actions and async jobs

LinkedIn actions return a job. Keep its identifier, poll its state, then handle completed, failed or canceled. Send a unique Idempotency-Key to avoid duplicates.

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": "Hello…"
  }'
ActionScopeLimit/day
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

Endpoint reference

Responses always use the success, data, meta and error envelopes. Pagination accepts page and per_page, capped at 100 items.

This list gives the path, the required scope and the cost. For parameters, request bodies and response codes, open the generated reference.

Account and contract

EndpointScopeCost
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 /messages

List LinkedIn conversations synced to Yadulink.

messages:read 0
GET /messages/{message_id}

Retrieve one synced LinkedIn message.

messages:read 0
GET /zapier/poll/leads

Poll recently created leads, shaped for Zapier triggers.

leads:read 0
GET /zapier/poll/messages

Poll recently received messages, shaped for Zapier triggers.

messages:read 0
POST /zapier/subscribe

Register a Zapier REST hook subscription.

webhooks:manage 0
DELETE /zapier/unsubscribe/{webhook_id}

Remove a Zapier REST hook subscription.

webhooks:manage 0

Credits

EndpointScopeCost
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 and lists

EndpointScopeCost
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 and jobs

EndpointScopeCost
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> Depending on the 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

EndpointScopeCost
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

Signed webhooks

Verify X-Yadulink-Signature using HMAC-SHA256 over timestamp.raw_json_payload. Reply quickly with a 2xx; temporary failures are retried and stay visible in the history.

Available events

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}
}

Errors and diagnostics

Keep X-Request-ID in your logs. error.code stays stable for automations; error.message is for humans and error.details carries the useful context.

subscription_required

Active subscription required.

invalid_api_key

Key missing, invalid, expired or inactive.

insufficient_scope

The API key doesn't have the required scope.

insufficient_api_credits

Not enough credits.

idempotency_key_reused

Same idempotency key used with a different payload.

linkedin_account_required

A connected LinkedIn account is required to run the action.

public_action_budget_unavailable

Safety limit temporarily reached.

public_action_jobs_disabled

This action is temporarily unavailable.

Every response carries an X-Request-ID header. Keep it: it is the identifier support uses to find a specific call.

Verified API facts

What the public API page makes explicit.

This block frames the API as a controlled integration layer for LinkedIn signal workflows, CRM routing, webhooks, and AI agents.

Verified facts

Base endpoint

The public API page exposes https://app.yadulink.com/api/v1 as the API base and explains authentication, scopes, jobs, webhooks, and reporting workflows.

Workflow scope

The API connects searches, lists, actions, messages, analytics, and webhooks to internal systems without turning LinkedIn operations into a black box.

Control

API usage is positioned around minimal scopes, idempotency, action limits, logs, and event payloads that stay useful for CRM and AI agents.

Verification method

01

Pick the signal

Start from the event or object that should leave Yadulink: reply, accepted invitation, profile visit, warm lead, list, or sequence.

02

Choose the scope

Grant only the read or action scope needed for the integration before adding more automation.

03

Trace the result

Log the key, account, object, status, idempotency key, and next action so each API operation can be reviewed.