Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/persistiq-campaigns-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Persistiq Campaigns API
version: v1
x-refined-note:
- x-apisjson-generated differs across the merged source definitions and was not carried
- x-apisjson-method differs across the merged source definitions and was not carried
- x-apisjson-source differs across the merged source definitions and was not carried
description: 'Operations tagged Campaigns across 2 of this provider''s published API definitions: persistiq-api-v1-openapi.json, persistiq-campaigns-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.persistiq.com
description: Production
tags:
- name: Campaigns
paths:
/v1/campaigns:
get:
summary: List campaigns
tags:
- Campaigns
parameters:
- name: page
in: query
required: false
description: Page number for pagination
schema:
type: integer
- name: name
in: query
required: false
description: Filter by campaign name
schema:
type: string
- name: owner_id
in: query
required: false
description: Filter by owner (user) hashed ID
schema:
type: string
- name: lead_id
in: query
required: false
description: Filter campaigns containing this lead (hashed ID)
schema:
type: string
responses:
'200':
description: campaigns listed
content:
application/json:
schema:
type: object
properties:
has_more:
type: boolean
next_page:
type:
- string
- 'null'
status:
type: string
errors:
type: array
items:
type: string
campaigns:
type: array
items:
$ref: '#/components/schemas/campaign_type'
security:
- api_key: []
post:
summary: Create a campaign
tags:
- Campaigns
parameters: []
responses:
'200':
description: campaign created
content:
application/json:
schema:
$ref: '#/components/schemas/campaign_type'
'422':
description: missing required fields
content:
application/json:
schema:
type: object
properties:
reason:
type: string
message:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
campaign_name:
type: string
description: Name for the new campaign
owner_id:
type: string
description: Hashed user ID of the campaign owner
required:
- campaign_name
- owner_id
security:
- api_key: []
servers:
- url: https://api.persistiq.com
description: Production
/v1/campaigns/duplicate:
post:
summary: Duplicate a campaign
tags:
- Campaigns
parameters: []
responses:
'200':
description: campaign duplicated
content:
application/json:
schema:
$ref: '#/components/schemas/campaign_type'
'422':
description: missing required fields
content:
application/json:
schema:
type: object
properties:
reason:
type: string
message:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
campaign_id:
type: string
description: Hashed ID of the campaign to duplicate
owner_id:
type: string
description: Hashed user ID for the duplicated campaign owner
name:
type: string
description: Name for the duplicated campaign (optional)
required:
- campaign_id
- owner_id
security:
- api_key: []
servers:
- url: https://api.persistiq.com
description: Production
/v1/campaigns/{campaign_id}/leads:
post:
operationId: addLeadsToCampaign
summary: Add leads to a campaign
description: Adds up to 100 leads to a campaign. If more than 100 lead ids are provided, the API responds with 400 Bad Request.
tags:
- Campaigns
parameters:
- name: campaign_id
in: path
required: true
schema:
type: string
example: c_9lWrpz
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mailbox_id:
type: string
description: ID of the mailbox to which the lead should be added.
lead_id:
type: string
description: A single lead id (required if `leads` is not given).
leads:
type: array
description: Array of lead ids (required if `lead_id` is not given).
items:
type: object
properties:
id:
type: string
responses:
'200':
description: Campaign leads created (with per-lead errors, if any)
content:
application/json:
schema:
type: object
properties:
status:
type: string
errors:
type: array
items: {}
campaign_leads:
type: array
items:
$ref: '#/components/schemas/CampaignLead'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/ServerError'
security:
- ApiKeyAuth: []
servers:
- url: https://api.persistiq.com
description: Production
/v1/campaigns/{campaign_id}/leads/{lead_id}:
delete:
operationId: removeLeadFromCampaign
summary: Remove a lead from a campaign
tags:
- Campaigns
parameters:
- name: campaign_id
in: path
required: true
schema:
type: string
example: c_9lWrpz
- name: lead_id
in: path
required: true
schema:
type: string
example: l_9N2XDp
responses:
'200':
description: Lead removed from campaign
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/ServerError'
security:
- ApiKeyAuth: []
servers:
- url: https://api.persistiq.com
description: Production
components:
schemas:
campaign_type:
type: object
properties:
id:
type: string
name:
type: string
creator:
type: object
properties:
id:
type: string
name:
type: string
email:
type: string
stats:
type: object
properties:
prospects_contacted:
type: integer
prospects_reached:
type: integer
prospects_opened:
type: integer
prospects_replied:
type: integer
prospects_bounced:
type: integer
prospects_optedout:
type: integer
total_prospects:
type: integer
LeadData:
type: object
required:
- email
properties:
email:
type: string
format: email
first_name:
type:
- string
- 'null'
last_name:
type:
- string
- 'null'
company_name:
type:
- string
- 'null'
address:
type:
- string
- 'null'
city:
type:
- string
- 'null'
state:
type:
- string
- 'null'
phone:
type:
- string
- 'null'
title:
type:
- string
- 'null'
industry:
type:
- string
- 'null'
snippet:
type:
- string
- 'null'
snippet2:
type:
- string
- 'null'
snippet3:
type:
- string
- 'null'
snippet4:
type:
- string
- 'null'
CampaignLead:
type: object
properties:
id:
type: string
example: cl_abc001
campaign_id:
type: string
mailbox_id:
type: string
lead:
$ref: '#/components/schemas/Lead'
User:
type: object
properties:
id:
type: string
example: u_q3e537
name:
type: string
email:
type: string
format: email
activated:
type: boolean
default_mailbox_id:
type:
- string
- 'null'
salesforce_id:
type:
- string
- 'null'
Lead:
type: object
properties:
id:
type: string
example: l_abc001
status:
type: string
example: active
bounced:
type:
- boolean
- string
data:
$ref: '#/components/schemas/LeadData'
Error:
type: object
properties:
status:
type: string
example: error
error:
type: object
properties:
reason:
type: string
description: Error type. Values include invalid_request_error, api_error, bad_params, invalid_request, too_many_requests.
message:
type: string
Campaign:
type: object
properties:
id:
type: string
example: c_9N9GpR
name:
type: string
creator:
$ref: '#/components/schemas/User'
stats:
type: object
properties:
prospects_contacted:
type: integer
prospects_reached:
type: integer
prospects_opened:
type: integer
prospects_replied:
type: integer
prospects_bounced:
type: integer
prospects_optedout:
type: integer
responses:
ServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not Found - the specified data could not be found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized - your API key is wrong
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: Too Many Requests - more than 100 requests were sent in one minute.
headers:
X-RateLimit-Limit:
description: Maximum allowed requests per minute.
schema:
type: integer
X-RateLimit-Remaining:
description: Requests left for the current window.
schema:
type: integer
X-RateLimit-Reset:
description: UTC epoch seconds when the window resets.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad Request - missing a required parameter
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
api_key:
type: apiKey
name: x-api-key
in: header
description: API key found in Settings > Integrations > API Key
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Company-wide API key. Grants access to read and write all users' data within the company. Include it in the header of every request.
x-refined-from:
- persistiq-api-v1-openapi.json
- persistiq-campaigns-api-openapi.yml