Keap Webforms API
The Webforms API from Keap — 2 operation(s) for webforms.
The Webforms API from Keap — 2 operation(s) for webforms.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/keap-webforms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Keap Webforms API
description: Keap Public API Documentation
termsOfService: https://www.thryv.com/terms-of-use
contact:
name: Keap
url: https://developer.keap.com/get-support
email: api.keap@thryv.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: v2
servers:
- url: https://api.infusionsoft.com/crm
security:
- oauth2: []
tags:
- name: Webforms
paths:
/rest/v2/webforms:
get:
tags:
- Webforms
summary: List Webforms with filter
description: Retrieves a list of webforms
operationId: listWebforms
parameters:
- name: filter
in: query
description: 'Filter to apply, allowed fields are:
- (String) `name`
- (String) `webform_type`
- (String) `since_create_time`
- (String) `until_create_time`
- (String) `since_update_time`
- (String) `until_update_time`
You will need to apply the `==` operator to check the equality of one of the filters with your searched
word, in the encoded form `%3D%3D`. For the filters listed above, here are some examples:
- `filter=name%3D%3DContact Us`
- `filter=webform_type%3D%3Dlegacy`'
required: false
schema:
type: string
- name: page_token
in: query
description: Page token
required: false
schema:
type: string
- name: order_by
in: query
description: 'Attribute and direction to order items.
One of the following fields:
- `name`
- `webform_type`
- `create_time`
- `update_time`
One of the following directions:
- `asc`
- `desc`'
required: false
schema:
type: string
- name: page_size
in: query
description: Total number of items to return per page
required: false
schema:
type: integer
format: int32
maximum: 1000
minimum: 0
example: 0
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListWebformsResponse'
/rest/v2/webforms/{webform_id}:data:
get:
tags:
- Webforms
summary: Get Webform HTML
description: Returns the HTML
operationId: getHtml
parameters:
- name: webform_id
in: path
required: true
schema:
type: string
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'200':
description: HTML content of the webform
content:
text/html:
schema:
type: string
description: Raw HTML content of the webform
components:
schemas:
Webform:
type: object
properties:
id:
type: string
description: The unique identifier for this webform
example: 42
xid:
type: string
description: The public unique identifier for this webform, used in webform URLs
example: a1b2c3d4e5
name:
type: string
description: The name of this webform
example: Newsletter Signup Form
funnel_id:
type: string
description: The id of the funnel this webform belongs to, if any
example: 15
custom_slug:
type: string
description: The custom slug of the webform. Used in pretty webform URLs
example: newsletter-signup
webform_url:
type: string
description: The URL for this webform that uses the xid to identify it
example: https://thryv.com/app/form/a1b2c3d4e5
pretty_webform_url:
type: string
description: The URL for this webform that uses the custom slug to identify it
example: https://thryv.com/app/form/newsletter-signup
thank_you_page_url:
type: string
description: The URL of the thank you page for this webform
example: https://thryv.com/thank-you
duplicate_check_option:
type: string
description: The option that determines if the lead submitted through the form is a duplicate or not. If it's a duplicate, then the lead will be merged with the existing contact record
enum:
- EMAIL
- EMAIL_AND_NAME
- EMAIL_AND_NAME_AND_COMPANY
- NO_CHECK
example: EMAIL
exit_option:
type: string
description: The option that determines what happens after the form is submitted
enum:
- REDIRECT
- FUNNEL_LINK
- HOSTED
- LANDING_PAGE
- WEB_FORM
- SURVEY
- UPDATE
- UPDATE_OPT_OUT
- OPT_OUT
- CONFIRM
- MESSAGE
- AUTHORING_MESSAGE
- MANUAL
- CLOSE
- DISPLAY_TEXT_AND_BUTTON
- ERROR
- HOSTED_PAGE
example: REDIRECT
webform_type:
type: string
description: The type of webform this is
enum:
- LEGACY
- STANDALONE
- FUNNEL
- LANDING_PAGE
- SURVEY
- INTERNAL
- TWITTER
- UNKNOWN
example: STANDALONE
create_time:
type: string
format: date-time
description: When the webform was created
example: '2024-01-15T10:30:00Z'
update_time:
type: string
format: date-time
description: When the webform was last updated
example: '2024-06-20T14:45:00Z'
ErrorDetails:
type: object
properties:
domain:
type: string
resource:
type: string
ListWebformsResponse:
type: object
properties:
webforms:
type: array
description: The webforms in the current page
items:
$ref: '#/components/schemas/Webform'
next_page_token:
type: string
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
status:
type: string
details:
type: array
items:
$ref: '#/components/schemas/ErrorDetails'
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://accounts.infusionsoft.com/app/oauth/authorize
tokenUrl: https://api.infusionsoft.com/token
scopes: {}