Base URL
- Hosted (Plunk Cloud)
- Self-hosted
API groups
The Plunk API has two groups of endpoints that serve different purposes.Public API
For use in your application code. Endpoints are versioned under
/v1/.POST /v1/send— send transactional emailPOST /v1/track— track an event for a contact
Dashboard API
For managing your Plunk project. Endpoints are unversioned.Covers contacts, templates, campaigns, segments, workflows, events, and domains.
The Public API accepts both secret keys (
sk_*) and public keys (pk_*), depending on the endpoint. The Dashboard API requires a secret key for all requests. See Authentication for details.Request format
All requests must include theContent-Type: application/json header and send a JSON body where applicable.
Response format
Every response from the Plunk API uses a consistent envelope, making it straightforward to check for success or handle errors without inspecting HTTP status codes alone.Success
Error
| Field | Description |
|---|---|
success | false for all error responses |
error.code | Machine-readable error code for programmatic handling |
error.message | Human-readable description of the error |
error.statusCode | HTTP status code |
error.requestId | Unique identifier for this request — include it when contacting support |
error.errors | Array of field-level validation details (present on VALIDATION_ERROR only) |
error.suggestion | Guidance for resolving the error |
timestamp | ISO 8601 timestamp of when the error occurred |
Pagination
List endpoints use cursor-based pagination. Passlimit and cursor as query parameters.
| Parameter | Default | Maximum | Description |
|---|---|---|---|
limit | 20 | 100 | Number of items to return |
cursor | — | — | Cursor value from the previous response’s nextCursor field |
hasMore is false in the response, you have reached the last page.
Rate limits
| Limit | Value |
|---|---|
| Email sending | 14 emails per second (AWS SES default) |
| API requests | 1,000 requests per minute per project |
429 Too Many Requests response with error code RATE_LIMIT_EXCEEDED. Implement exponential backoff before retrying.
What’s next
Authentication
Learn how to obtain and use your API keys.
Error codes
Complete reference for all error codes and troubleshooting guidance.
Send an email
Send your first transactional email with
POST /v1/send.Track an event
Track contact activity with
POST /v1/track.