Skip to main content

Endpoint reference

Every endpoint below uses the base URL:

https://app.yadulink.com/api/v1
tip

This page is an overview by domain, handy for picking an endpoint. For exact parameters, request bodies and response codes, open the OpenAPI reference: it is generated from the schema the API serves, so it is always current.

Conventions

Responses always follow the same shape:

{
"success": true,
"data": {},
"meta": {}
}

Errors follow this shape:

{
"success": false,
"error": {
"code": "stable_error_code",
"message": "Readable message",
"details": {}
}
}

Pagination

List endpoints generally accept:

ParameterDefaultMaximumPurpose
page1-Requested page
per_page20 or 50100Items per page

Pagination details come back in meta or in the payload, depending on the endpoint.

Account

MethodEndpointScopeCreditsDescription
GET/meValid API key0Test authentication
GET/account/statusaccount:read0Read API eligibility, subscription and LinkedIn
GET/account/limitsaccount:read0Read limits, credits and action budgets
GET/developer/manifestaccount:read0Read the machine-readable contract
GET/openapi.jsonPublic0Read the OpenAPI schema

Example: account status

curl https://app.yadulink.com/api/v1/account/status \
-H "Authorization: Bearer yd_your_api_key"

Credits

MethodEndpointScopeCreditsDescription
GET/credits/balancecredits:read0Read the current balance
GET/credits/ledgercredits:read0Read the movement history
GET/credits/packscredits:read0List the available packs
POST/credits/quotecredits:read0Estimate the cost of an operation
POST/credits/packs/{pack_id}/checkoutApp session0Start a Stripe checkout from Yadulink

Example: read the balance

curl https://app.yadulink.com/api/v1/credits/balance \
-H "Authorization: Bearer yd_your_api_key"

Lists

MethodEndpointScopeCreditsIdempotencyDescription
GET/listslists:read0NoList the lists
POST/listslists:write1YesCreate a list
GET/lists/{list_id}lists:read0NoRead a list
PUT/lists/{list_id}lists:write1YesUpdate a list
DELETE/lists/{list_id}lists:write1YesDelete a list
GET/lists/{list_id}/leadsleads:read0NoList the leads of a list

Example: create a list

curl https://app.yadulink.com/api/v1/lists \
-X POST \
-H "Authorization: Bearer yd_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crm-list-2026-05" \
-d '{
"name": "May 2026 prospects"
}'

Leads

MethodEndpointScopeCreditsIdempotencyDescription
GET/leadsleads:read0NoList leads with filters
GET/leads/searchleads:read0NoSearch leads
GET/leads/{lead_id}leads:read0NoRead a lead
POST/leadsleads:write1YesCreate a lead
PUT/leads/{lead_id}leads:write1YesUpdate a lead
DELETE/leads/{lead_id}leads:write1YesDelete a lead

Example: create a lead

curl https://app.yadulink.com/api/v1/leads \
-X POST \
-H "Authorization: Bearer yd_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: crm_123-create-lead" \
-d '{
"list_id": 123,
"full_name": "Ada Lovelace",
"company_name": "Analytical Engines",
"position": "Founder",
"linkedin_url": "https://www.linkedin.com/in/example",
"email": "ada@example.com"
}'

Search leads

curl "https://app.yadulink.com/api/v1/leads/search?q=founder&per_page=25" \
-H "Authorization: Bearer yd_your_api_key"

Messages

MethodEndpointScopeCreditsDescription
GET/messagesmessages:read0List available messages
GET/messages/{message_id}messages:read0Read a message

Sending a LinkedIn message goes through the action jobs, with the send_message operation.

Actions and jobs

MethodEndpointScopeCreditsDescription
GET/actionsaccount:read0List the available actions
POST/actions/{operation}/jobsjobs:write plus the action scopeReservedCreate an action job
GET/jobs/{job_id}jobs:read0Read a job's state
POST/jobs/{job_id}/canceljobs:write0Cancel a job and refund where possible

Available operations:

OperationAction scopeCost
profile_visitprofiles:write2 credits
post_likeposts:write2 credits
post_commentposts:write8 credits
send_connection_requestconnections:write10 credits
send_messagemessages:write10 credits

Example: create a profile visit job

curl https://app.yadulink.com/api/v1/actions/profile_visit/jobs \
-X POST \
-H "Authorization: Bearer yd_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: profile-visit-crm_123" \
-d '{
"lead_id": 123
}'

Webhooks

MethodEndpointScopeCreditsDescription
GET/webhookswebhooks:manage0List webhook endpoints
GET/webhooks/healthwebhooks:manage0Read webhook health
GET/webhooks/{webhook_id}webhooks:manage0Read one webhook
POST/webhookswebhooks:manage0Create a webhook
PUT/webhooks/{webhook_id}webhooks:manage0Update a webhook
POST/webhooks/{webhook_id}/activatewebhooks:manage0Reactivate a webhook
POST/webhooks/{webhook_id}/deactivatewebhooks:manage0Deactivate a webhook
DELETE/webhooks/{webhook_id}webhooks:manage0Delete a webhook
POST/webhooks/{webhook_id}/testwebhooks:manage0Send a test event
POST/webhooks/{webhook_id}/rotate-secretwebhooks:manage0Rotate the signing secret
GET/webhooks/{webhook_id}/deliverieswebhooks:manage0List delivery attempts
GET/webhooks/{webhook_id}/deliveries/{delivery_id}webhooks:manage0Read one attempt
POST/webhooks/{webhook_id}/deliveries/{delivery_id}/replaywebhooks:manage0Replay a delivery

Zapier endpoints

Polling and subscription endpoints exist for the Zapier connector: /zapier/poll/leads, /zapier/poll/messages, /zapier/subscribe and /zapier/unsubscribe/{webhook_id}. For a new project, prefer the v1 API documented here, or the n8n connector when the need is workflow-shaped.

OpenAPI

To fetch the machine-readable reference:

curl https://app.yadulink.com/api/v1/openapi.json

The schema exposes paths, scopes, parameters, responses and x-yadulink metadata, including credit costs where they apply.