openapi: 3.2.0 info: title: Offerpad WordPress REST API (wp/v2) Template Parts 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: template-parts description: WordPress template-parts resource routes. paths: /wp/v2/template-parts: get: operationId: listTemplateParts summary: List template parts tags: - template-parts 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: createTemplateParts summary: Create template parts tags: - template-parts 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. area: type: string description: Where the template part is intended for use (header, footer, etc.) 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/template-parts/{id}: get: operationId: getTemplatePartsById summary: Retrieve template parts tags: - template-parts 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: createTemplatePartsById summary: Create template parts tags: - template-parts 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. area: type: string description: Where the template part is intended for use (header, footer, etc.) 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: deleteTemplatePartsById summary: Delete template parts tags: - template-parts 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/template-parts/{id}/autosaves: get: operationId: getTemplatePartsByIdAutosaves summary: Retrieve template parts autosaves tags: - template-parts 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: createTemplatePartsByIdAutosaves summary: Create template parts autosaves tags: - template-parts 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. area: type: string description: Where the template part is intended for use (header, footer, etc.) 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/template-parts/{parent}/autosaves/{id}: get: operationId: getTemplatePartsByParentAutosavesById summary: Retrieve template parts autosaves tags: - template-parts 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/template-parts/{parent}/revisions: get: operationId: getTemplatePartsByParentRevisions summary: Retrieve template parts revisions tags: - template-parts 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/template-parts/{parent}/revisions/{id}: get: operationId: getTemplatePartsByParentRevisionsById summary: Retrieve template parts revisions tags: - template-parts 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: deleteTemplatePartsByParentRevisionsById summary: Delete template parts revisions tags: - template-parts 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/template-parts/lookup: get: operationId: listTemplatePartsLookup summary: List template parts lookup tags: - template-parts 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.