Vanilla Forums Theme Assets API

The Theme Assets API from Vanilla Forums — 12 operation(s) for theme assets.

Operations 32

GET /themes/{themeID}/assets/footer Get the footer HTML of a theme.
PUT /themes/{themeID}/assets/footer Set theme asset or replace if already exists.
DELETE /themes/{themeID}/assets/footer Delete theme asset.
GET /themes/{themeID}/assets/footer.html Get the footer HTML of a theme.
PUT /themes/{themeID}/assets/footer.html Set theme asset or replace if already exists.
GET /themes/{themeID}/assets/header Get the header HTML of a theme.
PUT /themes/{themeID}/assets/header Set theme asset or replace if already exists.
DELETE /themes/{themeID}/assets/header Delete theme asset.
GET /themes/{themeID}/assets/header.html Get the header HTML of a theme.
PUT /themes/{themeID}/assets/header.html Set theme asset or replace if already exists.
GET /themes/{themeID}/assets/javascript Get JavaScript to be used as part of a theme.
PUT /themes/{themeID}/assets/javascript Set theme asset or replace if already exists.
DELETE /themes/{themeID}/assets/javascript Delete theme asset.
GET /themes/{themeID}/assets/javascript.js Get JavaScript to be used as part of a theme.
PUT /themes/{themeID}/assets/javascript.js Set theme asset or replace if already exists.
GET /themes/{themeID}/assets/scripts Get additional script files of a theme.
PUT /themes/{themeID}/assets/scripts Set theme asset or replace if already exists.
DELETE /themes/{themeID}/assets/scripts Delete theme asset.
GET /themes/{themeID}/assets/scripts.json Get additional script files of a theme.
PUT /themes/{themeID}/assets/scripts.json Set theme asset or replace if already exists.
GET /themes/{themeID}/assets/styles Get theme styles.
PUT /themes/{themeID}/assets/styles Set theme asset or replace if already exists.
DELETE /themes/{themeID}/assets/styles Delete theme asset.
GET /themes/{themeID}/assets/styles.css Get theme styles.
PUT /themes/{themeID}/assets/styles.css Set theme asset or replace if already exists.
GET /themes/{themeID}/assets/variables Get theme variables.
PUT /themes/{themeID}/assets/variables Set theme asset or replace if already exists.
PATCH /themes/{themeID}/assets/variables Merge some new variables into existing ones.
DELETE /themes/{themeID}/assets/variables Delete theme asset.
GET /themes/{themeID}/assets/variables.json Get theme variables.
PUT /themes/{themeID}/assets/variables.json Set theme asset or replace if already exists.
PATCH /themes/{themeID}/assets/variables.json Merge some new variables into existing ones.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/vanilla-forums-theme-assets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

vanilla-forums-theme-assets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: API access to your community.
  title: Vanilla Addons Theme Assets API
  version: '2.0'
servers:
- url: https://open.vanillaforums.com/api/v2
tags:
- name: Theme Assets
paths:
  /themes/{themeID}/assets/footer:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeFooterAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get the footer HTML of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  description: The type of the asset.
                  type: string
                  example: html
                  enum:
                  - html
                  - css
                  - js
                data:
                  type: string
                  example: <header>Hello Footer<footer />
                  description: Contents of the asset. May require an expand parameter to retreive.
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Contents of an asset.
                type: object
                properties:
                  type:
                    description: The type of the asset.
                    type: string
                    example: html
                    enum:
                    - html
                    - css
                    - js
                  data:
                    type: string
                    example: <header>Hello Footer<footer />
                    description: Contents of the asset. May require an expand parameter to retreive.
                  content-type:
                    description: The content-type of the asset.
                    type: string
                    example: text/html
                  url:
                    type: string
                    description: Absolute URL of the resource.
                    example: https://site.com/api/v2/themes/:themeID/assets/:assetName.ext?v=faasdf42d
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
    delete:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Success
      tags:
      - Theme Assets
      summary: Delete theme asset.
      x-addon: themingapi
  /themes/{themeID}/assets/footer.html:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            text/html:
              schema:
                type: string
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get the footer HTML of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          text/html:
            schema:
              type: string
              description: HTML contents.
              example: <div>Hello HTML Asset!</div>
      responses:
        '200':
          content:
            text/html:
              schema:
                type: string
                description: HTML contents.
                example: <div>Hello HTML Asset!</div>
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
  /themes/{themeID}/assets/header:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeHeaderAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get the header HTML of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  description: The type of the asset.
                  type: string
                  example: html
                  enum:
                  - html
                  - css
                  - js
                data:
                  type: string
                  example: <header>Hello Footer<footer />
                  description: Contents of the asset. May require an expand parameter to retreive.
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Contents of an asset.
                type: object
                properties:
                  type:
                    description: The type of the asset.
                    type: string
                    example: html
                    enum:
                    - html
                    - css
                    - js
                  data:
                    type: string
                    example: <header>Hello Footer<footer />
                    description: Contents of the asset. May require an expand parameter to retreive.
                  content-type:
                    description: The content-type of the asset.
                    type: string
                    example: text/html
                  url:
                    type: string
                    description: Absolute URL of the resource.
                    example: https://site.com/api/v2/themes/:themeID/assets/:assetName.ext?v=faasdf42d
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
    delete:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Success
      tags:
      - Theme Assets
      summary: Delete theme asset.
      x-addon: themingapi
  /themes/{themeID}/assets/header.html:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            text/html:
              schema:
                type: string
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get the header HTML of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          text/html:
            schema:
              type: string
              description: HTML contents.
              example: <div>Hello HTML Asset!</div>
      responses:
        '200':
          content:
            text/html:
              schema:
                type: string
                description: HTML contents.
                example: <div>Hello HTML Asset!</div>
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
  /themes/{themeID}/assets/javascript:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeJavascriptAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get JavaScript to be used as part of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  description: The type of the asset.
                  type: string
                  example: html
                  enum:
                  - html
                  - css
                  - js
                data:
                  type: string
                  example: <header>Hello Footer<footer />
                  description: Contents of the asset. May require an expand parameter to retreive.
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Contents of an asset.
                type: object
                properties:
                  type:
                    description: The type of the asset.
                    type: string
                    example: html
                    enum:
                    - html
                    - css
                    - js
                  data:
                    type: string
                    example: <header>Hello Footer<footer />
                    description: Contents of the asset. May require an expand parameter to retreive.
                  content-type:
                    description: The content-type of the asset.
                    type: string
                    example: text/html
                  url:
                    type: string
                    description: Absolute URL of the resource.
                    example: https://site.com/api/v2/themes/:themeID/assets/:assetName.ext?v=faasdf42d
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
    delete:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Success
      tags:
      - Theme Assets
      summary: Delete theme asset.
      x-addon: themingapi
  /themes/{themeID}/assets/javascript.js:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/javascript:
              schema:
                type: string
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get JavaScript to be used as part of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/javascript:
            schema:
              type: string
              description: HTML contents.
              example: console.log('Hello Javascript')
      responses:
        '200':
          content:
            application/javascript:
              schema:
                type: string
                description: HTML contents.
                example: console.log('Hello Javascript')
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
  /themes/{themeID}/assets/scripts:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeScriptsAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get additional script files of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  type: string
                  example: json
                data:
                  type: object
                  description: JSON content of the asset.
                  example:
                    global:
                      mainColors:
                        primary: '#5cc530'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: json
                  data:
                    type: object
                    description: JSON content of the asset.
                    example:
                      global:
                        mainColors:
                          primary: '#5cc530'
                  content-type:
                    description: The content-type of the asset.
                    type: string
                    example: application/json
                  url:
                    type: string
                    description: Absolute URL of the resource.
                    example: https://site.com/api/v2/themes/:themeID/assets/:assetName.ext?v=faasdf42d
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
    delete:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Success
      tags:
      - Theme Assets
      summary: Delete theme asset.
      x-addon: themingapi
  /themes/{themeID}/assets/scripts.json:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ThemeScript'
                type: array
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get additional script files of a theme.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: JSON contents of the asset.
              example:
                hello:
                  json:
                    asset: true
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                description: JSON contents of the asset.
                example:
                  hello:
                    json:
                      asset: true
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
  /themes/{themeID}/assets/styles:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeCssAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get theme styles.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  description: The type of the asset.
                  type: string
                  example: html
                  enum:
                  - html
                  - css
                  - js
                data:
                  type: string
                  example: <header>Hello Footer<footer />
                  description: Contents of the asset. May require an expand parameter to retreive.
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Contents of an asset.
                type: object
                properties:
                  type:
                    description: The type of the asset.
                    type: string
                    example: html
                    enum:
                    - html
                    - css
                    - js
                  data:
                    type: string
                    example: <header>Hello Footer<footer />
                    description: Contents of the asset. May require an expand parameter to retreive.
                  content-type:
                    description: The content-type of the asset.
                    type: string
                    example: text/html
                  url:
                    type: string
                    description: Absolute URL of the resource.
                    example: https://site.com/api/v2/themes/:themeID/assets/:assetName.ext?v=faasdf42d
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
    delete:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Success
      tags:
      - Theme Assets
      summary: Delete theme asset.
      x-addon: themingapi
  /themes/{themeID}/assets/styles.css:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            text/css:
              schema:
                type: string
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get theme styles.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          text/css:
            schema:
              type: string
              description: HTML contents.
              example: ".class {\n   color: orange;\n}\n"
      responses:
        '200':
          content:
            text/css:
              schema:
                type: string
                description: HTML contents.
                example: ".class {\n   color: orange;\n}\n"
          description: Success
      tags:
      - Theme Assets
      summary: Set theme asset or replace if already exists.
      x-addon: themingapi
  /themes/{themeID}/assets/variables:
    get:
      parameters:
      - description: Unique theme slug.
        in: path
        name: themeID
        required: true
        schema:
          type: string
      - name: fields
        in: query
        style: form
        description: Only return fields with these keys from the output. Use dot notation for nested fields.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeVariablesAsset'
          description: Success
        '404':
          description: JavaScript could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  description:
                    description: Verbose description of the error.
                    type:
                    - string
                    - 'null'
                  message:
                    description: Short description of the error.
                    type: string
                  status:
                    description: Status code of the error response.
                    type: integer
                required:
                - description
                - message
                - status
      tags:
      - Theme Assets
      summary: Get theme variables.
      x-addon: dashboard
    put:
      parameters:
      - description: Unique themeID.
        in: path
        name: themeID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: An asset to be inserted.
              type: object
              properties:
                type:
                  type: string
                  example: json
                data:
                  type: object
                  description: JSON content of the asset.
                  example:
                    global:
                    

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vanilla-forums/refs/heads/main/openapi/vanilla-forums-theme-assets-api-openapi.yml