Dripify Public API (1.0.0)

Download OpenAPI specification:Download

License: Proprietary

Read-only public API for your Dripify campaigns and leads, secured with an API key (X-Api-Key header — generate one from Settings → API & Integrations).

Requests are limited to 60 per minute and 5,000 per day, per API key. Authenticated responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. A rejected key is answered before the limiter runs, so a 401 carries none. Exceeding the limit returns 429 with a Retry-After header giving the number of seconds to wait.

Leads

Read-only lead listing, lookup and single-lead detail

List leads

Authorizations:
ApiKeyAuth
query Parameters
campaignId
integer <int64>

Restrict results to leads belonging to this campaign. Applied only when leadListId is not provided: a lead list already belongs to a single campaign, so when both are supplied leadListId takes precedence and campaignId is ignored. The id is not validated: one that is unknown to your account simply matches no leads.

leadListId
integer <int64>

Restrict results to leads belonging to this lead list. When both leadListId and campaignId are supplied, results are scoped to the lead list and campaignId is ignored. The id is not validated: one that is unknown to your account simply matches no leads.

status
string (LeadStatus)
Enum: "READY_FOR_PROCESSING" "PROCESSING_ENDED" "PROCESS_CORRUPTED" "PROCESSING_PAUSED"

Restrict results to leads with at least one campaign membership at this status. A lead in several campaigns is returned once.

cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}

Get a single lead by ID

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>

The lead's ID.

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "linkedinProfileUrl": "string",
  • "publicId": "string",
  • "firstName": "string",
  • "lastName": "string",
  • "pictureUrl": "string",
  • "occupation": "string",
  • "title": "string",
  • "company": "string",
  • "location": "string",
  • "city": "string",
  • "country": "string",
  • "website": "string",
  • "connectionsCount": 0,
  • "premium": true,
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "emailFoundAt": "2019-08-24T14:15:22Z",
  • "emailAlternativeSearchedAt": "2019-08-24T14:15:22Z",
  • "blacklisted": true,
  • "leadInCampaigns": [
    ]
}

List a lead's activity log

The lead's timeline events, newest first — the same events the Dripify UI shows for this lead. error is present only on events that represent a failure.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>

The lead's ID.

query Parameters
cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}

Look a lead up by email or LinkedIn profile URL

The lookup value travels in the body so it never reaches an access log or a browser history. One value can match several leads, so the response is a list. Results are always limited to the caller's own leads.

A value matching more than 100 profiles is answered with 400 rather than a partial list, because a truncated match set could omit a lead you own. Use a more specific value, such as a personal address rather than a shared company one.

Authorizations:
ApiKeyAuth
Request Body schema: application/json
email
string <email> <= 320 characters

Email address to match. Never echoed back in the response.

linkedinUrl
string <= 2048 characters

Full LinkedIn profile URL, for example https://www.linkedin.com/in/some-slug.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
[
  • {
    }
]

Campaigns

Campaign, lead-list navigation and lead upload

List campaigns

Authorizations:
ApiKeyAuth
query Parameters
cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}

List a campaign's lead lists

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>

The campaign's ID.

query Parameters
cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}

Get a campaign's statistics

Counts and rates for one campaign, the same numbers the Dripify campaign screen shows.

Rates are percents rounded to one decimal place, so parse them as a decimal type. The counters under leadStatusBreakdown are a live snapshot and need not add up to totalLeads.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>

The campaign's ID.

Responses

Response samples

Content type
application/json
{
  • "campaignId": 0,
  • "totalLeads": 0,
  • "contactedLeads": 0,
  • "leadStatusBreakdown": {
    },
  • "acceptanceRate": 0,
  • "acceptanceRateLeads": 0,
  • "replyRate": 0,
  • "replyRateLeads": 0,
  • "leadListsCount": 0,
  • "active": true,
  • "searchActive": true,
  • "transferActive": true
}

Upload leads into a campaign

Creates a new lead list in the campaign from the supplied LinkedIn identifiers — this endpoint always creates a new list, it never appends to an existing one. Each item in leads must supply exactly one of linkedinUrl or publicId; duplicates within the same request are collapsed before the list is created.

Collection only starts once the campaign is ACTIVE — enabling/disabling a campaign is not part of the public API in v1 and must be done from the Dripify UI.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>

The campaign's ID.

Request Body schema: application/json
name
string <= 120 characters

Optional label for the created lead list. Defaults to a generated name.

required
Array of objects (UploadLead) [ 1 .. 1000 ] items

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "leads": [
    ]
}

Response samples

Content type
application/json
{
  • "leadList": {
    },
  • "acceptedCount": 0,
  • "duplicateCount": 0
}

Teams

Read-only team listing with campaign rollup analytics

List teams the caller belongs to

Every team the API caller is a member of, with campaign rollup analytics inlined into each row.

Authorizations:
ApiKeyAuth
query Parameters
cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}

Team members

Read-only listing of a team's members with their statistics

List team members

The members of one of your teams, each with the statistics the Dripify team screen shows. You must be the team's OWNER or MANAGER; any other team answers 404. Ordering depends on live subscription state, so treat nextCursor as short-lived.

Authorizations:
ApiKeyAuth
path Parameters
teamId
required
integer <int64>

The team's ID.

query Parameters
cursor
string <= 128 characters

Opaque marker for the next page. Take it from the previous response's nextCursor and pass it back unchanged. Omit it to start from the first page.

limit
integer <int32> [ 1 .. 100 ]
Default: 25

Maximum items to return. Values above 100 are rejected.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextCursor": "string",
  • "limit": 0
}