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 `.' 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.