Offerpad Templates API

WordPress templates resource routes.

Operations 12

GET /wp/v2/templates List templates #
POST /wp/v2/templates Create templates #
GET /wp/v2/templates/{id} Retrieve templates #
POST /wp/v2/templates/{id} Create templates #
DELETE /wp/v2/templates/{id} Delete templates #
GET /wp/v2/templates/{id}/autosaves Retrieve templates autosaves #
POST /wp/v2/templates/{id}/autosaves Create templates autosaves #
GET /wp/v2/templates/{parent}/autosaves/{id} Retrieve templates autosaves #
GET /wp/v2/templates/{parent}/revisions Retrieve templates revisions #
GET /wp/v2/templates/{parent}/revisions/{id} Retrieve templates revisions #
DELETE /wp/v2/templates/{parent}/revisions/{id} Delete templates revisions #
GET /wp/v2/templates/lookup List templates lookup #

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/offerpad-templates-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

offerpad-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Offerpad WordPress REST API (wp/v2) Templates API
  version: 2.0.0
  summary: The wp/v2 namespace of the WordPress REST API served by Offerpad's marketing site.
  description: DERIVED, NOT PUBLISHED BY OFFERPAD. Offerpad publishes no OpenAPI definition and does not document or support this surface as a developer product. This document was derived mechanically by API Evangelist from the live WordPress route-discovery document fetched from https://www.offerpad.com/wp-json/ on 2026-07-26 (411 routes across 20 namespaces; the wp/v2 namespace is captured here). Every path, method, parameter name, type, enum, default and description is copied verbatim from that discovery document. Response bodies are intentionally left as generic objects because the discovery document does not publish response schemas; error responses are grounded in payloads probed live against this host. This is a content-management surface for the marketing site - it is NOT a real estate, listing, valuation or transaction API.
  contact:
    name: Offerpad
    url: https://www.offerpad.com/contact/
  x-apievangelist-method: derived
  x-apievangelist-source: openapi/offerpad-wp-json-discovery.json
  x-apievangelist-derived: '2026-07-26'
  x-upstream-documentation: https://developer.wordpress.org/rest-api/
servers:
- url: https://www.offerpad.com/wp-json
  description: Offerpad marketing site (WP Engine)
security: []
tags:
- name: templates
  description: WordPress templates resource routes.
paths:
  /wp/v2/templates:
    get:
      operationId: listTemplates
      summary: List templates
      tags:
      - templates
      parameters:
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      - name: wp_id
        schema:
          type: integer
        required: false
        description: Limit to the specified post id.
        in: query
      - name: area
        schema:
          type: string
        required: false
        description: Limit to the specified template part area.
        in: query
      - name: post_type
        schema:
          type: string
        required: false
        description: Post type to get the templates for.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createTemplates
      summary: Create templates
      tags:
      - templates
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                slug:
                  type: string
                  minLength: 1
                  description: Unique slug identifying the template.
                theme:
                  type: string
                  description: Theme identifier for the template.
                type:
                  type: string
                  description: Type of template.
                content:
                  type:
                  - object
                  - string
                  default: ''
                  description: Content of template.
                title:
                  type:
                  - object
                  - string
                  default: ''
                  description: Title of template.
                description:
                  type: string
                  default: ''
                  description: Description of template.
                status:
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  default: publish
                  description: Status of template.
                author:
                  type: integer
                  description: The ID for the author of the template.
              required:
              - slug
      security:
      - applicationPasswords: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '201':
          description: Resource created.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/{id}:
    get:
      operationId: getTemplatesById
      summary: Retrieve templates
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createTemplatesById
      summary: Create templates
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                slug:
                  type: string
                  minLength: 1
                  description: Unique slug identifying the template.
                theme:
                  type: string
                  description: Theme identifier for the template.
                type:
                  type: string
                  description: Type of template.
                content:
                  type:
                  - object
                  - string
                  description: Content of template.
                title:
                  type:
                  - object
                  - string
                  description: Title of template.
                description:
                  type: string
                  description: Description of template.
                status:
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  description: Status of template.
                author:
                  type: integer
                  description: The ID for the author of the template.
      security:
      - applicationPasswords: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '201':
          description: Resource created.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    delete:
      operationId: deleteTemplatesById
      summary: Delete templates
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: force
        schema:
          type: boolean
          default: false
        required: false
        description: Whether to bypass Trash and force deletion.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/{id}/autosaves:
    get:
      operationId: getTemplatesByIdAutosaves
      summary: Retrieve templates autosaves
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    post:
      operationId: createTemplatesByIdAutosaves
      summary: Create templates autosaves
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                slug:
                  type: string
                  minLength: 1
                  description: Unique slug identifying the template.
                theme:
                  type: string
                  description: Theme identifier for the template.
                type:
                  type: string
                  description: Type of template.
                content:
                  type:
                  - object
                  - string
                  description: Content of template.
                title:
                  type:
                  - object
                  - string
                  description: Title of template.
                description:
                  type: string
                  description: Description of template.
                status:
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  description: Status of template.
                author:
                  type: integer
                  description: The ID for the author of the template.
      security:
      - applicationPasswords: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '201':
          description: Resource created.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/{parent}/autosaves/{id}:
    get:
      operationId: getTemplatesByParentAutosavesById
      summary: Retrieve templates autosaves
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: The ID for the autosave.
      - name: parent
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/{parent}/revisions:
    get:
      operationId: getTemplatesByParentRevisions
      summary: Retrieve templates revisions
      tags:
      - templates
      parameters:
      - name: parent
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      - name: page
        schema:
          type: integer
          default: 1
          minimum: 1
        required: false
        description: Current page of the collection.
        in: query
      - name: per_page
        schema:
          type: integer
          minimum: 1
          maximum: 100
        required: false
        description: Maximum number of items to be returned in result set.
        in: query
      - name: search
        schema:
          type: string
        required: false
        description: Limit results to those matching a string.
        in: query
      - name: exclude
        schema:
          type: array
          default: []
          items:
            type: integer
        required: false
        description: Ensure result set excludes specific IDs.
        in: query
      - name: include
        schema:
          type: array
          default: []
          items:
            type: integer
        required: false
        description: Limit result set to specific IDs.
        in: query
      - name: offset
        schema:
          type: integer
        required: false
        description: Offset the result set by a specific number of items.
        in: query
      - name: order
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        required: false
        description: Order sort attribute ascending or descending.
        in: query
      - name: orderby
        schema:
          type: string
          enum:
          - date
          - id
          - include
          - relevance
          - slug
          - include_slugs
          - title
          default: date
        required: false
        description: Sort collection by object attribute.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/{parent}/revisions/{id}:
    get:
      operationId: getTemplatesByParentRevisionsById
      summary: Retrieve templates revisions
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the revision.
      - name: parent
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: context
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        required: false
        description: Scope under which the request is made; determines fields present in response.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
    delete:
      operationId: deleteTemplatesByParentRevisionsById
      summary: Delete templates revisions
      tags:
      - templates
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the revision.
      - name: parent
        in: path
        required: true
        schema:
          type: string
        description: The id of a template
      - name: force
        schema:
          type: boolean
          default: false
        required: false
        description: Required to be true, as revisions do not support trashing.
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
  /wp/v2/templates/lookup:
    get:
      operationId: listTemplatesLookup
      summary: List templates lookup
      tags:
      - templates
      parameters:
      - name: slug
        schema:
          type: string
        required: true
        description: The slug of the template to get the fallback for
        in: query
      - name: is_custom
        schema:
          type: boolean
        required: false
        description: Indicates if a template is custom or part of the template hierarchy
        in: query
      - name: template_prefix
        schema:
          type: string
        required: false
        description: The template prefix for the created template. This is used to extract the main template type, e.g. in `taxonomy-books` extracts the `taxonomy`
        in: query
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: 'Invalid parameter(s). Probed live: {"code":"rest_invalid_param"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '401':
          description: 'Authentication required or capability missing. Probed live: {"code":"rest_forbidden"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
        '404':
          description: 'No route matched, or the resource id is invalid. Probed live: {"code":"rest_no_route"} / {"code":"rest_post_invalid_id"}'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WPError'
components:
  schemas:
    WPError:
      type: object
      description: WordPress REST error envelope, observed live on this host.
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. rest_no_route.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          properties:
            status:
              type: integer
              description: HTTP status code, repeated in the body.
            params:
              type: object
              description: Per-parameter validation messages (rest_invalid_param).
            details:
              type: object
              description: Per-parameter structured error detail.
      required:
      - code
      - message
      examples:
      - code: rest_post_invalid_id
        message: Invalid post ID.
        data:
          status: 404
  securitySchemes:
    applicationPasswords:
      type: http
      scheme: basic
      description: WordPress application passwords, advertised by the discovery document at https://www.offerpad.com/wp-admin/authorize-application.php. Sent as HTTP Basic credentials. Required for write operations and for reads in the edit context; issuing a credential requires an Offerpad WordPress account, which is not self-serve.