Best Practices
Partial Updates (PATCH vs PUT)
The PulsePoint API uses PATCH for partial updates on campaign, line item, and tactic endpoints. This means:
- Only include fields you want to update
- Omitted fields will retain their current values
- Fields will not be nulled by omission
Use PUT (Replace Line Item) when you want to fully replace a resource's configuration. Any fields omitted from a PUT request will be reset to their defaults.
Resource Creation Order
The PulsePoint Platform has a defined hierarchy. Resources must be created in the following order — each level depends on the one above it existing first:
- Account — your top-level entity (provisioned by PulsePoint)
- Advertiser — retrieved via Get Advertiser IDs by Account ID. New advertisers are provisioned by PulsePoint
- Campaign — the parent container for all line items
- Line Item — defines budget, flights, inventory type, and targeting settings
- Tactic — the most granular level; controls creative assignment, bidding, and targeting
- Creative Assignment — assign creatives to a tactic before it can serve
Attempting to create a resource before its parent exists will result in a 404 or validation error.
Pagination
Several endpoints return paginated results using cursor-based pagination. To retrieve all results:
- Make your initial request — the response will include a
paginationobject - Check
pagination.has_more— iftrue, more results are available - Pass the
pagination.next_cursorvalue as thecursorquery parameter in your next request - Repeat until
has_moreisfalse
{
"data": { "data": [...] },
"pagination": {
"limit": 50,
"total": 312,
"has_more": true,
"next_cursor": "eyJpZCI6MTIzNDU2fQ",
"next_cursor_url": "/RestApi/v2/meta/behavioralSegments?cursor=eyJpZCI6MTIzNDU2fQ&limit=50"
}
}The default page size is 50 and the maximum is 100. Use the limit query parameter to control page size.
Date and Time Formatting
Different endpoints use different date formats. Always check the field-level notes for the endpoint you are using:
| Format | Example | Used In |
|---|---|---|
MM-dd-yyyy HH:mm:ss | 04-01-2025 00:00:00 | Line Item flights (Create/Replace Line Item) |
YYYY-MM-DD HH:mm:ss | 2025-04-01 00:00:00 | Tactic creative assignments |
All times are interpreted in the timezone specified on the line item. If no timezone is specified, Eastern Time is used as the default.
Using Numeric IDs
All resources in the PulsePoint API are referenced by numeric IDs, not by name. Before creating line items or tactics, use the Account Assets endpoints to retrieve the IDs you need:
- Advertiser IDs → Get Advertiser IDs by Account ID
- Campaign IDs → Get Campaign IDs by Account and Advertiser ID
- Creative IDs → Get Creatives By Account
- Targeting segment IDs → Get Behavioral Targeting Segments
Start with Read-Only Requests
The PulsePoint Platform API operates in a production environment only. We recommend familiarizing yourself with the API using GET requests before creating or modifying resources. This lets you verify your authentication, understand the data structure, and confirm you are working with the correct account and advertiser IDs before making any changes.
Error Handling
- Check the HTTP status code first to determine the error category before parsing the response body
- Use
error.codefor programmatic logic — this field is stable and consistent. Do not write logic that parseserror.messagestrings - Check the
detailsarray — validation errors often return multiple field-level issues at once; handle all of them - Include
requestIdwhen contacting support — every API response includes arequestId(success) orrequest_id(error) field that PulsePoint support can use to look up the exact request - Implement retry logic for 429 errors — use the
retryAftervalue in the response to determine when to retry - Use exponential backoff for 500 errors — do not retry immediately; wait and retry with increasing delays
See Standard Responses and Errors for the full list of error codes and response formats.
Updated about 1 month ago
