{ "openapi": "3.0.2", "info": { "title": "Klaviyo API", "version": "2026-04-15", "description": "The Klaviyo REST API. Please visit https://developers.klaviyo.com for more details.", "contact": { "name": "Klaviyo Developer Experience Team", "email": "developers@klaviyo.com", "url": "https://developers.klaviyo.com" }, "termsOfService": "https://www.klaviyo.com/legal/api-terms", "license": { "name": "License", "url": "https://www.klaviyo.com/legal" } }, "servers": [ { "url": "https://a.klaviyo.com", "description": "Production" } ], "security": [ { "Klaviyo-API-Key": [] } ], "paths": { "/api/images": { "get": { "operationId": "get_images", "summary": "Get Images", "description": "Get all images in an account.

*Rate limits*:
Burst: `10/s`
Steady: `150/m`\n\n**Scopes:**\n`images:read`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/get_images.json)", "parameters": [ { "name": "fields[image]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "format", "hidden", "id", "image_url", "name", "size", "updated_at" ] } }, "explode": false }, { "name": "filter", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering
Allowed field(s)/operator(s):
`id`: `any`, `equals`
`updated_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`
`format`: `any`, `equals`
`name`: `any`, `contains`, `ends-with`, `equals`, `starts-with`
`size`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`
`hidden`: `any`, `equals`", "schema": { "type": "string", "example": "equals(id,'7')" } }, { "name": "page[cursor]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination", "required": false, "schema": { "type": "string" } }, { "name": "page[size]", "in": "query", "description": "Default: 20. Min: 1. Max: 100.", "required": false, "schema": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1 } }, { "name": "sort", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sorting", "schema": { "type": "string", "enum": [ "format", "-format", "id", "-id", "name", "-name", "size", "-size", "updated_at", "-updated_at" ] } }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-04-15" } } ], "responses": { "200": { "description": "Success", "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/GetImageResponseCollection" } } } }, "4XX": { "$ref": "#/components/responses/ClientError" }, "5XX": { "$ref": "#/components/responses/ServerError" } }, "tags": [ "Images" ], "x-klaviyo-filters": { "id": { "operators": { "list": [ "any", "equals" ], "single": [ "equals" ] }, "value": { "type": "string" } }, "updated_at": { "operators": { "single": [ "greater-or-equal", "greater-than", "less-or-equal", "less-than" ] }, "value": { "type": "string", "format": "date-time" } }, "format": { "operators": { "list": [ "any", "equals" ], "single": [ "equals" ] }, "value": { "type": "string" } }, "name": { "operators": { "list": [ "any", "equals" ], "single": [ "contains", "ends-with", "equals", "starts-with" ] }, "value": { "type": "string" } }, "size": { "operators": { "single": [ "greater-or-equal", "greater-than", "less-or-equal", "less-than" ] }, "value": { "type": "integer" } }, "hidden": { "operators": { "list": [ "any", "equals" ], "single": [ "equals" ] }, "value": { "type": "boolean" } } }, "x-klaviyo-pre-release": "None", "x-klaviyo-ratelimit": { "burst": "10/s", "steady": "150/m" }, "x-klaviyo-scopes": [ "images:read" ] }, "post": { "operationId": "upload_image_from_url", "summary": "Upload Image From URL", "description": "Import an image from a url or data uri.\n\nIf you want to upload an image from a file, use the Upload Image From File endpoint instead.

*Rate limits*:
Burst: `3/s`
Steady: `100/m`
Daily: `100/d`\n\n**Scopes:**\n`images:write`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/upload_image_from_url.json)", "parameters": [ { "name": "fields[image]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "format", "hidden", "id", "image_url", "name", "size", "updated_at" ] } }, "explode": false }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-04-15" } } ], "requestBody": { "required": true, "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/ImageCreateQuery" } } } }, "responses": { "201": { "description": "Success", "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/PostImageResponse" } } } }, "4XX": { "$ref": "#/components/responses/ClientError" }, "5XX": { "$ref": "#/components/responses/ServerError" } }, "tags": [ "Images" ], "x-klaviyo-operation-aliases": [ "create_image" ], "x-klaviyo-pre-release": "None", "x-klaviyo-ratelimit": { "burst": "3/s", "steady": "100/m", "daily": "100/d" }, "x-klaviyo-scopes": [ "images:write" ] } }, "/api/images/{id}": { "get": { "operationId": "get_image", "summary": "Get Image", "description": "Get the image with the given image ID.

*Rate limits*:
Burst: `10/s`
Steady: `150/m`\n\n**Scopes:**\n`images:read`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/get_image.json)", "parameters": [ { "name": "id", "in": "path", "description": "The ID of the image", "required": true, "schema": { "description": "The ID of the image", "type": "string", "example": "7" } }, { "name": "fields[image]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "format", "hidden", "id", "image_url", "name", "size", "updated_at" ] } }, "explode": false }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-04-15" } } ], "responses": { "200": { "description": "Success", "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/GetImageResponse" } } } }, "4XX": { "$ref": "#/components/responses/ClientError" }, "5XX": { "$ref": "#/components/responses/ServerError" } }, "tags": [ "Images" ], "x-klaviyo-pre-release": "None", "x-klaviyo-ratelimit": { "burst": "10/s", "steady": "150/m" }, "x-klaviyo-scopes": [ "images:read" ] }, "patch": { "operationId": "update_image", "summary": "Update Image", "description": "Update the image with the given image ID.

*Rate limits*:
Burst: `10/s`
Steady: `150/m`\n\n**Scopes:**\n`images:write`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/update_image.json)", "parameters": [ { "name": "id", "in": "path", "description": "The ID of the image", "required": true, "schema": { "description": "The ID of the image", "type": "string", "example": "7" } }, { "name": "fields[image]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "format", "hidden", "id", "image_url", "name", "size", "updated_at" ] } }, "explode": false }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-04-15" } } ], "requestBody": { "required": true, "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/ImagePartialUpdateQuery" } } } }, "responses": { "200": { "description": "Success", "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/PatchImageResponse" } } } }, "4XX": { "$ref": "#/components/responses/ClientError" }, "5XX": { "$ref": "#/components/responses/ServerError" } }, "tags": [ "Images" ], "x-klaviyo-pre-release": "None", "x-klaviyo-ratelimit": { "burst": "10/s", "steady": "150/m" }, "x-klaviyo-scopes": [ "images:write" ] } }, "/api/image-upload": { "post": { "operationId": "upload_image_from_file", "summary": "Upload Image From File", "description": "Upload an image from a file.\n\nIf you want to import an image from an existing url or a data uri, use the Upload Image From URL endpoint instead.

*Rate limits*:
Burst: `3/s`
Steady: `100/m`
Daily: `100/d`\n\n**Scopes:**\n`images:write`\n\n[OpenAPI Spec](https://raw.githubusercontent.com/klaviyo/openapi/main/openapi/stable/apis/upload_image_from_url.json)", "parameters": [ { "name": "fields[image]", "in": "query", "description": "For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets", "required": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "format", "hidden", "id", "image_url", "name", "size", "updated_at" ] } }, "explode": false }, { "name": "revision", "in": "header", "description": "API endpoint revision (format: YYYY-MM-DD[.suffix])", "required": true, "schema": { "type": "string", "default": "2026-04-15" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ImageUploadQuery" } } } }, "responses": { "201": { "description": "Success", "content": { "application/vnd.api+json": { "schema": { "$ref": "#/components/schemas/PostImageResponse" } } } }, "4XX": { "$ref": "#/components/responses/ClientError" }, "5XX": { "$ref": "#/components/responses/ServerError" } }, "tags": [ "Images" ], "x-klaviyo-operation-aliases": [ "create_image_upload" ], "x-klaviyo-pre-release": "None", "x-klaviyo-ratelimit": { "burst": "3/s", "steady": "100/m", "daily": "100/d" }, "x-klaviyo-scopes": [ "images:write" ] } } }, "components": { "responses": { "ClientError": { "description": "Client Error", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "required": [ "id", "code", "title", "detail" ], "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "title": { "type": "string" }, "detail": { "type": "string" }, "source": { "type": "object", "properties": { "pointer": { "type": "string" }, "parameter": { "type": "string" } } } } } } }, "required": [ "errors" ] } } } }, "ServerError": { "description": "Server Error", "content": { "application/vnd.api+json": { "schema": { "type": "object", "properties": { "errors": { "type": "array", "items": { "type": "object", "required": [ "id", "code", "title", "detail" ], "properties": { "id": { "type": "string" }, "code": { "type": "string" }, "title": { "type": "string" }, "detail": { "type": "string" }, "source": { "type": "object", "properties": { "pointer": { "type": "string" }, "parameter": { "type": "string" } } } } } } }, "required": [ "errors" ] } } } } }, "schemas": { "CollectionLinks": { "type": "object", "properties": { "self": { "type": "string", "format": "uri" }, "prev": { "type": "string", "format": "uri" }, "next": { "type": "string", "format": "uri" } }, "required": [ "self" ] }, "GetImageResponse": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ImageResponseObjectResource" }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "data" ] }, "GetImageResponseCollection": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ImageResponseObjectResource" } }, "links": { "$ref": "#/components/schemas/CollectionLinks" } }, "required": [ "data" ] }, "ImageCreateQuery": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ImageCreateQueryResourceObject" } }, "required": [ "data" ] }, "ImageCreateQueryResourceObject": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/ImageEnum" }, "attributes": { "type": "object", "properties": { "name": { "description": "A name for the image. Defaults to the filename if not provided. If the name matches an existing image, a suffix will be added.", "type": "string", "nullable": true }, "import_from_url": { "description": "An existing image url to import the image from. Alternatively, you may specify a base-64 encoded data-uri (`data:image/...`). Supported image formats: jpeg,png,gif. Maximum image size: 5MB.", "type": "string", "example": "https://www.example.com/example.jpg" }, "hidden": { "description": "If true, this image is not shown in the asset library.", "type": "boolean", "default": false, "nullable": true } }, "required": [ "import_from_url" ] } }, "required": [ "type", "attributes" ] }, "ImageEnum": { "type": "string", "enum": [ "image" ] }, "ImagePartialUpdateQuery": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/ImagePartialUpdateQueryResourceObject" } }, "required": [ "data" ] }, "ImagePartialUpdateQueryResourceObject": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/ImageEnum" }, "id": { "description": "The ID of the image", "type": "string", "example": "7" }, "attributes": { "type": "object", "properties": { "name": { "description": "A name for the image.", "type": "string", "nullable": true }, "hidden": { "description": "If true, this image is not shown in the asset library.", "type": "boolean", "nullable": true } } } }, "required": [ "type", "id", "attributes" ] }, "ImageResponseObjectResource": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/ImageEnum" }, "id": { "description": "The ID of the image", "type": "string", "example": "7" }, "attributes": { "type": "object", "properties": { "name": { "type": "string" }, "image_url": { "type": "string" }, "format": { "type": "string" }, "size": { "type": "integer" }, "hidden": { "type": "boolean" }, "updated_at": { "type": "string", "format": "date-time", "example": "2022-11-08T00:00:00+00:00" } }, "required": [ "name", "image_url", "format", "size", "hidden", "updated_at" ] }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "type", "id", "attributes", "links" ] }, "ImageUploadQuery": { "type": "object", "properties": { "file": { "description": "The image file to upload. Supported image formats: jpeg,png,gif. Maximum image size: 5MB.", "type": "string", "format": "binary" }, "name": { "description": "A name for the image. Defaults to the filename if not provided. If the name matches an existing image, a suffix will be added.", "type": "string" }, "hidden": { "description": "If true, this image is not shown in the asset library.", "type": "boolean", "default": false } }, "required": [ "file" ] }, "ObjectLinks": { "type": "object", "properties": { "self": { "type": "string", "format": "uri" } }, "required": [ "self" ] }, "PatchImageResponse": { "type": "object", "properties": { "data": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/ImageEnum" }, "id": { "description": "The ID of the image", "type": "string", "example": "7" }, "attributes": { "type": "object", "properties": { "name": { "type": "string" }, "image_url": { "type": "string" }, "format": { "type": "string" }, "size": { "type": "integer" }, "hidden": { "type": "boolean" }, "updated_at": { "type": "string", "format": "date-time", "example": "2022-11-08T00:00:00+00:00" } }, "required": [ "name", "image_url", "format", "size", "hidden", "updated_at" ] }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "type", "id", "attributes", "links" ] }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "data" ] }, "PostImageResponse": { "type": "object", "properties": { "data": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/ImageEnum" }, "id": { "description": "The ID of the image", "type": "string", "example": "7" }, "attributes": { "type": "object", "properties": { "name": { "type": "string" }, "image_url": { "type": "string" }, "format": { "type": "string" }, "size": { "type": "integer" }, "hidden": { "type": "boolean" }, "updated_at": { "type": "string", "format": "date-time", "example": "2022-11-08T00:00:00+00:00" } }, "required": [ "name", "image_url", "format", "size", "hidden", "updated_at" ] }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "type", "id", "attributes", "links" ] }, "links": { "$ref": "#/components/schemas/ObjectLinks" } }, "required": [ "data" ] } }, "securitySchemes": { "Klaviyo-API-Key": { "type": "apiKey", "in": "header", "name": "Authorization", "description": "Private key authentication for /api/ endpoints is performed by setting the `Authorization` header to `Klaviyo-API-Key your-private-api-key`
For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#authentication", "x-default": "Klaviyo-API-Key your-private-api-key" } } }, "tags": [ { "name": "Images", "description": "images" } ] }