# Create Blueprint

Create a WordPress blueprint for the authenticated account.

Requires an active WordPress Toolkit add-on on the account (purchased via the ServerAvatar dashboard; not available through the API).


# Create WordPress Blueprint

# HTTP Request:

POST https://api.serveravatar.com/wordpress-blueprints

# Parameter:

Parameter Required Type Description
name Yes String Unique blueprint name (max 80 characters)
selectedThemes No Array Themes from WordPress.org (see below)
selectedPlugins No Array Plugins from WordPress.org (see below)
customThemePlugin No Array Custom theme/plugin ZIPs via URL or upload (see below)
removeHelloWorld Yes Boolean Remove default Hello World post
removeSamplePage Yes Boolean Remove default sample page
deleteAllThemes Yes Boolean Remove bundled themes before install
deleteAllPlugins Yes Boolean Remove bundled plugins before install
deleteUnneededCoreFile Yes Boolean Remove unneeded core files
language Yes String Site language locale. You can get available languages from the Language API.
timezone Yes String Site timezone. You can get a list of timezones from the Timezone API.
dateFormat Yes String WordPress date format
timeFormat Yes String WordPress time format
SEIndexingDisable Yes Boolean Discourage search engine indexing
organizeUploadFolders Yes Boolean Organize uploads into year/month folders
permalink_structure No String Permalink structure
debugMode No Boolean Enable WP_DEBUG
debugLog No Boolean Enable WP_DEBUG_LOG
debugError No Boolean Enable WP_DEBUG_DISPLAY

selectedThemes[] / selectedPlugins[] object:

Field Required Type Description
name Yes String Display name
slug Yes String WordPress.org slug
activate Yes Boolean Activate after install
screenshot_url / icon_url No String Optional image URL

customThemePlugin[] object:

Each entry installs a custom theme or plugin from either an external ZIP URL or a file you uploaded to ServerAvatar. Provide one source per entry: link (URL) or file_path (upload reference), not both.

Field Required Type Description
label Yes String Display label (max 150 chars)
link Conditional String Public HTTP(S) URL to a theme/plugin ZIP. Required when not using an upload.
file_path Conditional String Filename returned by Upload Custom Theme/Plugin ZIP (UUID .zip). Alternative to putting the same value in link.
type Yes String custom-theme or custom-plugin
activate Yes Boolean Activate after install

Stored custom_theme_plugins[] object (responses):

After create or update, each saved entry includes link_source so clients know how link should be interpreted:

Field Type Description
label String Display label
link String External ZIP URL when link_source is url; stored upload filename (UUID .zip) when link_source is upload
link_source String url — install from the external URL; upload — install from the private ZIP referenced by link
type String custom-theme or custom-plugin
activate Boolean Activate after install

link_source is set by the API during normalization; do not send it in create or update requests.


# Upload Custom Theme/Plugin ZIP

Upload a theme or plugin ZIP before referencing it in customThemePlugin on Create Blueprint or Update Blueprint.

Requires an active WordPress Toolkit add-on on the account.

# HTTP Request:

POST https://api.serveravatar.com/wordpress-blueprints/custom-theme-plugin/upload

# Parameter:

Parameter Required Type Description
file Yes File ZIP archive (max 100 MB)

Send as multipart/form-data with field name file.

# Response:

# Successful Response

  • 201 (Created)
{
  "message": "Custom theme/plugin file uploaded successfully.",
  "file_path": "a1b2c3d4-e5f6-7890-abcd-ef1234567890.zip"
}

Use file_path in customThemePlugin[].file_path when creating or updating a blueprint. The entry is persisted with link_source: "upload" and link set to that filename.

# Validation Error

  • 422 (Unprocessable Entity)

# Curl Request Example (URL source):

curl --request POST \
  --url "https://api.serveravatar.com/wordpress-blueprints" \
  --header 'content-type: application/json' \
  --header 'Authorization: <YOUR API TOKEN>' \
  --data '{
    "name": "My Agency Starter",
    "selectedThemes": [{"name": "Twenty Twenty-Four", "slug": "twentytwentyfour", "activate": true}],
    "selectedPlugins": [{"name": "Akismet", "slug": "akismet", "activate": true}],
    "removeHelloWorld": true,
    "removeSamplePage": true,
    "deleteAllThemes": false,
    "deleteAllPlugins": false,
    "deleteUnneededCoreFile": false,
    "language": "en_US",
    "timezone": "UTC",
    "dateFormat": "F j, Y",
    "timeFormat": "g:i a",
    "SEIndexingDisable": true,
    "organizeUploadFolders": true
  }'

# Curl Request Example (upload source):

# 1. Upload the ZIP
curl --request POST \
  --url "https://api.serveravatar.com/wordpress-blueprints/custom-theme-plugin/upload" \
  --header 'Authorization: <YOUR API TOKEN>' \
  --form 'file=@/path/to/my-plugin.zip'

# 2. Create blueprint using file_path from the upload response
curl --request POST \
  --url "https://api.serveravatar.com/wordpress-blueprints" \
  --header 'content-type: application/json' \
  --header 'Authorization: <YOUR API TOKEN>' \
  --data '{
    "name": "Agency Starter With Upload",
    "selectedThemes": [{"name": "Twenty Twenty-Four", "slug": "twentytwentyfour", "activate": true}],
    "selectedPlugins": [{"name": "Akismet", "slug": "akismet", "activate": true}],
    "customThemePlugin": [
      {
        "label": "My Custom Plugin",
        "file_path": "a1b2c3d4-e5f6-7890-abcd-ef1234567890.zip",
        "type": "custom-plugin",
        "activate": true
      }
    ],
    "removeHelloWorld": true,
    "removeSamplePage": true,
    "deleteAllThemes": false,
    "deleteAllPlugins": false,
    "deleteUnneededCoreFile": false,
    "language": "en_US",
    "timezone": "UTC",
    "dateFormat": "F j, Y",
    "timeFormat": "g:i a",
    "SEIndexingDisable": true,
    "organizeUploadFolders": true
  }'

Saved custom_theme_plugins for the upload entry:

{
  "label": "My Custom Plugin",
  "link": "a1b2c3d4-e5f6-7890-abcd-ef1234567890.zip",
  "link_source": "upload",
  "type": "custom-plugin",
  "activate": true
}

# Response:

# Successful Response

  • 201 (Created)
{
  "message": "WordPress blueprint created successfully."
}

# Validation Error

  • 422 (Unprocessable Entity)

# Server Error

  • 500 (Internal Server Error)
Last Updated: 5/21/2026, 7:36:19 AM