Instapage Team Members API
Bulk-invite, re-role and remove the people with access to an Instapage workspace, including the inheritOwnerContextInPublicApi flag that charges a member's API calls to the workspace owner's daily quota.
Bulk-invite, re-role and remove the people with access to an Instapage workspace, including the inheritOwnerContextInPublicApi flag that charges a member's API calls to the workspace owner's daily quota.
openapi: 3.1.0
info:
title: Instapage Team Members API
description: 'Manage the people who have access to a workspace and their access levels.
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: Team Members
description: Manage the people who have access to a workspace and their access levels.
paths:
/workspaces/{workspaceId}/team-members:
get:
summary: Get all team members
description: Retrieve all team members for a specific workspace. This endpoint does not paginate.
operationId: listTeamMembers
tags:
- Team Members
parameters:
- &id001
in: path
name: workspaceId
required: true
description: The ID of the workspace.
schema:
type: number
responses:
'200':
description: The request was processed successfully.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TeamMember'
'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 resource 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: Invite team members
description: Invites multiple team members to join a workspace with specified accessLevels and an
optional developer flag. Only workspace owners and managers can invite new team members.
operationId: inviteTeamMembers
tags:
- Team Members
parameters:
- *id001
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
required:
- email
- accessLevel
properties:
email:
type: string
description: Email address of the user to invite.
accessLevel:
type: string
enum:
- viewer
- editor
- manager
description: Access level to assign to the user.
inheritOwnerContextInPublicApi:
type:
- boolean
- 'null'
description: 'If true, the user''s public API requests will count against the workspace
owner''s quota (default: false).'
responses:
'201':
description: Created. The team members were successfully invited.
'400':
description: Bad Request. Invalid input parameters or email format.
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. User doesn't have permission to invite members or team member limit
exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The workspace could not be found.
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'
put:
summary: Edit team member
description: Updates the roles alongside the developer flag of existing team members in a workspace.
Supports bulk role updates.
operationId: updateTeamMembers
tags:
- Team Members
parameters:
- *id001
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
required:
- email
- targetAccessLevel
properties:
email:
type: string
description: Email address of the team member to update.
targetAccessLevel:
type: string
enum:
- viewer
- editor
- manager
description: New role to assign.
inheritOwnerContextInPublicApi:
type:
- boolean
- 'null'
description: 'Set to true to allow the user''s public API requests to count against
the workspace owner''s quota (default: false).'
responses:
'201':
description: Created. The team member roles were successfully updated.
'400':
description: Bad Request. Invalid input parameters or duplicate emails in request.
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 doesn't have permission to modify roles or is attempting to
modify the owner's role.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. The workspace was not found or one or more team members don't exist
in the workspace.
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: Remove team members
description: Remove one or more team members from a workspace. Supports bulk removal operations.
operationId: removeTeamMembers
tags:
- Team Members
parameters:
- *id001
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
required:
- email
properties:
email:
type: string
description: Email address of the team member.
responses:
'201':
description: Created. Team members were successfully removed.
'400':
description: Bad Request. Invalid input parameters or attempting to remove the workspace owner.
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. User doesn't have necessary permissions (must be owner or manager).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found. Workspace not found.
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:
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.
TeamMember:
type: object
properties:
userId:
type: number
description: Unique identifier of the team member.
email:
type: string
description: Email address of the team member.
invitedAt:
type:
- number
- 'null'
description: Timestamp when the team member was invited (null if owner).
fullName:
type:
- string
- 'null'
description: Full name of the team member. Null if invitationStatus is 'pending'.
accessLevel:
type: string
description: Access level of the team member.
enum:
- viewer
- editor
- manager
- owner
inheritOwnerContextInPublicApi:
type: boolean
description: Whether the member's public API usage should consume the owner's quota.
invitationStatus:
type: string
description: Status of the invitation.
enum:
- accepted
- pending
lastLoginAt:
type:
- number
- 'null'
description: Timestamp of the team member's last login.
lastActivityInWorkspaceAt:
type:
- number
- 'null'
description: Timestamp of the team member's last activity in the workspace.