Skip to content

Campaigns

Campaigns create public signing links from templates. Anyone with the link can submit a signed copy — no recipient list needed. Ideal for onboarding forms, waivers, and public agreements.

GET /api/v1/campaigns

Query parameters

ParameterTypeDefaultDescription
cursorstringPagination cursor
limitinteger25Items per page (1–100)
statusstringFilter: active, paused, closed
searchstringSearch by name

Required scope: campaigns.read

Terminal window
curl -X GET "https://app.insigner.co/api/v1/campaigns?status=active" \
-H "Authorization: Bearer isk_YOUR_API_KEY"

Response

{
"data": [
{
"id": "cmp_abc123",
"name": "Employee Onboarding NDA",
"slug": "employee-onboarding-nda-a1b2c3d4",
"status": "active",
"submissionCount": 142,
"maxSubmissions": 500,
"collectPhone": true,
"requireOtp": false,
"expiresAt": null,
"brandColor": "#003271",
"templateId": "tpl_abc123",
"createdAt": "2026-04-01T10:00:00.000Z",
"updatedAt": "2026-05-28T14:00:00.000Z"
}
],
"meta": { "count": 1, "hasMore": false, "nextCursor": null }
}

POST /api/v1/campaigns

Required scope: campaigns.create

Request body

FieldTypeRequiredDescription
templateIdstringTemplate to use for this campaign
namestringCampaign name (1–200 chars)
welcomeTitlestringTitle shown on the signing page (max 200 chars)
welcomeMessagestringMessage shown on the signing page (max 1000 chars)
maxSubmissionsintegerMaximum number of submissions (min: 1)
expiresAtstringISO 8601 expiration date
collectPhonebooleanCollect phone numbers (default: true)
requireOtpbooleanRequire OTP verification (default: false)
requireKycbooleanRequire KYC verification (default: false)
brandColorstringHex color for branding (e.g. "#003271")
redirectUrlstringURL to redirect after signing (max 2000 chars)
Terminal window
curl -X POST https://app.insigner.co/api/v1/campaigns \
-H "Authorization: Bearer isk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl_abc123",
"name": "Employee Onboarding NDA",
"welcomeTitle": "Welcome to Acme Corp",
"welcomeMessage": "Please review and sign our NDA to get started.",
"maxSubmissions": 500,
"collectPhone": true,
"requireOtp": false,
"brandColor": "#003271",
"redirectUrl": "https://acme.com/onboarding/complete"
}'

Response 201 Created

{
"data": {
"id": "cmp_abc123",
"name": "Employee Onboarding NDA",
"slug": "employee-onboarding-nda-a1b2c3d4",
"status": "active",
"maxSubmissions": 500,
"expiresAt": null,
"collectPhone": true,
"requireOtp": false,
"brandColor": "#003271",
"redirectUrl": "https://acme.com/onboarding/complete",
"templateId": "tpl_abc123",
"createdAt": "2026-05-28T12:00:00.000Z"
}
}

GET /api/v1/campaigns/{id}

Required scope: campaigns.read

Terminal window
curl -X GET https://app.insigner.co/api/v1/campaigns/cmp_abc123 \
-H "Authorization: Bearer isk_YOUR_API_KEY"

Response — Full campaign object with welcomeTitle, welcomeMessage, and all settings.


PATCH /api/v1/campaigns/{id}

Required scope: campaigns.update

All fields from the create body are accepted but optional. You can also change status to "active", "paused", or "closed".

Terminal window
curl -X PATCH https://app.insigner.co/api/v1/campaigns/cmp_abc123 \
-H "Authorization: Bearer isk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "paused"}'

DELETE /api/v1/campaigns/{id}

Permanently deletes a campaign.

Required scope: campaigns.delete

Response: 204 No Content


GET /api/v1/campaigns/{id}/submissions

Returns documents created via this campaign, including signer details.

Required scope: campaigns.read

Query parameters

ParameterTypeDefaultDescription
cursorstringPagination cursor
limitinteger25Items per page (1–100)
Terminal window
curl -X GET "https://app.insigner.co/api/v1/campaigns/cmp_abc123/submissions?limit=10" \
-H "Authorization: Bearer isk_YOUR_API_KEY"

Response

{
"data": [
{
"id": "cm5x9jkl012",
"name": "Standard NDA.pdf",
"status": "completed",
"completedAt": "2026-05-28T15:30:00.000Z",
"createdAt": "2026-05-28T15:20:00.000Z",
"signers": [
{
"id": "sr_ghi789",
"name": "Carlos Rodriguez",
"email": "carlos@example.com",
"status": "completed",
"signedAt": "2026-05-28T15:30:00.000Z"
}
]
}
],
"meta": { "count": 1, "hasMore": true, "nextCursor": "cm5x9jkl012" }
}