openapi: 3.1.0 info: title: Instapage Assets API description: 'Image asset folders and images 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: Assets description: Image asset folders and images inside a workspace. paths: /workspaces/{workspaceId}/assets/images/folders: get: summary: Get image folders description: Get the list of image asset folders in a given workspace. operationId: listImageFolders tags: - Assets parameters: - &id001 in: path name: workspaceId required: true description: The ID of the workspace. schema: type: number - &id002 in: query name: page required: false description: Specifies which page to fetch. Used for pagination purposes. schema: type: number default: 1 responses: '200': description: OK. The folders were retrieved successfully. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ImageFolder' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request. The request was invalid. 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 permission to access this resource. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. The specified 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 error occurred on the server that prevented the folders from being retrieved. content: application/json: schema: $ref: '#/components/schemas/Error' /workspaces/{workspaceId}/assets/images/folders/{folderId}/items: get: summary: Get images in folder description: Get the list of images in a specific folder within a workspace's image assets. operationId: listImagesInFolder tags: - Assets parameters: - *id001 - in: path name: folderId required: true description: The ID of the folder to retrieve images from. schema: type: number - *id002 responses: '200': description: OK. The images were retrieved successfully. content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Image' meta: $ref: '#/components/schemas/PaginationMeta' '400': description: Bad request. The request was invalid. 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 permission to access this resource. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. The folder 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 error occurred on the server that prevented the images from being retrieved. content: application/json: schema: $ref: '#/components/schemas/Error' post: summary: Upload image description: Upload an image to a specific folder within a workspace's image assets, using multipart/form-data with the file field named 'image'. operationId: uploadImage tags: - Assets parameters: - *id001 - in: path name: folderId required: true description: The ID of the folder to upload the image to. schema: type: number requestBody: required: true content: multipart/form-data: schema: type: object required: - image properties: image: type: string format: binary description: The image file to upload. responses: '201': description: Created. The image was uploaded successfully. content: application/json: schema: type: object properties: data: type: object properties: imageId: type: number description: Unique identifier of the uploaded image. folderId: type: number description: ID of the folder the image was uploaded to. title: type: string description: Filename of the uploaded image. '400': description: Bad Request. Invalid input parameters, wrong file format, or file too large. 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 for this folder. content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found. The specified workspace or folder 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' 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: 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. ImageFolder: type: object properties: folderId: type: - number - string description: Unique identifier of the folder. folderName: type: string description: Name of the folder. systemFolder: type: boolean description: Indicates if the folder is a system folder and cannot be deleted. readOnly: type: boolean description: Indicates if the folder is read-only. Uploads and image deletion are prohibited in this mode. Image: type: object properties: id: type: number description: Unique identifier of the image. folderId: type: number description: ID of the folder containing the image. uri: type: string description: Full URL to the image. thumbnail: type: string description: URL to the thumbnail version of the image. fileName: type: string description: Original filename of the image. altText: type: - string - 'null' description: Alternative text for the image, null if not set.