The RocketPages REST API lets you manage websites, pages, sections, content, domains, images, and more via standard HTTP requests. Use this reference for integrations with curl, Postman, or custom code.
Base URL
https://api.rocketpages.io
Authentication
All requests require an API key in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Creating an API Key
API keys can only be created and revoked from the RocketPages dashboard. Navigate to Site Settings → API & MCP Access to generate a new key. You will need to provide a label and choose site access (all sites or specific sites). The API key is shown only once at creation time — copy and store it securely.
Response Format
All responses are JSON. Request bodies use camelCase keys, and responses are returned with snake_case keys.
Common Query Parameters
Most endpoints require siteId as a query parameter to identify the target site. Page-level endpoints also require pageId.
Rate Limiting
API requests are rate-limited. Default limits vary by endpoint. When limits are exceeded, a 429 Too Many Requests response is returned.
Error Response Format
{
"error": "Error message description",
"statusCode": 400
}
Status Code | Description |
|---|---|
200 | Success |
201 | Created |
400 | Bad Request (invalid parameters) |
401 | Unauthorized (missing or invalid API key) |
403 | Forbidden (insufficient permissions) |
404 | Not Found |
409 | Conflict (duplicate resource) |
429 | Rate Limit Exceeded |
500 | Internal Server Error |
GET /api/configs/users-site-configs
Retrieve all websites owned by or shared with the authenticated user.
Authentication: API key required
Parameters: None
Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/users-site-configs" \
-H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"site_id": "2e2b85c5-1b76-4e74-8e39-c82749386c53",
"site_name": "My Site",
"sub_domain": "mysite",
"is_published": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
POST /api/configs/generate-website
Create a new website with content. If you provide values for fields like headline, subheading, services, testimonials, faq, etc., your content is used exactly as provided. AI-generated content is only used for fields you leave empty or do not include. The only required field is websiteName — all other fields are optional.
Authentication: API key required
Request Body: A JSON object with a responses key containing website details.
Parameters (inside responses object):
websiteName (string, required) — Name of the websitecategory (string, optional) — Website category (e.g., "Portfolio", "Restaurant", "Photographer", "Events"). Helps AI generate relevant content for empty fields.headline (string, optional) — Main hero section headline. If not provided, AI generates one based on the category.subheading (string, optional) — Hero section subheading. If not provided, AI generates one.address (string, optional) — Address displayed in the footer. If not provided, the footer address is left empty.offerings (string, optional) — What the website offers. Helps AI tailor content when other fields are empty.about_title (string, optional) — About section title. If not provided, AI generates one.about_description (string, optional) — About section description. If not provided, AI generates one.services (array, optional) — Services list, each with title and description. If not provided, AI generates services based on category.services_description (string, optional) — Services section description. If not provided, AI generates one.testimonials (array, optional) — Testimonials, each with quote, name, subtitle, description. If not provided, AI generates sample testimonials.faq (array, optional) — FAQ items, each with question and answer. If not provided, AI generates relevant FAQs.palette (string, optional) — Color palette: "Bright", "Pastel", or "Dark". If not provided, a palette is selected automatically.meta_title (string, optional) — SEO meta title. If not provided, AI generates one from the website name.meta_description (string, optional) — SEO meta description. If not provided, AI generates one.Sample Request (minimal — AI generates all content):
curl -X POST "https://api.rocketpages.io/api/configs/generate-website" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"responses": {
"websiteName": "My Portfolio"
}
}'
Sample Request (with user content — no AI content used for provided fields):
curl -X POST "https://api.rocketpages.io/api/configs/generate-website" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"responses": {
"websiteName": "My Portfolio",
"category": "Portfolio",
"headline": "Welcome to My Portfolio",
"subheading": "Showcasing my best work",
"address": "123 Main St, City, State",
"offerings": "Web Design, Photography, Branding",
"about_title": "About Me",
"about_description": "I am a creative professional with 10 years of experience.",
"services": [
{ "title": "Web Design", "description": "Custom responsive websites" },
{ "title": "Photography", "description": "Professional photo shoots" }
],
"services_description": "Here is what I offer",
"testimonials": [
{ "quote": "Amazing work!", "name": "John", "subtitle": "Client", "description": "Delivered on time" }
],
"faq": [
{ "question": "What is your turnaround time?", "answer": "Typically 2 weeks." }
],
"palette": "Pastel",
"meta_title": "My Portfolio — Creative Professional",
"meta_description": "Portfolio showcasing web design, photography, and branding work."
}
}'
Sample Response:
{
"site_id": "r25d6cda2-822e-43ba-9833-81b4e56f4331",
"page_id": "jaf4a9117-c270-4878-833b-be280ffcce6b",
"site_name": "My Portfolio",
"sub_domain": "s5wl1j3z8m",
"site_url": "s5wl1j3z8m.rocketpages.io",
"editor_url": "https://editor.rocketpages.io/r25d6cda2?aipreview=true"
}
Note: This is a long-running operation. The response may take 60-120 seconds as content and images are generated.
POST /api/configs/create-from-template
Create a new website using an existing template as the starting point.
Authentication: API key required
Parameters:
templateId (string, required) — The template to create from. Call GET /api/configs/templates (List Templates) and use the site_id value from the template you want.siteName (string, optional) — Custom name for the new websitethemeId (string, optional) — Color theme ID to override the template's default palette. Call GET /api/configs/color-palettes (List Color Palettes) and use the id value from the palette you want. Available categories: Bright, Pastel, Dark.Sample Request:
curl -X POST "https://api.rocketpages.io/api/configs/create-from-template" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"siteName": "My New Site",
"themeId": "bbb3"
}'
Sample Response:
{
"message": "Site created from template",
"data": {
"site_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210",
"site_name": "My New Site",
"sub_domain": "my-new-site",
"site_url": "my-new-site.rocketpages.io",
"pages_count": 3,
"editor_url": "https://editor.rocketpages.io/f9e8d7c6",
"template_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
Notes:
template_id in the response matches the templateId you sent.site_id in the response is your newly created website's ID. Use it with all other endpoints that require siteId.GET /api/configs/site-config
Retrieve full website configuration including theme, domain, header, footer, and publish status.
Authentication: API key required
Parameters:
siteId (query string, required) — ID of the websiteSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-config?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"site_id": "SITE_ID",
"site_name": "My Site",
"sub_domain": "mysite",
"site_url": "mysite.rocketpages.io",
"is_published": true,
"palette": { ... },
"current_site_font": "font-001",
"current_site_buttons": "button-style-001",
"header": { ... },
"footer": { ... },
"add_on_users": [
{
"user_id": "user-uuid",
"email": "contributor@example.com",
"role": "editor"
}
]
}
POST /api/configs/append-site-config
Update website settings including name, subdomain, branding, and site-level configuration.
Authentication: API key required
Parameters:
siteId (string, required) — ID of the website to updatesiteName (string, optional) — New site display name (must be unique per user)subDomain (string, optional) — New subdomain (must be globally unique)faviconImage (string, optional) — URL of site favicon imagecolorPaletteId (string, optional) — ID of color palette to applyfontPairingId (string, optional) — ID of font pairing to applybuttonStyleId (string, optional) — ID of button style presetSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/append-site-config" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"siteName": "Updated Name",
"subDomain": "my-new-subdomain",
"faviconImage": "https://cdn.rocketpages.io/sites/SITE_ID/favicon.ico",
"colorPaletteId": "palette-001",
"fontPairingId": "font-001",
"buttonStyleId": "btn-001"
}'
Sample Response:
{
"message": "Site modified Successfully..!",
"data": {
"site_id": "SITE_ID",
"site_name": "Updated Name",
"sub_domain": "my-new-subdomain",
"site_url": "my-new-subdomain.rocketpages.io",
"palette": { ... },
"font": "font-001",
"buttons": "btn-001",
"favicon_image": "https://cdn.rocketpages.io/sites/SITE_ID/favicon.ico",
"is_published": true,
"updated_at": 1700000000000
}
}
Error Responses:
PUT /api/configs/site-header
Update the site header configuration (logo, navigation links, layout).
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDheader (object, required) — The header configuration objectSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/site-header" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"header": {
"logo": "https://cdn.rocketpages.io/sites/SITE_ID/logo.png",
"links": [
{ "text": "Home", "href": "/" },
{ "text": "About", "href": "/about" }
]
}
}'
Sample Response:
{
"message": "Header updated",
"site_id": "SITE_ID"
}
Error Responses:
PUT /api/configs/site-footer
Update the site footer configuration (links, social media, copyright text).
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDfooter (object, required) — The footer configuration objectSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/site-footer" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"footer": {
"copyright": "© 2024 My Company",
"socialLinks": [
{ "platform": "twitter", "url": "https://twitter.com/mycompany" }
]
}
}'
Sample Response:
{
"message": "Footer updated",
"site_id": "SITE_ID"
}
Error Responses:
POST /api/configs/delete-site
Permanently delete a website and all its pages, images, and custom domains.
Authentication: API key required
Parameters:
siteId (string, required) — ID of the website to deleteSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/delete-site" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID"
}'
Sample Response:
{
"message": "Data deleted successfully..."
}
Error Responses:
POST /api/configs/publish
Publish the entire website or a specific page. Uses a distributed lock to prevent concurrent publishes.
Authentication: API key required
Parameters:
siteId (string, required) — ID of the website to publishpublishAllPages (boolean, optional) — Set to true to publish all pagespageId (string, optional) — Publish only a specific page — retrieve from GET /api/configs/all-pagesSample Request (publish all pages):
curl -X POST "https://api.rocketpages.io/api/configs/publish" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"publishAllPages": true
}'
Sample Request (publish single page):
curl -X POST "https://api.rocketpages.io/api/configs/publish" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID"
}'
Sample Response:
{
"message": "Publish queued",
"queued": true,
"publish_lock_id": "lock-uuid"
}
Note: If a publish is already in progress, the response will return { "running": true } instead.
GET /api/configs/check-publish-status
Poll the publish status for a site or specific page. Use this after calling Publish Website or Publish Page to check progress.
Authentication: API key required
Parameters:
siteId (query string, required*) — The site IDpageId (query string, optional) — If provided without siteId, the site is auto-resolved from the pageSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/check-publish-status?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"status": "Completed",
"stuck": false,
"publish_batch_start": 0,
"publish_batch_size": 5,
"publish_last_heartbeat_at": 1718888400000,
"publish_error": null,
"page_id": null,
"page_status": null
}
Status Values:
Running — Publish is in progressCompleted — Publish finished successfullyFailed — Publish failed (check publish_error)Error Responses:
POST /api/configs/publish/resume
Resume a stuck full-site publish from its last checkpoint. Use this when check-publish-status reports stuck: true.
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/publish/resume" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID"
}'
Sample Response:
{
"resumed": true,
"message": "Publish resumed from checkpoint"
}
Error Responses:
POST /api/configs/duplicate-site
Create a full copy of an existing website including all pages, images, and configuration. The duplicated site is created as unpublished.
Authentication: API key required
Parameters:
siteId (string, required) — ID of the website to duplicateSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/duplicate-site" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID"
}'
Sample Response:
{
"message": "Site Duplicated Successfully..!",
"data": {
"site_id": "new-site-uuid",
"site_name": "My Site Copy",
"sub_domain": "auto-generated",
"site_url": "auto-generated.rocketpages.io",
"pages_count": 3,
"images_count": 12,
"editor_url": "https://editor.rocketpages.io/new-site-uuid"
}
}
GET /api/configs/templates
Retrieve all available website templates. Supports filtering and pagination.
Authentication: API key required
Parameters:
category (query string, optional) — Filter by template category (case-insensitive partial match)name (query string, optional) — Filter by exact template nameminPages (query string, optional) — Filter by minimum page countoffset (query string, optional, default: 0) — Pagination offsetlimit (query string, optional, default: 10) — Number of templates to returnAvailable Categories:
Artfolio, Artists, Church, Education, Events and Celebrations, Games, Health and Wellness, Influencer, Legal, Massage Therapist, Musicians, NGO, Non profit, Photographer, Portfolio, Rental, Restaurant, Retail, Services, Travel Agency
Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/templates?category=portfolio&limit=5" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"total": 12,
"offset": 0,
"limit": 5,
"templates": [
{
"site_id": "tpl-001",
"template_name": "Starter Portfolio",
"categories": ["Portfolio", "Creative"],
"color_palette_ids": ["palette-001", "palette-002"],
"page_count": 3,
"preview_url": "https://preview.rocketpages.io/tpl-001"
}
]
}
DELETE /api/configs/redirect
Remove a redirect rule from the website.
Authentication: API key required
Parameters:
siteId (query string, required) — ID of the websitefrom (query string, required) — The source path of the redirect to removeSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/redirect?siteId=SITE_ID&from=/old-page" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Redirect removed",
"remaining_redirects": 2
}
Error Responses:
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
GET /api/configs/all-pages
Retrieve all pages for a website. Returns lightweight page metadata without full section configs.
Authentication: API key required
Parameters:
siteId (query string, required) — ID of the websiteincludePostConfigs (query string, optional) — Set to "true" to include blog post configurationsSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/all-pages?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"page_id": "PAGE_ID",
"page_name": "Home",
"site_id": "SITE_ID",
"page_url": "/",
"is_home_page": true,
"is_published": true,
"page_type": "page",
"show_toc": false,
"created_at": "2024-01-15T10:30:00.000Z"
}
]
}
POST /api/configs/page
Create a new page for a website. The server auto-generates a unique pageId and, optionally, a URL slug derived from the page name. This is the recommended endpoint for creating pages via the API — it guarantees globally unique page IDs and validates slug uniqueness within the site.
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site to add the page topage_name (string, required) — Display name for the page (e.g., "About Us")page_url (string, optional) — URL slug (e.g., "/about"). Auto-generated from page_name if not provided. Must be unique within the site. The reserved slug /blog is not allowedis_home_page (boolean, optional, default false) — Set as homepage. When true, page_url is set to empty stringmeta_title (string, optional) — SEO meta titlemeta_description (string, optional) — SEO meta descriptionshow_toc (boolean, optional, default false) — Enable table of contents sidebarSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/page" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"page_name": "About Us",
"meta_title": "About Us - My Website",
"meta_description": "Learn more about our company"
}'
Sample Response (201 Created):
{
"message": "Page created",
"page_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p",
"site_id": "SITE_ID",
"page_name": "About Us",
"page_url": "/about-us"
}
Error Responses:
400 — Missing required parameters (siteId, page_name) or reserved slug /blog401 — Unauthorized (invalid API key or no access to site)409 — Duplicate slug (URL already used by another page in the site)500 — Internal server errorGET /api/configs/check-slug
Check whether a page URL slug is available within a site. Use this before creating or renaming a page to avoid conflicts.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDpageUrl (query string, required) — The slug to check (e.g., /about)excludePageId (query string, optional) — Page ID to exclude from the check (use when updating an existing page's URL)Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/check-slug?siteId=SITE_ID&pageUrl=/about" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response (available):
{
"duplicate": false
}
Sample Response (taken):
{
"duplicate": true,
"existing_page": {
"page_id": "existing-page-uuid",
"page_name": "About Us"
}
}
Error Responses:
PUT /api/configs/page-config
Create a new page for a site. Returns 409 if a page with the same pageId already exists.
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site to add the page topageId (string, required) — Client-generated unique identifier (any valid UUID string)pageName (string, required) — Display name (e.g., "About Us", "Contact")pageUrl (string, required) — URL slug (e.g., "/about"). Must be unique within the site. Use "/" for homepage.metaTitle (string, optional) — Page meta title for SEOmetaDescription (string, optional) — Page meta description for SEOisHomePage (boolean, optional) — Set as the site's homepageshowToc (boolean, optional) — Show table of contents on the pageSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/page-config" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "b4ddafaa-21d0-44e1-96bc-36e4fceb77ab",
"pageId": "contact-page",
"pageName": "Contact",
"pageUrl": "/contact",
"metaTitle": "Contact Us",
"metaDescription": "Get in touch with us",
"isHomePage": false,
"showToc": false
}'
Sample Response:
{
"message": "Page Created Successfully..!",
"data": {
"site_id": "b4ddafaa-21d0-44e1-96bc-36e4fceb77ab",
"page_id": "contact-page",
"page_name": "Contact",
"page_url": "/contact",
"meta_title": "Contact Us",
"meta_description": "Get in touch with us",
"is_home_page": false,
"show_toc": false
}
}
DELETE /api/configs/page-config
Permanently delete a page and all its sections from a website.
Authentication: API key required
Parameters (query string):
siteId (string, required) — The site containing the pagepageId (string, required) — ID of the page to delete — retrieve from GET /api/configs/all-pagesSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/page-config?siteId=SITE_ID&pageId=PAGE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Page deleted successfully"
}
POST /api/configs/duplicate-page-config
Create a full copy of a page including all its sections and content.
Authentication: API key required
Parameters:
pageId (string, required, JSON body) — ID of the page to duplicate — retrieve from GET /api/configs/all-pagesSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/duplicate-page-config" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pageId": "PAGE_ID"
}'
Sample Response:
{
"message": "Page duplicated successfully",
"data": {
"page_id": "new-page-uuid",
"page_name": "Contact Copy",
"page_url": "/contact-copy"
}
}
POST /api/configs/publish-page
Publish a specific page. You can also publish the entire site — see Publish Website.
Authentication: API key required
Parameters:
siteId (string, required, JSON body) — The site containing the pagepageId (string, required, JSON body) — ID of the page to publish — retrieve from GET /api/configs/all-pagesSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/publish-page" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID"
}'
Sample Response:
{
"message": "Page publish initiated",
"site_id": "SITE_ID",
"page_id": "PAGE_ID"
}
GET /api/configs/page-config
Retrieve the full page configuration including metadata. If the page has sections, they are included in the configs array.
Authentication: API key required
Parameters:
pageId (query string, required) — The page ID — retrieve from GET /api/configs/all-pagesSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/page-config?pageId=PAGE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"page_id": "PAGE_ID",
"site_id": "SITE_ID",
"page_name": "Contact",
"page_url": "/contact",
"is_home_page": false,
"is_published": true,
"show_toc": false,
"meta_title": "Contact Us",
"meta_description": "Get in touch with us",
"publishing_status": "Completed",
"updated_at": 1785080407681,
"configs": [
{
"id": "section-uuid",
"uid": "section-uuid",
"w": "contact",
"c": { "n": "contact_v1", "c": { ... }, "s": { ... } }
}
]
}
Note: The configs array contains raw section data and is only present if the page has sections. Pages created with metadata only (e.g., via PUT /page-config without a configs array) will not include this field. Use POST /api/configs/append-page-config (Add Section) to add sections to a page.
GET /api/configs/page-sections
Retrieve all sections for a page in a structured, readable format. Returns section metadata, content, and style properties with human-readable names. This is an alternative to GET /api/configs/page-config which returns the raw internal format.
Authentication: API key required
Parameters:
pageId (query string, required) — The page ID — retrieve from GET /api/configs/all-pagesSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/page-sections?pageId=PAGE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"page_id": "PAGE_ID",
"site_id": "SITE_ID",
"section_count": 3,
"sections": [
{
"index": 0,
"section_id": "sec-uuid-001",
"section_uid": "sec-uuid-001",
"type": "welcome",
"layout": "welcome_v1",
"title": "<h1>Welcome</h1>",
"description": "<p>Hero section text</p>",
"style": {
"background_color": "#ffffff",
"title_font_size": "large"
}
},
{
"index": 1,
"section_id": "sec-uuid-002",
"type": "services",
"layout": "services_v1",
"title": "<h2>Our Services</h2>"
}
]
}
Error Responses:
GET /api/configs/layouts
List available layouts for a given section type. Use this before adding or changing section layouts.
Authentication: API key required
Parameters:
section_type (query string, required) — One of: welcome, about, services, features, products, testimonials, faq, contact, gallery, team, text, table, promotion, video, clients, separator, menu, pricing_cards, pricing_table, events, video_gallerySample Request:
curl -X GET "https://api.rocketpages.io/api/configs/layouts?section_type=services" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"layouts": [
{
"layout_id": "services_v1",
"description": "Three column grid — icon cards"
},
{
"layout_id": "services_v2",
"description": "Two column grid — icon cards"
}
]
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
All section types available in the RocketPages API, grouped by how they are managed.
Sections with repeatable items — use POST/PUT/DELETE /api/configs/section-item
services — Service cards with title, description, image, buttonfeatures — Feature cards with title, description, image, buttonfeatures_interactive — Animated feature cards with title, description, image, buttonproducts — Product cards with title, description, image, buttontestimonials — Testimonial cards with quote, name, designation, imageteam — Team member cards with name, designation, description, image, social linksclients — Client logo cards with logo image and nameevents — Event cards with title, description, date, time, address, organizers, imagegallery — Gallery image cards with image and captionfaq — FAQ items with question and answer (also has dedicated faq-item endpoints)menu — Restaurant menu tabs with categories and food itemspricing_cards — Pricing plan cards with title, price, description, features, buttonpricing_table — Pricing table columns with title, price, description, buttonwelcome_slider — Hero slider slides with title, description, image, buttons, backgroundvideo_gallery — Video gallery items with embedded video URL and descriptionSingle-content sections — use PUT /api/configs/page-section
welcome — Hero section with title, description, image, buttonswelcome_interactive — Animated hero sectionabout — About section with title, description, imagepromotion — Promotional banner with title, description, buttoncontact — Contact form sectiontext — Free-form text content blockvideo — Single embedded video sectionseparator — Visual divider between sectionspost_list — Blog post listing (content managed via blog endpoints)Table sections — use table-column and table-row endpoints
table — Data table with columns, rows, and cellsProtected sections — cannot be added, deleted, or reordered
header — Site header (use update_header)footer — Site footer (use update_footer)header_banner — Announcement banner above headerpage_settings — Internal page configurationpost — Blog post content (managed via blog endpoints)powered_by_rocketPages — Branding sectionrocketPages_branding — Branding sectionPOST /api/configs/add-section
Add a new section to a page at a specified position. The section is created with default content and styling based on the section type and layout.
Authentication: API key required
Parameters:
siteId (string, required) — The site IDpageId (string, required) — The page ID — retrieve from GET /api/configs/all-pagessectionType (string, required) — Section type. Supported values: welcome, welcome_interactive, welcome_slider, about, services, features, features_interactive, products, testimonials, faq, contact, gallery, team, text, table, promotion, video, video_gallery, clients, menu, events, pricing_cards, pricing_table, post_list, separator. Restricted (cannot be added manually): post, header, footer, powered_by_rocketPages, rocketPages_branding, header_banner, page_settingslayout (string, required) — Layout ID for the section type. Retrieve valid layouts from GET /api/configs/layouts?section_type=TYPEposition (number, optional) — 0-based index to insert the section at. If omitted, the section is appended at the end of the pagetitle (string, optional) — Section title in plain text. Automatically wrapped in <h1><strong>...</strong></h1> for hero sections (welcome, welcome_interactive, video) or <h2><strong>...</strong></h2> for all other section types. If omitted, a default title is generated based on the section typedescription (string, optional) — Section description in plain text. Automatically wrapped in <h3>...</h3>. If omitted, a default description is generated based on the section typeAccepts: Both query string parameters and JSON body. Body parameters take precedence.
Sample Request:
curl -X POST "https://api.rocketpages.io/api/configs/add-section" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionType": "services",
"layout": "services_v1",
"position": 2,
"title": "Our Services",
"description": "Professional solutions tailored to your needs"
}'
Sample Response (200):
{
"message": "Section added successfully",
"data": {
"section_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "services",
"layout": "services_v1",
"index": 2
}
}
Error Responses:
400 — Missing required parameters, unknown section type, invalid layout, or restricted section type401 — Unauthorized (invalid or missing API key)404 — Page not found500 — Internal server errorPUT /api/configs/page-section
Update a section's content, layout, image, CTA buttons/links, and styling.
Authentication: API key required
Parameters:
pageId (string, required) — The page ID — retrieve from GET /api/configs/all-pagessection_index (number, required*) — 0-based index of the section to updatesection_type (string, required*) — Section type (e.g., welcome, about, services). If multiple sections of the same type exist, use section_index instead. When provided together with section_index, the endpoint validates that the section at the given index matches this type — returns 400 if they don't matchtitle (string, optional) — Section title (plain text or HTML)description (string, optional) — Section description (HTML)layout (string, optional) — New layout ID — retrieve valid layouts from GET /api/configs/layouts?section_type=TYPE. Validated against the layout catalog for the section type — returns 400 with the list of valid layouts if invalidimage_url (string, optional) — Section image URL. Sets the main section image (e.g., for about, welcome sections)image_alt (string, optional) — Alt text for the section image. Can be sent with or without image_url (to update alt text on an existing image)links (array, optional) — CTA buttons/links. Replaces all existing section-level links. Each link object supports: text (string, required), href (string, default "/"), type ("button_primary" | "button_secondary" | "link", default "button_primary"), action ("page" | "scroll" | "web" | "tel" | "mail", default "page"), section_id (string, for scroll action), page_id (string, for page/scroll action)background_color (string, optional) — Background color (hex)section_border_color (string, optional) — Section border color (hex)section_border_width (string, optional) — Section border width: none, thin, medium, thicktitle_font_size (string, optional) — Title font size: extra-small, small, medium, large, extra-largetitle_font_weight (string, optional) — Title font weight: normal, boldtitle_font_color (string, optional) — Title font color (hex)title_font_family (string, optional) — Title font familydescription_font_size, description_font_weight, description_font_color, description_font_family (string, optional) — Description font stylingspacing_vertical, spacing_horizontal (string, optional) — Section padding: none, small, medium, largeimage_border_radius, image_border_width, image_border_color, image_opacity, image_overlay_color (optional) — Section image stylingbackground_image_* (optional) — Background image styling properties* Either section_index or section_type is required.
Sample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/page-section" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"pageId": "PAGE_ID",
"section_index": 2,
"section_type": "about",
"title": "About Us",
"description": "<p>We are a team of professionals</p>",
"image_url": "https://cdn.rocketpages.io/sites/SITE_ID/images/about.jpg",
"image_alt": "Team photo",
"links": [
{
"text": "Get Started",
"type": "button_primary",
"action": "page",
"href": "/contact"
},
{
"text": "Learn More",
"type": "button_secondary",
"action": "web",
"href": "https://example.com"
}
],
"background_color": "#f5f5f5"
}'
Sample Response (200):
{
"message": "Section updated",
"page_id": "PAGE_ID",
"section_index": 2,
"section_type": "about"
}
Error Responses:
400 — Missing required parameters, section type mismatch, or invalid layout ID401 — Unauthorized (invalid or missing API key)404 — Page or section not found500 — Internal server errorSection Type Mismatch (400):
{
"error": "Section type mismatch: section at index 2 is \"services\", not \"about\"",
"actual_section_type": "services",
"section_index": 2
}
Invalid Layout (400):
{
"error": "Invalid layout 'about_v1' for section type 'services'",
"valid_layouts": [
{ "id": "services_v1", "description": "Three column grid - icon cards" },
{ "id": "services_v3", "description": "Three column grid - image cards" }
]
}
DELETE /api/configs/page-section
Remove a section from a page. Remaining sections are automatically reindexed.
Authentication: API key required
Parameters (query string):
siteId (string, required) — The site IDpageId (string, required) — The page ID — retrieve from GET /api/configs/all-pagessection_id (string, required) — ID of the section to delete — retrieve from GET SECTION IDSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/page-section?siteId=SITE_ID&pageId=PAGE_ID§ion_id=sec-uuid-001" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Section deleted",
"page_id": "PAGE_ID",
"deleted_section_type": "services",
"deleted_index": 2
}
POST /api/configs/duplicate-section
Create a copy of a section and insert it directly after the original. All nested IDs (section, items, links) are regenerated.
Authentication: API key required
Parameters (JSON body):
pageId (string, required) — The page ID — retrieve from GET /api/configs/all-pagessiteId (string, required) — The site IDsection_index (number, required) — 0-based index of the section to duplicate — retrieve from GET /api/configs/page-sections section IDs [Get SECTION IDS]Sample Request:
curl -X POST "https://api.rocketpages.io/api/configs/duplicate-section" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"section_index": 2
}'
Sample Response (200):
{
"message": "Section duplicated",
"page_id": "PAGE_ID",
"original_index": 2,
"new_index": 3,
"new_section_uid": "k7a3b2c1d0e9f8g7h6i5j4k3l2m1n0o",
"section_type": "services"
}
Error Responses:
400 — Missing required parameters (pageId, section_index), invalid index, or protected section type401 — Unauthorized (invalid or missing API key)404 — Page not found500 — Internal server errorPOST /api/configs/reorder-sections
Change the order of sections on a page by providing the new ordering.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDpageId (query string, required) — The page ID — retrieve from GET /api/configs/all-pagessectionIds (string[], required) — Array of section IDs in the desired new order GET SECTION IDSSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/reorder-sections?siteId=SITE_ID&pageId=PAGE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sectionIds": ["sec-uuid-003", "sec-uuid-001", "sec-uuid-002"]
}'
Sample Response:
{
"message": "Sections reordered successfully"
}
Manage repeatable items within sections. See
Supported Section Types
at the top of this page for the full list of section types and which endpoints to use for each.
POST /api/configs/section-item
Add a new item to a repeatable section. Each section type uses different fields to create items that match the editor UI defaults.
Authentication: API key required via Authorization: Bearer YOUR_API_KEY
Request Body Parameters:
siteId (required) — The site IDpageId (required) — The page IDsection_type (required) — Section type (see Supported Section Types)section_index (optional) — 0-based index when multiple sections of the same type existtitle (optional) — Item title (HTML supported)description (optional) — Item description textsubtitle (optional) — Used by team (designation), menu (category label), testimonials (name)image_url (optional) — Item image path or URLimage_alt (optional) — Image alt textSupported Section Types: See Supported Section Types section at the top of this page for the full list.
Sample Response:
{"message":"Item added","page_id":"PAGE_ID","section_type":"services","section_index":3,"item_index":4,"item_id":"abc123..."}
Services
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"services","section_index":3,"title":"<h3><strong>Digital Marketing</strong></h3>","description":"Drive growth with data-driven digital marketing strategies tailored to your business.","image_url":"/images/services/image3.jpg","image_alt":"digital marketing service"}'
Features
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"features","section_index":5,"title":"<h3><strong>Cloud Integration</strong></h3>","description":"Seamlessly connect your tools and workflows with our cloud-native integration platform.","image_url":"/images/features/image3.jpg","image_alt":"cloud integration feature"}'
Features Interactive (Animated)
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"features_interactive","section_index":6,"title":"<h3><strong>Real-Time Analytics</strong></h3>","description":"Monitor performance metrics in real time with interactive dashboards and alerts.","image_url":"/images/features_interactive/image3.jpg","image_alt":"real-time analytics feature"}'
Clients
Fields: description (client name), image_url (logo), image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"clients","section_index":7,"description":"Acme Corporation","image_url":"/images/clients/logo3.svg","image_alt":"Acme Corporation logo"}'
Events
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"events","section_index":8,"title":"<h3><strong>Annual Tech Summit 2026</strong></h3>","description":"Join industry leaders for a day of keynotes, workshops, and networking opportunities.","image_url":"/images/events/image1.jpg","image_alt":"tech summit event"}'
Gallery
Fields: description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"gallery","section_index":9,"description":"Office headquarters exterior view","image_url":"/images/gallery/image3.jpg","image_alt":"office headquarters"}'
FAQ
Fields: title (question), description (answer)
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"faq","section_index":10,"title":"<h3><strong>What payment methods do you accept?</strong></h3>","description":"We accept all major credit cards, PayPal, and bank transfers. Enterprise clients can also pay via invoice with NET-30 terms."}'
Menu
Fields: title (tab label), subtitle (category name), image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"menu","section_index":11,"title":"Beverages","subtitle":"<h3><strong>Drinks</strong></h3>","image_url":"/images/menu/menu2.jpg","image_alt":"beverages menu"}'
Pricing Cards
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"pricing_cards","section_index":12,"title":"<h3><strong>Enterprise</strong></h3>","description":"Unlimited access with dedicated support and custom integrations","image_url":"/images/pricing/icon2.svg","image_alt":"enterprise plan"}'
Pricing Table
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"pricing_table","section_index":13,"title":"<h3><strong>Business</strong></h3>","description":"Advanced features for growing teams with priority support","image_url":"/images/pricing/icon3.svg","image_alt":"business plan"}'
Testimonials
Fields: title (quote), description, subtitle (person name), image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"testimonials","section_index":14,"title":"<h3>Their platform transformed how we manage our entire workflow. Highly recommended!</h3>","description":"We switched from three separate tools to this single platform and never looked back.","subtitle":"<strong>Sarah Mitchell</strong>","image_url":"/images/testimonials/image2.jpg","image_alt":"Sarah Mitchell"}'
Team
Fields: title (name), description, subtitle (designation), image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"team","section_index":15,"title":"<h3><strong>Ms. Jennifer</strong></h3>","description":"Over 10 years of experience in product design and user experience research.","subtitle":"<strong>Lead Designer</strong>","image_url":"/images/team/image2.jpg","image_alt":"Jennifer lead designer"}'
Products
Fields: title, description, image_url, image_alt
curl -X POST "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"products","section_index":16,"title":"<h3><strong>Premium Headphones</strong></h3>","description":"Noise-cancelling wireless headphones with 40-hour battery life and studio-quality sound.","image_url":"/images/products/image3.jpg","image_alt":"premium headphones"}'
Note: When optional fields are omitted, the API auto-generates default content matching the editor UI — including placeholder text, default images, buttons, and shadows where applicable.
PUT /api/configs/section-item
Update an existing item by index within a repeatable section. Only the fields you include will be changed — all other fields remain untouched.
Authentication: API key required via Authorization: Bearer YOUR_API_KEY
Request Body Parameters:
pageId (required) — The page IDsection_type (required) — Section type (see Supported Section Types)item_index (required) — 0-based index of the item to updatesection_index (optional) — 0-based section index when multiple sections of the same type existtitle (optional) — New item title (HTML supported)description (optional) — New item descriptionsubtitle (optional) — New subtitle (name for testimonials, designation for team)image_url (optional) — New item image path or URLimage_alt (optional) — New image alt textSample Response:
{"message":"Item updated","page_id":"PAGE_ID","section_type":"services","item_index":0}
Services / Features / Products / Features Interactive
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"services","section_index":3,"item_index":0,"title":"<h3><strong>Updated Service Title</strong></h3>","description":"Updated description for this service.","image_url":"/images/services/image4.jpg","image_alt":"updated service image"}'
Testimonials
Use subtitle to update the person's name.
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"testimonials","item_index":1,"title":"<h3>An amazing experience from start to finish!</h3>","description":"The team went above and beyond to deliver exactly what we needed.","subtitle":"<strong>John Davis</strong>","image_url":"/images/testimonials/image3.jpg","image_alt":"John Davis"}'
Team
Use subtitle to update the member's designation.
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"team","item_index":0,"title":"<h3><strong>Dr. Emily Chen</strong></h3>","description":"15 years of experience in artificial intelligence and machine learning research.","subtitle":"<strong>Chief Technology Officer</strong>","image_url":"/images/team/image3.jpg","image_alt":"Dr. Emily Chen CTO"}'
Clients
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"clients","item_index":2,"description":"Global Tech Inc.","image_url":"/images/clients/logo5.svg","image_alt":"Global Tech logo"}'
Events
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"events","item_index":0,"title":"<h3><strong>Product Launch 2026</strong></h3>","description":"Be the first to see our latest innovations at the annual product launch event.","image_url":"/images/events/image2.jpg","image_alt":"product launch event"}'
Gallery
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"gallery","item_index":1,"description":"Team collaboration workspace","image_url":"/images/gallery/image5.jpg","image_alt":"team workspace"}'
FAQ
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"faq","item_index":0,"title":"<h3><strong>How do I cancel my subscription?</strong></h3>","description":"You can cancel anytime from your account settings. Your access continues until the end of the current billing period."}'
Pricing Cards / Pricing Table
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"pricing_cards","item_index":0,"title":"<h3><strong>Starter</strong></h3>","description":"Perfect for individuals and small projects getting started.","image_url":"/images/pricing/icon1.svg","image_alt":"starter plan"}'
Products
curl -X PUT "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","section_type":"products","item_index":0,"title":"<h3><strong>Wireless Earbuds</strong></h3>","description":"Compact true wireless earbuds with active noise cancellation and 8-hour battery.","image_url":"/images/products/image2.jpg","image_alt":"wireless earbuds"}'
Note: Only include the fields you want to change. Omitted fields will keep their current values.
DELETE /api/configs/section-item
Remove an item from a repeatable section by index. The style array is automatically synced and remaining items are reindexed.
Authentication: API key required via Authorization: Bearer YOUR_API_KEY
Request Body Parameters:
pageId (required) — The page IDsection_type (required) — Section type (see Supported Section Types)item_index (required) — 0-based index of the item to removesiteId (optional) — The site IDsection_index (optional) — 0-based section index when multiple sections of the same type existSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/section-item" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"pageId":"PAGE_ID","siteId":"SITE_ID","section_type":"services","section_index":3,"item_index":2}'
Sample Response:
{"message":"Item removed","page_id":"PAGE_ID","section_type":"services","removed_index":2,"remaining_count":3}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
POST /api/configs/table-column/add
Add a new column to a table section. Automatically adds empty cells to all existing rows.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDheader (string, required) — Column header textSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/table-column/add" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"header": "Price"
}'
Sample Response:
{
"message": "Column added successfully",
"data": {
"column_index": 3,
"header": "Price"
}
}
POST /api/configs/table-column/update
Update a table column's header text by index.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDcolumn_index (number, required) — 0-based column index to updateheader (string, required) — New column header textSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/table-column/update" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"column_index": 0,
"header": "Updated Header"
}'
Sample Response:
{
"message": "Column updated successfully"
}
POST /api/configs/table-column/remove
Remove a column from a table by index. Also removes corresponding cells from every row.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDcolumn_index (number, required) — 0-based column index to removeSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/table-column/remove" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"column_index": 2
}'
Sample Response:
{
"message": "Column removed successfully"
}
POST /api/configs/table-row/add
Add a new row to a table section. Cells are automatically padded or trimmed to match the current column count.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDcells (array of strings, required) — Cell values for the new rowSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/table-row/add" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"cells": ["Row Value 1", "Row Value 2", "Row Value 3"]
}'
Sample Response:
{
"message": "Row added successfully",
"data": {
"row_index": 5
}
}
POST /api/configs/table-row/update
Update a row's cell values by index. You can replace all cells or update a single cell.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDrow_index (number, required) — 0-based row index to updatecells (array of strings, optional) — Replace all cells in the rowcell_index (number, optional) — 0-based cell index for single cell updatevalue (string, optional) — New value for single cell updateUse either cells to replace the entire row, or cell_index + value to update a single cell.
Sample Request (update entire row):
curl -X POST "https://api.rocketpages.io/api/configs/table-row/update" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"row_index": 0,
"cells": ["Updated 1", "Updated 2", "Updated 3"]
}'
Sample Request (update single cell):
curl -X POST "https://api.rocketpages.io/api/configs/table-row/update" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"row_index": 0,
"cell_index": 1,
"value": "New Cell Value"
}'
Sample Response:
{
"message": "Row updated successfully"
}
POST /api/configs/table-row/remove
Remove a row from a table by index.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsectionId (string, required) — Table section IDrow_index (number, required) — 0-based row index to removeSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/table-row/remove" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"sectionId": "table-sec-uuid",
"row_index": 2
}'
Sample Response:
{
"message": "Row removed successfully"
}
PUT /api/configs/page-section
Update table visual settings like borders, striped rows, and colors. Uses the general section update endpoint with table-specific fields.
Authentication: API key required
Parameters:
siteId (string, optional) — The site IDpageId (string, required) — The page IDsection_type (string, required) — Must be "table"section_index (number, required) — 0-based section indextable_striped (boolean, optional) — Enable alternating row colorstable_striped_color (string, optional) — Alternating row background color (hex)table_border_color (string, optional) — Table border color (hex)table_border_width (string, optional) — Border width: "none", "thin", "medium", "thick"table_border_radius (string, optional) — Border radius: "sharp", "rounded", "curve", "medium_round"table_header_background_color (string, optional) — Header row background color (hex)table_header_font_color (string, optional) — Header text color (hex)table_cell_font_color (string, optional) — Cell text color (hex)Sample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/page-section" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"section_type": "table",
"section_index": 0,
"table_striped": true,
"table_striped_color": "#f5f5f5",
"table_border_color": "#e0e0e0",
"table_border_width": "thin",
"table_border_radius": "rounded",
"table_header_background_color": "#1a365d",
"table_header_font_color": "#ffffff",
"table_cell_font_color": "#333333"
}'
Sample Response:
{
"message": "Section updated successfully"
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
POST /api/configs/blog
Update blog configuration for a site. The entire request body is stored as the site's blogConfig object, so you can include any configuration keys you need.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDRequest Body: A JSON object that becomes the site's blog configuration. Common fields include:
enabled (boolean, optional) — Enable or disable the blogpostsPerPage (number, optional) — Number of posts shown per pageshowAuthor (boolean, optional) — Show author name on postsshowDate (boolean, optional) — Show date on postsSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/blog?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"postsPerPage": 10,
"showAuthor": true,
"showDate": true
}'
Sample Response:
{
"message": "Blog Updated Successfully..!",
"data": {
"site_id": "SITE_ID",
"blog_config": {
"enabled": true,
"posts_per_page": 10,
"show_author": true,
"show_date": true
}
}
}
Error Responses:
GET /api/configs/site-update-blog-setting
Enable or disable the blog for a site. When enabled, a /blog page is activated on the published site. When disabled, the blog page is removed.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDstatus (query string, required) — "true" to enable, "false" to disableSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-update-blog-setting?siteId=SITE_ID&status=true" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Blog setting updated..."
}
POST /api/configs/upsert-post
Create a new blog post. Posts are stored as page objects with pageType: "post".
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDpageId (string, required) — Unique identifier for the post (any valid string, e.g. a UUID)pageName (string, required) — Blog post titlepageType (string, required) — Must be "post" or "blog"pageUrl (string, required) — URL path for the post (e.g., /blog/my-first-post)slug (string, optional) — URL slug (e.g., my-first-post)configs (array, required) — Array of content blocks. Can be an empty array [] for a blank postSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/upsert-post" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "post-uuid-001",
"pageName": "Getting Started with RocketPages",
"pageType": "post",
"pageUrl": "/blog/getting-started",
"slug": "getting-started",
"configs": [
{
"p": "post",
"c": {
"c": {
"d": "<p>Welcome to our first blog post...</p>"
}
}
}
]
}'
Sample Response:
{
"post_id": "post-uuid-001",
"site_id": "SITE_ID",
"title": "Getting Started with RocketPages",
"slug": "getting-started",
"page_url": "/blog/getting-started",
"is_published": false
}
Error Responses:
POST /api/configs/upsert-post
Update an existing blog post. Uses the same endpoint as create — include the same pageId to update an existing post. Only include the fields you want to change along with the required fields.
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDpageId (string, required) — ID of the existing post to updatepageName (string, required) — Updated post titlepageType (string, required) — Must be "post" or "blog"pageUrl (string, required) — Updated URL pathslug (string, optional) — Updated URL slugconfigs (array, required) — Updated content blocks arraySample Request:
curl -X POST "https://api.rocketpages.io/api/configs/upsert-post" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "post-uuid-001",
"pageName": "Updated: Getting Started with RocketPages",
"pageType": "post",
"pageUrl": "/blog/getting-started",
"slug": "getting-started",
"configs": [
{
"p": "post",
"c": {
"c": {
"d": "<p>Updated blog post content...</p>"
}
}
}
]
}'
Sample Response:
{
"post_id": "post-uuid-001",
"site_id": "SITE_ID",
"title": "Updated: Getting Started with RocketPages",
"slug": "getting-started",
"page_url": "/blog/getting-started",
"is_published": false
}
Error Responses:
GET /api/configs/blog-posts
Retrieve all blog posts for a site. Content, assets, and meta descriptions are excluded from the listing response to reduce payload size.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/blog-posts?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"posts": [
{
"page_id": "post-uuid-001",
"page_name": "Getting Started with RocketPages",
"site_id": "SITE_ID",
"page_type": "post",
"slug": "getting-started",
"page_url": "/blog/getting-started",
"is_published": true,
"created_at": "2024-06-20T14:00:00.000Z",
"updated_at": 1718888400000
}
]
}
GET /api/configs/blog-post
Retrieve a single blog post by ID, including its full content and configuration.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDid (query string, required) — The post ID (pageId of the post)Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/blog-post?siteId=SITE_ID&id=POST_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"post": {
"page_id": "post-uuid-001",
"page_name": "Getting Started with RocketPages",
"site_id": "SITE_ID",
"page_type": "post",
"slug": "getting-started",
"page_url": "/blog/getting-started",
"is_published": true,
"published_at": "2024-06-20T14:00:00.000Z",
"created_at": "2024-06-20T14:00:00.000Z",
"updated_at": 1718888400000,
"configs": [ ... ]
}
}
Error Responses:
DELETE /api/configs/blog-post
Permanently delete a blog post. If the post was published, its static HTML file is also deleted and the blog listing page is republished.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDid (query string, required) — ID of the post to delete (the post's pageId)Sample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/blog-post?siteId=SITE_ID&id=POST_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Post deleted successfully"
}
Error Responses:
Connect your own domain to your RocketPages website. Follow these steps:
PUT /api/configs/custom-domainPOST /api/configs/validate-custom-domain to confirm A records are pointing correctlyPOST /api/configs/check-ssl-probePOST /api/configs/set-primary-domainGET /api/configs/site-domains
Retrieve all custom domains configured for a website.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-domains?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"domain": "www.example.com",
"is_primary": true,
"is_verified": true,
"ssl_status": "active",
"dns_records": {
"type": "CNAME",
"name": "www",
"value": "proxy.rocketpages.io"
},
"created_at": "2024-03-10T08:00:00Z"
},
{
"domain": "example.com",
"is_primary": false,
"is_verified": true,
"ssl_status": "active"
}
]
}PUT /api/configs/custom-domain
Add a new custom domain to a website. After adding, configure DNS records and validate the domain.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDdomain (string, required) — The custom domain to add (e.g., "www.example.com" or "example.com")Sample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/custom-domain?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": "www.example.com"
}'Sample Response:
{
"message": "Domain added successfully",
"data": {
"domain": "www.example.com",
"dns_records": {
"type": "CNAME",
"name": "www",
"value": "proxy.rocketpages.io"
}
}
}POST /api/configs/validate-custom-domain
Verify that DNS records are correctly configured for a custom domain and trigger SSL certificate provisioning.
Authentication: API key required
Parameters (body):
siteId (string, required) — The site IDdomain (string, required) — The domain to validateSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/validate-custom-domain" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"domain": "www.example.com"
}'Sample Response:
{
"message": "Domain validated successfully",
"data": {
"domain": "www.example.com",
"is_verified": true,
"ssl_status": "provisioning"
}
}POST /api/configs/check-ssl-probe
Perform an external HTTPS probe to check the SSL certificate status for a domain.
Authentication: API key required
Parameters (body):
domain (string, required) — The domain to check (e.g., "www.example.com")Sample Request:
curl -X POST "https://api.rocketpages.io/api/configs/check-ssl-probe" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": "www.example.com"
}'Sample Response:
{
"valid": true,
"issuer": "Let's Encrypt",
"expires": "2024-06-10T10:00:00.000Z",
"daysRemaining": 89
}POST /api/configs/set-primary-domain
Set a verified custom domain as the primary domain for the website.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDdomain (string, required) — The verified domain to set as primarySample Request:
curl -X POST "https://api.rocketpages.io/api/configs/set-primary-domain?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domain": "www.example.com"
}'Sample Response:
{
"message": "Primary domain updated",
"data": {
"domain": "www.example.com",
"is_primary": true
}
}DELETE /api/configs/custom-domain
Remove a custom domain from the website.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDdomain (query string, required) — The domain to removeSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/custom-domain?siteId=SITE_ID&domain=www.example.com" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Domain deleted successfully"
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
POST /api/assets/upload-base64
Upload an image using base64 encoding. Suitable for programmatic uploads and smaller images.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDimageData (string, required) — Base64-encoded image data with data URI prefix (e.g., "data:image/png;base64,iVBOR...")imageName (string, required) — File name for the uploaded image (e.g., "hero-banner.png")Sample Request:
curl -X POST "https://api.rocketpages.io/api/assets/upload-base64?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"imageData": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
"imageName": "hero-banner.png"
}'
Sample Response:
{
"message": "Image uploaded successfully",
"data": {
"asset_key": "sites/SITE_ID/images/hero-banner.png",
"url": "https://cdn.rocketpages.io/sites/SITE_ID/images/hero-banner.png",
"file_name": "hero-banner.png",
"content_type": "image/png",
"size_bytes": 45230
}
}
GET /api/assets/images
Returns only the image records for a site.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/assets/images?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"id": "d5dc7c59-a4d8-4b91-be19-73c8064860ae",
"image_url": "https://...s3.amazonaws.com/IMAGE_KEY",
"thumbnail_url": "https://...s3.amazonaws.com/IMAGE_KEY_thumbnail",
"image_name": "hero-banner.png",
"size": 45230,
"site_id": "SITE_ID",
"created_at": 1785498730455
}
]
}
POST /api/assets/edit-image
Apply edits to an existing image (resize, crop, etc.).
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDassetKey (string, required) — The asset key of the image to editwidth (number, optional) — New width in pixelsheight (number, optional) — New height in pixelsSample Request:
curl -X POST "https://api.rocketpages.io/api/assets/edit-image?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"assetKey": "sites/SITE_ID/images/hero-banner.png",
"width": 800,
"height": 600
}'
Sample Response:
{
"message": "Image edited successfully",
"data": {
"url": "https://cdn.rocketpages.io/sites/SITE_ID/images/hero-banner.png",
"width": 800,
"height": 600
}
}
POST /api/assets/delete-site-asset
Permanently delete an uploaded image. Also removes all references to this image from site header, footer, and page content.
Authentication: API key required
Parameters (JSON body):
id (string, required) — The image ID — retrieve from GET /api/assets/imagesSample Request:
curl -X POST "https://api.rocketpages.io/api/assets/delete-site-asset" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "image-uuid-001"
}'
Sample Response:
{
"message": "image delete successfully..!"
}
Error Responses:
POST /api/assets/generate-ai-image
Search for and download stock images from Unsplash based on a text prompt. Images are automatically uploaded to S3 and associated with your site.
Authentication: API key required
Parameters (JSON body):
siteId (string, required) — The site IDprompt (string, required) — Search query for images (e.g., "modern office workspace")fileName (string, optional) — Custom filename for the uploaded imageorientation (string, optional, default: "squarish") — Image orientation: "landscape", "portrait", or "squarish"imageCount (number, optional, default: 1) — Number of images to generateSample Request:
curl -X POST "https://api.rocketpages.io/api/assets/generate-ai-image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"prompt": "modern office workspace",
"orientation": "landscape",
"imageCount": 1
}'
Sample Response:
{
"images": [
{
"unsplash_id": "abc123",
"alt": "Modern office with natural lighting",
"s3_url": "https://cdn.rocketpages.io/sites/SITE_ID/images/modern-office.jpg",
"url": "https://cdn.rocketpages.io/sites/SITE_ID/images/modern-office.jpg",
"success": true,
"size": 245000
}
]
}
Error Responses:
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
GET /api/configs/seo
Retrieve current SEO settings for a site or a specific page.
Authentication: API key required
Parameters:
siteId (query string, optional) — Get site-level SEO settingspageId (query string, optional) — Get page-level SEO settings — retrieve from GET /api/configs/all-pagesSample Request (Site-level):
curl -X GET "https://api.rocketpages.io/api/configs/seo?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Request (Page-level):
curl -X GET "https://api.rocketpages.io/api/configs/seo?pageId=PAGE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": {
"site_id": "SITE_ID",
"meta_title": "My Website — Building the Future",
"meta_description": "We provide innovative solutions for everyone.",
"favicon": "https://cdn.rocketpages.io/sites/SITE_ID/favicon.ico",
"social_image": "https://cdn.rocketpages.io/sites/SITE_ID/social-og.png",
"default_social_media_image_alt": "Website preview"
}
}
PUT /api/configs/seo
Update SEO metadata for a site or specific page. Only include fields you want to change.
Authentication: API key required
Parameters (body):
siteId (string, optional) — Update site-level SEOpageId (string, optional) — Update page-level SEO — retrieve from GET /api/configs/all-pagesmetaTitle (string, optional) — Meta title for search engines (recommended: 50-60 characters)metaDescription (string, optional) — Meta description for search results (recommended: 150-160 characters)favicon (string, optional) — URL of the favicon imagesocialImage (string, optional) — URL of the Open Graph / social sharing imagedefaultSocialMediaImageAlt (string, optional) — Alt text for the social sharing imageSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/seo" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"metaTitle": "My Website — Building the Future",
"metaDescription": "We provide innovative solutions for everyone.",
"favicon": "https://cdn.rocketpages.io/sites/SITE_ID/favicon.ico",
"socialImage": "https://cdn.rocketpages.io/sites/SITE_ID/social-og.png",
"defaultSocialMediaImageAlt": "Website preview image"
}'
Sample Response:
{
"message": "SEO settings updated successfully"
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
GET /api/configs/custom-code
Retrieve the current custom code injected into the site's HTML head and body sections.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/custom-code?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": {
"site_id": "SITE_ID",
"head_code": "<!-- Google Analytics -->\n<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX\"></script>",
"body_code": "<!-- Chat widget -->\n<script src=\"https://chat.example.com/widget.js\"></script>"
}
}
PUT /api/configs/custom-code
Update custom code injected into the site's HTML. Use for analytics tracking, chat widgets, custom CSS, or any other code snippets.
Authentication: API key required
Parameters (body):
siteId (string, required) — The site IDheadCode (string, optional) — HTML/JS/CSS injected into the <head> section (max 10,000 characters). Use for analytics, meta tags, CSS stylesheets, and fonts.bodyCode (string, optional) — HTML/JS injected before the closing </body> tag (max 10,000 characters). Use for chat widgets, tracking pixels, and scripts.Sample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/custom-code" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"headCode": "<script async src=\"https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX\"></script>",
"bodyCode": "<script src=\"https://chat.example.com/widget.js\"></script>"
}'
Sample Response:
{
"message": "Custom code updated successfully"
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
GET /api/configs/color-palettes
Retrieve all available color palettes. Use the palette id as the themeId when creating a website from a template.
Authentication: API key required
Parameters:
category (query string, optional) — Filter palettes by category. Available categories: Bright, Pastel, DarkSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/color-palettes" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Request (with filter):
curl -X GET "https://api.rocketpages.io/api/configs/color-palettes?category=Pastel" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"palettes": [
{
"id": "ppp1",
"name": "Pastel Blue",
"category": "Pastel",
"colors": [
"#4B84E9",
"#3E442B",
"#F4F0ED",
"#F4F0ED",
"#E5E1D9",
"#040100"
]
},
{
"id": "bbb1",
"name": "Bright Coral",
"category": "Bright",
"colors": [
"#FF6B6B",
"#4ECDC4",
"#F7FFF7",
"#FFE66D",
"#FFFFFF",
"#2C3E50"
]
}
]
}
Palette ID Format:
ppp1 – ppp10 — Pastel palettesbbb1 – bbb10 — Bright palettesddd1 – ddd10 — Dark palettesGET /api/configs/font-pairings
Retrieve all available font family pairings. Each pairing includes a heading font and a body font designed to work well together.
Authentication: Not required (public endpoint)
Parameters: None
Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/font-pairings"
Sample Response:
{
"font_pairings": [
{
"id": "font-001",
"label": "Poppins / Inter",
"heading_font": "Poppins",
"body_font": "Inter",
"preview_url": "https://..."
}
]
}
GET /api/configs/button-styles
Retrieve all available button style presets. Use button style IDs when configuring site themes.
Authentication: Not required (public endpoint)
Parameters: None
Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/button-styles"
Sample Response:
{
"button_styles": [
{
"id": "btn-001",
"label": "Rounded Solid",
"border_radius": "rounded",
"border_width": "none",
"preview": {
"primary": { ... },
"secondary": { ... }
}
}
]
}
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
POST /api/configs/invite-contributors
Invite one or more contributors to a site by email. Invited users receive an email notification with access to the site editor.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDemails (string[], required) — Array of email addresses to invite (each max 254 characters)Sample Request:
curl -X POST "https://api.rocketpages.io/api/configs/invite-contributors?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"designer@example.com",
"copywriter@example.com"
]
}'
Sample Response:
{
"message": "Invitations sent successfully",
"data": {
"invited": [
{
"email": "designer@example.com",
"status": "invited",
"invited_at": "2024-06-20T14:00:00Z"
},
{
"email": "copywriter@example.com",
"status": "invited",
"invited_at": "2024-06-20T14:00:00Z"
}
]
}
}
GET /api/configs/contributors
Retrieve all contributors for a site including their roles and invitation status.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/contributors?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"user_id": "user-uuid-001",
"email": "designer@example.com",
"role": "editor",
"status": "active",
"joined_at": "2024-06-20T15:00:00Z"
},
{
"user_id": "user-uuid-002",
"email": "copywriter@example.com",
"role": "editor",
"status": "invited",
"invited_at": "2024-06-20T14:00:00Z"
}
]
}DELETE /api/configs/contributor
Remove a contributor's access from a site. Only the site owner can remove contributors.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDemail (query string, required) — Email address of the contributor to removeSample Request:
curl -X DELETE "https://api.rocketpages.io/api/configs/contributor?siteId=SITE_ID&email=designer@example.com" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"message": "Contributor removed successfully"
}
Error Responses:
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
GET /api/configs/plans
Retrieve all available subscription plans with pricing and feature details.
Authentication: API key required
Parameters: None
Sample Request:
curl -X GET "https://api.rocketpages.io/api/configs/plans" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"plan_id": "plan-free",
"name": "Free",
"price": 0,
"billing_interval": "month",
"features": {
"custom_domain": false,
"remove_branding": false,
"form_submissions": 50,
"pages": 5
}
},
{
"plan_id": "plan-pro",
"name": "Pro",
"price": 19,
"billing_interval": "month",
"stripe_price_id": "price_xxxxx",
"features": {
"custom_domain": true,
"remove_branding": true,
"form_submissions": 1000,
"pages": 50
}
}
]
}GET /api/configs/site-config-get-active-subscriptions
Retrieve the active subscription(s) for a website including plan details and billing status.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-config-get-active-subscriptions?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": {
"subscription_id": "sub_xxxxx",
"plan_name": "Pro",
"status": "active",
"current_period_start": "2024-06-01T00:00:00Z",
"current_period_end": "2024-07-01T00:00:00Z",
"cancel_at_period_end": false,
"stripe_customer_id": "cus_xxxxx"
}
}POST /api/configs/create-stripe-checkout-session
Create a Stripe Checkout session to start a subscription. Returns a URL to redirect the user to Stripe's hosted checkout page.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDpriceId (string, required) — Stripe Price ID from the plans endpointemail (string, required) — Customer email for StripeSample Request:
curl -X POST "https://api.rocketpages.io/api/configs/create-stripe-checkout-session?siteId=SITE_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"priceId": "price_xxxxx",
"email": "user@example.com"
}'Sample Response:
{
"checkout_url": "https://checkout.stripe.com/c/pay/cs_xxxxx",
"session_id": "cs_xxxxx"
}PUT /api/configs/site-config-cancel-subscription
Cancel an active subscription. The subscription remains active until the end of the current billing period.
Authentication: API key required
Parameters (body):
siteId (string, required) — The site IDsubscriptionId (string, required) — Stripe subscription ID to cancelSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/site-config-cancel-subscription" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"subscriptionId": "sub_xxxxx"
}'Sample Response:
{
"status": true,
"subscription": {
"id": "sub_xxxxx",
"cancel_at_period_end": true,
"current_period_end": 1719792000
}
}PUT /api/configs/cancel-upcoming-subscription
Cancel a scheduled (upcoming) plan change without cancelling the active subscription. The user stays on their current plan.
Authentication: API key required
Parameters:
siteId (string, required) — The site IDsubscriptionId (string, required) — Stripe subscription ID whose upcoming schedule should be cancelledSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/cancel-upcoming-subscription" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"subscriptionId": "sub_XXXXXXXXXXXXX"
}'Sample Response:
{
"message": "Upcoming subscription cancelled",
"data": {
"status": true,
"subscription": {
"id": "sub_XXXXXXXXXXXXX",
"status": "active",
"current_period_end": "2024-07-20T00:00:00Z"
}
}
}PUT /api/configs/site-config-resume-subscription
Resume a subscription that was previously set to cancel at the end of the billing period. Only works if the subscription hasn't expired yet.
Authentication: API key required
Parameters:
siteId (string, required) — The site IDsubscriptionId (string, required) — Stripe subscription ID to resumeSample Request:
curl -X PUT "https://api.rocketpages.io/api/configs/site-config-resume-subscription" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"subscriptionId": "sub_XXXXXXXXXXXXX"
}'Sample Response:
{
"status": true,
"subscription": {
"id": "sub_XXXXXXXXXXXXX",
"status": "active",
"cancel_at_period_end": false,
"current_period_end": "2024-07-20T00:00:00Z"
}
}GET /api/configs/site-invoices
List all Stripe invoices for a site with amount, status, billing period, and hosted invoice/PDF URLs.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-invoices?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"invoices": [
{
"id": "in_XXXXXXXXXXXXX",
"number": "INV-0001",
"status": "paid",
"amount_due": 1900,
"amount_paid": 1900,
"currency": "usd",
"created": 1718899200,
"period_start": 1718899200,
"period_end": 1721491200,
"hosted_invoice_url": "https://invoice.stripe.com/i/...",
"invoice_pdf": "https://pay.stripe.com/invoice/..."
}
]
}GET /api/configs/site-config-get-stripe-customer-session
Create a Stripe Customer Portal session. Returns a URL that allows the user to manage their billing, payment methods, and subscription details directly through Stripe's hosted portal.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDsubscriptionId (query string, required) — Stripe subscription IDSample Request:
curl -X GET "https://api.rocketpages.io/api/configs/site-config-get-stripe-customer-session?siteId=SITE_ID&subscriptionId=sub_xxxxx" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"url": "https://billing.stripe.com/p/session/..."
}
Error Responses:
Lorem ipsum dolor sit amet consectetur. Vestibulum velit convallis porttitor lacinia auctor aliquet.
POST /api/form-submission
Submit a form entry from a contact form. This is a public endpoint used by the published site's contact forms.
Authentication: Not required (public endpoint)
Parameters:
siteId (string, required) — ID of the site the form belongs topageId (string, optional) — ID of the page containing the form — retrieve from GET /api/configs/all-pagesfirstName (string, optional) — Submitter's first namelastName (string, optional) — Submitter's last nameemail (string, optional) — Submitter's email addressphoneNumber (string, optional) — Submitter's phone numbermessage (string, optional) — Message contentSample Request:
curl -X POST "https://api.rocketpages.io/api/form-submission" \
-H "Content-Type: application/json" \
-d '{
"siteId": "SITE_ID",
"pageId": "PAGE_ID",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phoneNumber": "+1-555-123-4567",
"message": "I would like to learn more about your services."
}'Sample Response:
{
"message": "Form submitted successfully",
"data": {
"id": "submission-uuid-001",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone_number": "+1-555-123-4567",
"message": "I would like to learn more about your services.",
"created_at_dt": "2024-06-20 14:30:00"
}
}GET /api/all-form-submissions
Retrieve all form submissions for a site. Data visibility may be limited based on subscription tier.
Authentication: API key required
Parameters:
siteId (query string, required) — The site IDSample Request:
curl -X GET "https://api.rocketpages.io/api/all-form-submissions?siteId=SITE_ID" \ -H "Authorization: Bearer YOUR_API_KEY"
Sample Response:
{
"data": [
{
"id": "submission-uuid-001",
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone_number": "+1-555-123-4567",
"message": "I would like to learn more about your services.",
"year_month": "2024-06",
"created_at_dt": "2024-06-20 14:30:00",
"is_blur": false
}
]
}