Instapage Groups API
Manage the groups (folders) that organise landing pages inside an Instapage workspace.
Manage the groups (folders) that organise landing pages inside an Instapage workspace.
openapi: 3.1.0
info:
title: Instapage Groups API
description: 'Groups (folders) organise landing pages inside a workspace.
The Instapage Public API is a REST API over the Instapage landing page and post-click optimization
platform. It exposes workspaces, team members, landing pages, page groups, personalized experiences,
collections and collection pages, experiments, analytics, form submissions (leads), custom domains
and image assets.
Authentication is a personal API token sent as an HTTP Bearer token in the Authorization header. A
personal token inherits all permissions from its creator and cannot exceed them; expired or revoked
tokens return 401. Rate limiting is 200 requests per minute enforced per token and per IP address,
on top of a daily plan quota that resets at 00:00 UTC; exceeding either returns 429 with a Retry-After
header.
List endpoints are page-number paginated via the `page` query parameter and return a `meta.pagination`
block; form submissions instead use an opaque `meta.nextPageToken` cursor. Errors are returned as
a `{title, details, meta}` envelope.
Instapage does not publish an OpenAPI description. This document was transcribed by API Evangelist
from the published API reference at https://devdocs.instapage.com/ and is not an official Instapage
artifact.'
version: '1'
contact:
name: Instapage Developer Docs
url: https://devdocs.instapage.com/
termsOfService: https://instapage.com/terms-of-service
x-provenance:
method: derived
source: https://devdocs.instapage.com/
generated: '2026-08-13'
note: Instapage publishes no OpenAPI. Transcribed from the published API reference; not an official
Instapage artifact.
servers:
- url: https://api.instapage.com/v1
description: Instapage Public API v1
security:
- BearerAuth: []
tags:
- name: Groups
description: Groups (folders) organise landing pages inside a workspace.
paths:
/workspaces/{workspaceId}/groups:
get:
summary: Get all groups
description: Retrieve all groups (folders) for a specific workspace.
operationId: listGroups
tags:
- Groups
parameters:
- &id001
in: path
name: workspaceId
required: true
description: The ID of the workspace.
schema:
type: number
- in: query
name: page
required: false
description: Specifies which page to fetch. Used for pagination purposes.
schema:
type: number
default: 1
responses:
'200':
description: The request was processed successfully.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Group'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
description: Bad request. Validation error — review input parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized. Authentication failed or missing credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden. The user does not have the necessary permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The requested workspace could not be located.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too Many Requests. Request was blocked due to rate limit or plan restrictions.
See the Retry-After header.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
Retry-After:
description: Number of seconds to wait before retrying, returned when the daily plan quota
or the 200 requests/minute limit is exceeded.
schema:
type: integer
'500':
description: Internal Server Error. An unexpected condition prevented the request from being
fulfilled.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create group
description: Create a new group (folder) in a workspace.
operationId: createGroup
tags:
- Groups
parameters:
- *id001
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
description: The name of the new group.
responses:
'201':
description: The request was processed successfully.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Group'
'400':
description: Bad request. Invalid name or other parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized. Authentication failed or missing credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden. The user does not have the necessary permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The requested workspace could not be located.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict. A group with the same name already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: Payload Too Large. Group name exceeds character limit.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too Many Requests. Request was blocked due to rate limit or plan restrictions.
See the Retry-After header.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
Retry-After:
description: Number of seconds to wait before retrying, returned when the daily plan quota
or the 200 requests/minute limit is exceeded.
schema:
type: integer
'500':
description: Internal Server Error. An unexpected condition prevented the request from being
fulfilled.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/workspaces/{workspaceId}/groups/{groupId}:
put:
summary: Update group
description: Update the name of an existing group (folder) in a workspace.
operationId: updateGroup
tags:
- Groups
parameters:
- *id001
- in: path
name: groupId
required: true
description: The ID of the group to update.
schema:
type: number
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
description: New name for the group.
responses:
'200':
description: The request was processed successfully.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Group'
'400':
description: Bad request. Invalid name or other parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized. Authentication failed or missing credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden. The user does not have the necessary permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The group or workspace could not be located.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict. A group with the same name already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'413':
description: Payload Too Large. Group name exceeds character limit.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too Many Requests. Request was blocked due to rate limit or plan restrictions.
See the Retry-After header.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
Retry-After:
description: Number of seconds to wait before retrying, returned when the daily plan quota
or the 200 requests/minute limit is exceeded.
schema:
type: integer
'500':
description: Internal Server Error. An unexpected condition prevented the request from being
fulfilled.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
summary: Delete group
description: Delete an empty group (folder) from a workspace.
operationId: deleteGroup
tags:
- Groups
parameters:
- *id001
- in: path
name: groupId
required: true
description: The ID of the group to delete.
schema:
type: number
responses:
'200':
description: The request was processed successfully and the group was deleted.
'400':
description: Bad request. Group contains pages and cannot be deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized. Authentication failed or missing credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden. The user does not have the necessary permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The group or workspace could not be located.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too Many Requests. Request was blocked due to rate limit or plan restrictions.
See the Retry-After header.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
Retry-After:
description: Number of seconds to wait before retrying, returned when the daily plan quota
or the 200 requests/minute limit is exceeded.
schema:
type: integer
'500':
description: Internal Server Error. An unexpected condition prevented the request from being
fulfilled.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: Personal API Token
description: 'Personal API token generated from Instapage account settings, sent as `Authorization:
Bearer <token>`.'
schemas:
Pagination:
type: object
properties:
currentPage:
type: number
description: Number of the current page of results.
perPage:
type: number
description: Number of items per page.
totalItemsCount:
type: number
description: Total number of items.
totalPagesCount:
type: number
description: Total number of pages.
nextPage:
type:
- number
- 'null'
description: Number of the next page, null if there is no next page.
previousPage:
type:
- number
- 'null'
description: Number of the previous page, null if there is no previous page.
PaginationMeta:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
Error:
type: object
description: Error envelope returned by the Instapage API.
properties:
title:
type: string
description: The type of error that occurred.
details:
type: string
description: A human-readable description of the error.
meta:
type: object
properties:
requestedUserId:
type: number
description: ID of the user who made the request.
requestedWorkspaceId:
type: number
description: ID of the workspace involved.
requestedPageId:
type: number
description: ID of the page involved, when the error concerns a page.
Group:
type: object
properties:
id:
type: number
description: Unique identifier of the group (folder).
name:
type: string
description: Name of the group (folder).
pages:
type: array
description: IDs of the pages in the group.
items:
type: number