openapi: 3.0.3 info: title: Wodify Classes Leads API description: 'REST API for the Wodify gym, fitness, and CrossFit box management platform. The API exposes the core Wodify business objects - leads, clients, memberships, classes, programs, services, appointments, workouts, financials, and communications - over HTTPS. The documented base URL is https://api.wodify.com/v1 and every request is authenticated with an `x-api-key` header. Customers using the Wodify Workflows feature already have an API key (Wodify Core > Digital Presence > Web Integrations > API Keys); partners request one through the Wodify Developer Portal. Scope note: this document is reconstructed from Wodify''s public API reference (docs.wodify.com) and its published operation catalog (docs.wodify.com/llms.txt). The base URL, the x-api-key auth, and the paths and query parameters for the core collections (clients, classes, workouts, programs, services) were verified directly against the reference; the remaining collection paths follow Wodify''s documented, consistently named REST operations and are modeled from that catalog. Not every documented Wodify operation is enumerated here.' version: '1.0' contact: name: Wodify url: https://www.wodify.com servers: - url: https://api.wodify.com/v1 description: Wodify API (production) security: - apiKeyAuth: [] tags: - name: Leads description: Prospective members and their conversion to clients. paths: /leads: get: operationId: getLeads tags: - Leads summary: Get leads description: Returns a paged list of leads (prospective members). parameters: - $ref: '#/components/parameters/Sort' - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/PageSize' responses: '200': $ref: '#/components/responses/ListResponse' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createLead tags: - Leads summary: Create lead description: Creates a new lead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Lead' responses: '200': $ref: '#/components/responses/ObjectResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/ValidationError' /leads/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getLead tags: - Leads summary: Get lead description: Retrieves a single lead by ID. responses: '200': $ref: '#/components/responses/ObjectResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateLead tags: - Leads summary: Update lead description: Updates an existing lead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Lead' responses: '200': $ref: '#/components/responses/ObjectResponse' '401': $ref: '#/components/responses/Unauthorized' delete: operationId: deleteLead tags: - Leads summary: Delete lead description: Deletes a lead. responses: '200': description: The lead was deleted. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /leads/{id}/convert-to-client: parameters: - $ref: '#/components/parameters/Id' post: operationId: convertLeadToClient tags: - Leads summary: Convert lead to client description: Converts a lead into a client. responses: '200': $ref: '#/components/responses/ObjectResponse' '401': $ref: '#/components/responses/Unauthorized' components: responses: ValidationError: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid x-api-key. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' ListResponse: description: A paged list of resources. content: application/json: schema: type: object properties: data: type: array items: type: object additionalProperties: true page: type: integer page_size: type: integer ObjectResponse: description: A single resource. content: application/json: schema: type: object additionalProperties: true parameters: Page: name: page in: query required: false description: Specifies the page of records to be returned. Defaults to 1. schema: type: integer default: 1 Id: name: id in: path required: true description: The unique identifier of the resource. schema: type: string Sort: name: sort in: query required: false description: Specifies the order in which the list will be returned. schema: type: string PageSize: name: page_size in: query required: false description: Number of records to return per page. Maximum and default are 100. schema: type: integer default: 100 maximum: 100 schemas: Error: type: object properties: error: type: string message: type: string Lead: type: object description: A prospective member. Fields are modeled; see the Wodify reference for the authoritative schema. properties: id: type: string first_name: type: string last_name: type: string email: type: string format: email phone: type: string source: type: string status: type: string securitySchemes: apiKeyAuth: type: apiKey in: header name: x-api-key description: A valid Wodify API key passed in the `x-api-key` request header. Customers using Wodify Workflows already have a key under Wodify Core > Digital Presence > Web Integrations > API Keys; partners request one via the Wodify Developer Portal.