238 lines
3.8 KiB
Markdown
238 lines
3.8 KiB
Markdown
# Klaviyo Routing Reference
|
|
|
|
**App name:** `klaviyo`
|
|
**Base URL proxied:** `a.klaviyo.com`
|
|
|
|
## API Path Pattern
|
|
|
|
```
|
|
/klaviyo/api/{resource}
|
|
```
|
|
|
|
## API Versioning
|
|
|
|
Include the `revision` header in all requests:
|
|
|
|
```
|
|
revision: 2024-10-15
|
|
```
|
|
|
|
## Common Endpoints
|
|
|
|
### Get Profiles
|
|
```bash
|
|
GET /klaviyo/api/profiles
|
|
```
|
|
|
|
Query parameters:
|
|
- `filter` - Filter profiles (e.g., `filter=equals(email,"test@example.com")`)
|
|
- `fields[profile]` - Comma-separated list of fields to include
|
|
- `page[size]` - Number of results per page (max 100)
|
|
|
|
### Get a Profile
|
|
```bash
|
|
GET /klaviyo/api/profiles/{profile_id}
|
|
```
|
|
|
|
### Create a Profile
|
|
```bash
|
|
POST /klaviyo/api/profiles
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "profile",
|
|
"attributes": {
|
|
"email": "newuser@example.com",
|
|
"first_name": "John",
|
|
"last_name": "Doe"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Update a Profile
|
|
```bash
|
|
PATCH /klaviyo/api/profiles/{profile_id}
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "profile",
|
|
"id": "PROFILE_ID",
|
|
"attributes": {
|
|
"first_name": "Jane"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Get Lists
|
|
```bash
|
|
GET /klaviyo/api/lists
|
|
```
|
|
|
|
### Create a List
|
|
```bash
|
|
POST /klaviyo/api/lists
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "list",
|
|
"attributes": {
|
|
"name": "VIP Customers"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Add Profiles to List
|
|
```bash
|
|
POST /klaviyo/api/lists/{list_id}/relationships/profiles
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": [
|
|
{"type": "profile", "id": "PROFILE_ID"}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Get Segments
|
|
```bash
|
|
GET /klaviyo/api/segments
|
|
```
|
|
|
|
### Get Campaigns
|
|
```bash
|
|
GET /klaviyo/api/campaigns
|
|
```
|
|
|
|
### Create a Campaign
|
|
```bash
|
|
POST /klaviyo/api/campaigns
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "campaign",
|
|
"attributes": {
|
|
"name": "Summer Newsletter",
|
|
"audiences": {
|
|
"included": ["LIST_ID"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Get Flows
|
|
```bash
|
|
GET /klaviyo/api/flows
|
|
```
|
|
|
|
### Update Flow Status
|
|
```bash
|
|
PATCH /klaviyo/api/flows/{flow_id}
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "flow",
|
|
"id": "FLOW_ID",
|
|
"attributes": {
|
|
"status": "live"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Create an Event
|
|
```bash
|
|
POST /klaviyo/api/events
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "event",
|
|
"attributes": {
|
|
"profile": {
|
|
"data": {
|
|
"type": "profile",
|
|
"attributes": {
|
|
"email": "customer@example.com"
|
|
}
|
|
}
|
|
},
|
|
"metric": {
|
|
"data": {
|
|
"type": "metric",
|
|
"attributes": {
|
|
"name": "Viewed Product"
|
|
}
|
|
}
|
|
},
|
|
"properties": {
|
|
"product_id": "SKU123",
|
|
"product_name": "Blue T-Shirt"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Get Metrics
|
|
```bash
|
|
GET /klaviyo/api/metrics
|
|
```
|
|
|
|
### Get Templates
|
|
```bash
|
|
GET /klaviyo/api/templates
|
|
```
|
|
|
|
### Create Webhook
|
|
```bash
|
|
POST /klaviyo/api/webhooks
|
|
Content-Type: application/json
|
|
|
|
{
|
|
"data": {
|
|
"type": "webhook",
|
|
"attributes": {
|
|
"name": "Order Placed Webhook",
|
|
"endpoint_url": "https://example.com/webhooks/klaviyo",
|
|
"enabled": true
|
|
},
|
|
"relationships": {
|
|
"webhook-topics": {
|
|
"data": [
|
|
{"type": "webhook-topic", "id": "campaign:sent"}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Delete Webhook
|
|
```bash
|
|
DELETE /klaviyo/api/webhooks/{webhook_id}
|
|
```
|
|
|
|
## Notes
|
|
|
|
- All requests use JSON:API specification
|
|
- Timestamps are in ISO 8601 RFC 3339 format
|
|
- Resource IDs are strings (often base64-encoded)
|
|
- Use sparse fieldsets to optimize response size (e.g., `fields[profile]=email,first_name`)
|
|
- Include `revision` header for API versioning
|
|
- Use cursor-based pagination with `page[cursor]` parameter
|
|
|
|
## Resources
|
|
|
|
- [Klaviyo API Documentation](https://developers.klaviyo.com)
|
|
- [API Reference](https://developers.klaviyo.com/en/reference/api_overview)
|
|
- [Klaviyo Developer Portal](https://developers.klaviyo.com/en)
|