Sendspark lets you automatically generate AI-personalized videos via our API.
This is helpful when you want to create dynamic videos based on specific actions your leads take, such as...
Filling out a form
Being added to a list
Signing up for your product
Taking a specific action in your app
And more!
Sendspark API Basics
Where to view Your API Credentials
You can access your information in the API Credentials tab in your Sendspark settings.
What are API Keys and Secrets?
An API Key is specific to your Sendspark workspace. It lets you access your workspace from other applications, so you can take actions via automation.
An API Secret is specific to your Sendspark user profile. Every member of your workspace can generate their own API Secrets. These will let each of you take actions as "you" via automation.
How to Generate an API Key
Go to your API Credentials Tab
Select "Create New Key"
You'll see your API Key appear
How to Generate an API Secret
Click on the Key Icon next to your API Key
Click "Generate New Secret Key"
Your API Secret Key will appear for you to copy and use.
Note that you will never able to view this key again. If you need to use an API Secret in the future, you will have to remember this one, or generate a new API Secret Key.
Sendspark API Rate Limits
All API endpoints are limited to 30 requests per minute rate limit, except `../prospects/bulk
, which is limited to 1 request per minute.
API Endpoints to Create Dynamics Videos
Alight, let's dive in! You can read on, or jump to the right section:
API Endpoints to Create Dynamics Videos
Create a dynamic video campaign
POST /v1/workspaces/{workspaceId}/dynamics
Payload:
{
"name": "Name of dynamic campaign"
}
Response:
Code | Description |
200 | Successful
{ |
400 | Bad Request
{ |
404 | Not Found
{ |
503 | Service Unavailable
{ |
List dynamic campaigns
GET /v1/workspaces/{workspaceId}/dynamics
Code | Description |
200 | Successful
{ |
400 | Bad Request
{ |
404 | Not Found
{ |
Get dynamic campaign by ID
GET /v1/workspaces/{workspaceId}/dynamics/{dynamicId}
Code | Description |
200 | Successful
{ |
400 | Bad Request
{ |
404 | Not Found
{ |
Get prospect data by email
GET /v1/workspaces/{workspaceId}/dynamics/{dynamicId}/prospects/contact-email@domain.com
Code | Description |
200 | Successful
{ |
400 | Bad Request
{ |
404 | Not Found
{ |
Add a single prospect to a dynamic campaign.
POST /v1/workspaces/{workspaceId}/dynamics/{dynamicId}/prospect
Payload:
{
"processAndAuthorizeCharge": true, // must be "true" for this request to work. This confirm that you understand charges associated with generating dynamic videos above your plan limit.
"prospectDepurationConfig": {
"forceCreation": false, // if true, we will create a new prospect even if it already exists
"payloadDepurationStrategy": "keep-first-valid" | "keep-last-valid" // if a prospect already exists, we will keep the first valid one or the last valid one
},
"prospect": {
"contactName": "John Doe",
"contactEmail": "johndoe@example.com",
"company": "Example Company",
"jobTitle": "Example jobTitle",
"backgroundUrl": "https://example.com"
}
}
Responses:
Code | Description |
200 | Successful
{ |
400 | Bad Request
{ |
403 | Forbidden
{ |
404 | Not Found
{ |
503 | Service Unavailable
{ |
Add and process multiple prospects to dynamic campaign
POST /v1/workspaces/{workspaceId}/dynamics/{dynamicsId}/prospects/bulk
Payload:
{
"processAndAuthorizeCharge": true, // must be "true" for this request to work. This confirm that you understand charges associated with generating dynamic videos above your plan limit.
"prospectDepurationConfig": {
"forceCreation": false, // if true, we will create a new prospect even if it already exists
"payloadDepurationStrategy": "keep-first-valid" | "keep-last-valid" // if a prospect already exists, we will keep the first valid one or the last valid one
},
"prospectList": [
{
"contactName": "John Doe",
"contactEmail": "johndoe@example.com",
"company": "Example Company",
"jobTitle": "Example jobTitle",
"backgroundUrl": "https://example.com",
"screenshotUrl": "https://sendspark.com"
}
]
}
Responses:
Code | Description |
200 | Successful
{
|
400 | Bad Request
{ |
403 | Forbidden
{ |
404 | Not Found
{ |
503 | Service Unavailable
{ |
API Health status
GET /v1/auth/health
Code | Description |
200 | Successful
{ |
404 | Not Found
{ |