Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Klaviyo Accounts Forms 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: []
tags:
- name: Forms
description: forms
paths:
/api/forms:
get:
operationId: get_forms
summary: Get Forms
description: 'Get all forms in an account.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: fields[form]
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:
- ab_test
- created_at
- name
- status
- 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<br>Allowed field(s)/operator(s):<br>`id`: `any`, `equals`<br>`name`: `any`, `contains`, `equals`<br>`ab_test`: `equals`<br>`updated_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`<br>`created_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`<br>`status`: `equals`'
schema:
type: string
example: equals(id,'Y6nRLr')
- 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:
- created_at
- -created_at
- 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/GetFormResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
post:
operationId: create_form
summary: Create Form
description: 'Create a new form.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:write`'
parameters:
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
requestBody:
description: Creates a Form from parameters
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/FormCreateQuery'
responses:
'201':
description: Success
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/PostEncodedFormResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:write
/api/forms/{id}:
get:
operationId: get_form
summary: Get Form
description: 'Get the form with the given ID.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form
required: true
schema:
description: The ID of the form
type: string
example: Y6nRLr
- name: fields[form]
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:
- ab_test
- created_at
- definition
- definition.versions
- name
- status
- 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/GetEncodedFormResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
delete:
operationId: delete_form
summary: Delete Form
description: 'Delete a given form.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:write`'
parameters:
- name: id
in: path
description: The ID of the form
required: true
schema:
description: The ID of the form
type: string
example: Y6nRLr
- name: revision
in: header
description: 'API endpoint revision (format: YYYY-MM-DD[.suffix])'
required: true
schema:
type: string
default: '2026-04-15'
responses:
'204':
description: Success
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:write
/api/form-versions/{id}:
get:
operationId: get_form_version
summary: Get Form Version
description: 'Get the form version with the given ID.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form version
required: true
schema:
description: The ID of the form version
type: string
example: '1234567'
- name: fields[form-version]
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:
- ab_test
- ab_test.variation_name
- created_at
- form_type
- status
- updated_at
- variation_name
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/GetFormVersionResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
/api/forms/{id}/form-versions:
get:
operationId: get_versions_for_form
summary: Get Versions for Form
description: 'Get the form versions for the given form.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form
required: true
schema:
description: The ID of the form
type:
- string
- 'null'
example: Y6nRLr
- name: fields[form-version]
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:
- ab_test
- ab_test.variation_name
- created_at
- form_type
- status
- updated_at
- variation_name
explode: false
- name: filter
in: query
description: 'For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering<br>Allowed field(s)/operator(s):<br>`form_type`: `any`, `equals`<br>`status`: `equals`<br>`updated_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`<br>`created_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`'
schema:
type: string
example: equals(form_type,'popup')
- 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:
- created_at
- -created_at
- 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/GetFormVersionResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-operation-aliases:
- get_form_form_versions
- get_form_versions
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
/api/forms/{id}/relationships/form-versions:
get:
operationId: get_version_ids_for_form
summary: Get Version IDs for Form
description: 'Get the IDs of the form versions for the given form.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form
required: true
schema:
description: The ID of the form
type:
- string
- 'null'
example: Y6nRLr
- name: filter
in: query
description: 'For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#filtering<br>Allowed field(s)/operator(s):<br>`form_type`: `any`, `equals`<br>`status`: `equals`<br>`updated_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`<br>`created_at`: `greater-or-equal`, `greater-than`, `less-or-equal`, `less-than`'
schema:
type: string
example: equals(form_type,'popup')
- 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:
- created_at
- -created_at
- 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/GetFormVersionsRelationshipsResponseCollection'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-operation-aliases:
- get_form_relationships_form_versions
- get_form_relationships_versions
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
/api/form-versions/{id}/form:
get:
operationId: get_form_for_form_version
summary: Get Form for Form Version
description: 'Get the form associated with the given form version.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form version
required: true
schema:
description: The ID of the form version
type: string
example: '1234567'
- name: fields[form]
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:
- ab_test
- created_at
- name
- status
- 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/GetFormResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-operation-aliases:
- get_form_version_form
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
/api/form-versions/{id}/relationships/form:
get:
operationId: get_form_id_for_form_version
summary: Get Form ID for Form Version
description: 'Get the ID of the form associated with the given form version.<br><br>*Rate limits*:<br>Burst: `3/s`<br>Steady: `60/m`
**Scopes:**
`forms:read`'
parameters:
- name: id
in: path
description: The ID of the form version
required: true
schema:
description: The ID of the form version
type: string
example: '1234567'
- 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/GetFormVersionFormRelationshipResponse'
4XX:
$ref: '#/components/responses/ClientError'
5XX:
$ref: '#/components/responses/ServerError'
tags:
- Forms
x-klaviyo-operation-aliases:
- get_form_version_relationships_form
x-klaviyo-pre-release: None
x-klaviyo-ratelimit:
burst: 3/s
steady: 60/m
x-klaviyo-scopes:
- forms:read
components:
schemas:
GetFormVersionsRelationshipsResponseCollection:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
$ref: '#/components/schemas/FormVersionEnum'
id:
description: ID of the form version. Generated by Klaviyo.
type: string
example: '1234567'
links:
$ref: '#/components/schemas/CollectionLinks'
required:
- data
CartValueProperties:
type: object
properties:
comparison:
description: Number comparison enumeration.
type:
- string
- 'null'
enum:
- equals
- greater_than
- less_than
value:
type:
- number
- 'null'
SkipToSuccessProperties:
type: object
maxProperties: 0
RichTextStyle:
type: object
properties:
font_family:
example: Arial, 'Helvetica Neue', Helvetica, sans-serif
default: Arial, 'Helvetica Neue', Helvetica, sans-serif
oneOf:
- type: string
enum:
- Arial Black,Arial
- Arial, 'Helvetica Neue', Helvetica, sans-serif
- Century Gothic,AppleGothic,Arial
- Comic Sans MS,Comic Sans,cursive
- Courier
- Courier New
- Geneva,Arial
- Georgia
- Helvetica,Arial
- Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Verdana,sans-serif
- Lucida Sans Unicode,Lucida Sans,Geneva,Verdana,sans-serif
- Lucida,Lucida Sans Unicode,Lucida Sans,Geneva,Verdana,sans-serif
- MS Serif,Georgia
- New York,Georgia
- Palatino Linotype,Palatino,Georgia
- Palatino,Georgia
- Tahoma,sans-serif
- Times New Roman
- Trebuchet MS
- Verdana
description: Web safe font enumeration.
- type: string
font_size:
type: integer
example: 16
default: 16
font_weight:
description: Font weight enumeration.
type:
- integer
- 'null'
example: 400
default: 400
enum:
- 100
- 200
- 300
- 400
- 500
- 600
- 700
- 800
- 900
text_color:
type: string
example: '#000000'
default: '#000000'
font_style:
type:
- string
- 'null'
text_decoration:
type:
- string
- 'null'
line_spacing:
type: number
example: 1
default: 1
character_spacing:
type:
- integer
- 'null'
default: 0
alignment:
description: Horizontal alignment enumeration.
type: string
example: left
default: left
enum:
- center
- left
- right
margin:
$ref: '#/components/schemas/RichTextMargin'
TextStyles:
type: object
properties:
padding:
$ref: '#/components/schemas/Padding'
background_color:
type:
- string
- 'null'
ResendOptInCode:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
submit:
type: boolean
default: false
enum:
- false
type:
type: string
enum:
- resend_opt_in_code
properties:
enum:
- null
required:
- type
Padding:
type: object
properties:
left:
type: integer
default: 0
right:
type: integer
default: 0
top:
type: integer
default: 0
bottom:
type: integer
default: 0
GoToInbox:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
submit:
type: boolean
example: true
default: true
enum:
- true
type:
type: string
enum:
- go_to_inbox
properties:
enum:
- null
required:
- type
DropdownProperties:
type: object
properties:
display_device:
type: array
items:
type: string
enum:
- both
- desktop
- mobile
description: Enumeration for mobile and desktop.
classname:
type:
- string
- 'null'
property_name:
type: string
label:
type:
- string
- 'null'
show_label:
type: boolean
default: false
required:
type:
- boolean
- 'null'
default: false
error_messages:
$ref: '#/components/schemas/ErrorMessages'
options:
type: array
items:
$ref: '#/components/schemas/PropertyOption'
placeholder:
type:
- string
- 'null'
required:
- property_name
- options
ReviewProperties:
type: object
properties:
display_device:
type: array
items:
type: string
enum:
- both
- desktop
- mobile
description: Enumeration for mobile and desktop.
classname:
type:
- string
- 'null'
author:
type:
- string
- 'null'
content:
type:
- string
- 'null'
rating:
type: integer
example: 5
default: 5
verified:
type: boolean
default: false
review_id:
type:
- integer
- 'null'
show_rating:
type: boolean
example: true
default: true
show_author:
type: boolean
example: true
default: true
show_verified:
type: boolean
example: true
default: true
SubscribeViaWhatsAppProperties:
type: object
properties:
opt_in_keyword:
type:
- string
- 'null'
opt_in_message:
type: string
sending_number:
type:
- string
- 'null'
required:
- opt_in_keyword
- opt_in_message
- sending_number
SignupCounterStyles:
type: object
properties:
padding:
$ref: '#/components/schemas/Padding'
background_color:
type:
- string
- 'null'
VersionProperties:
type: object
properties:
side_image_settings:
$ref: '#/components/schemas/SideImageSettings'
click_outside_to_close:
type:
- array
- 'null'
items:
type: string
enum:
- both
- desktop
- mobile
description: Enumeration for mobile and desktop.
rule_based_trigger_evaluation:
description: Side image alignment enumeration.
type:
- string
- 'null'
example: any
default: any
enum:
- all
- any
record_utm_params_on_submit:
type: boolean
default: false
show_close_button:
type: boolean
example: true
default: true
PropertyOption:
type: object
properties:
label:
type: string
value:
type: string
required:
- label
- value
CloseProperties:
type: object
properties:
list_id:
type:
- string
- 'null'
GetFormVersionResponse:
type: object
properties:
data:
$ref: '#/components/schemas/FormVersionResponseObjectResource'
links:
$ref: '#/components/schemas/ObjectLinks'
required:
- data
RedirectProperties:
type: object
properties:
list_id:
type:
- string
- 'null'
url:
type: string
new_window:
type: boolean
default: false
required:
- url
ErrorMessages:
type: object
properties:
required:
type: string
example: This field is required
default: This field is required
invalid:
type: string
example: This field is invalid
default: This field is invalid
FormVersionEnum:
type: string
enum:
- form-version
Delay:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
type:
type: string
enum:
- delay
properties:
$ref: '#/components/schemas/DelayProperties'
required:
- type
Channel:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
type:
type: string
enum:
- channel
properties:
$ref: '#/components/schemas/ChannelProperties'
required:
- type
- properties
BackgroundImageStyles:
type: object
properties:
horizontal_alignment:
description: Horizontal alignment enumeration.
type: string
example: center
default: center
enum:
- center
- left
- right
width:
type:
- integer
- 'null'
position:
description: Image position enumeration.
type: string
example: contain
default: contain
enum:
- contain
- cover
- custom
vertical_alignment:
description: Vertical alignment enumeration.
type: string
example: center
default: center
enum:
- bottom
- center
- top
custom_width:
type:
- integer
- 'null'
ExitIntent:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
properties:
$ref: '#/components/schemas/TriggerBaseProperties'
type:
type: string
enum:
- exit_intent
required:
- type
SpinToWinStyles:
type: object
properties:
padding:
$ref: '#/components/schemas/Padding'
background_color:
type:
- string
- 'null'
slice_styles:
type: array
items:
$ref: '#/components/schemas/SpinToWinSliceStyle'
text_styles:
$ref: '#/components/schemas/TextStyleV0'
center_color:
type: string
example: rgba(255,255,255,1)
default: rgba(255,255,255,1)
outline_color:
type: string
example: rgba(0,0,0,1)
default: rgba(0,0,0,1)
outline_thickness:
type: integer
example: 12
default: 12
pin_color:
type: string
example: rgba(255,255,255,1)
default: rgba(255,255,255,1)
wheel_size:
type: integer
example: 400
default: 400
SubmitBackInStock:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
type:
type: string
enum:
- submit_back_in_stock
properties:
$ref: '#/components/schemas/SubmitBackInStockProperties'
submit:
type: boolean
example: true
default: true
enum:
- true
required:
- type
RatingStyle:
type: object
properties:
color:
type: string
example: '#F8BE00'
default: '#F8BE00'
empty_color:
type: string
example: '#EBEEEF'
default: '#EBEEEF'
font_size:
type: integer
example: 16
default: 16
shape:
description: Enumeration for review shapes.
type: string
example: star
default: star
enum:
- circle
- heart
- star
alignment:
description: Horizontal alignment enumeration.
type: string
example: center
default: center
enum:
- center
- left
- right
character_spacing:
type: number
default: 0
CollectionLinks:
type: object
properties:
self:
type: string
format: uri
first:
type: string
format: uri
last:
type: string
format: uri
prev:
type: string
format: uri
next:
type: string
format: uri
required:
- self
UniqueCouponConfig:
type: object
properties:
type:
type: string
enum:
- unique
id:
type:
- integer
- 'null'
code:
type:
- string
- 'null'
fallback_coupon_code:
type:
- string
- 'null'
integration:
description: Coupon integration types for unique coupon blocks.
type: string
example: shopify
default: shopify
enum:
- api
- magento_two
- prestashop
- shopify
- uploaded
- woocommerce
required:
- type
Checkboxes:
type: object
properties:
id:
description: Not allowed on create.
type:
- string
- 'null'
type:
type
# --- truncated at 32 KB (146 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/klaviyo/refs/heads/main/openapi/klaviyo-forms-api-openapi.yml