openapi: 3.0.3 info: title: Tradify API (Modeled - Not an Official Public API) Customers API version: 0.0-modeled description: 'IMPORTANT: This is a MODELED OpenAPI description. As of 2026-07-12, Tradify does NOT publish an open, self-serve, documented public developer API, developer portal, API keys, or webhooks. There is no public base URL to document, so this specification is intentionally SERVER-LESS and every operation is marked `x-status: modeled`. The resource surface below (jobs, customers, quotes, invoices, timesheets) is inferred from Tradify''s product capabilities and from public descriptions of unofficial third-party proxies that automate the authenticated Tradify session. None of these paths, schemas, or parameters are confirmed against official Tradify documentation and MUST NOT be treated as a supported contract. Tradify''s only supported programmatic surface is its pre-built accounting/payment partner integrations (Xero, MYOB Business, QuickBooks Online, Sage, Stripe). A live backend host, api.tradifyhq.com, exists but is undocumented, session-authenticated, and reserved for Tradify''s own web and mobile clients.' contact: name: Tradify (Access) url: https://www.tradifyhq.com x-access-model: publicApi: false publicApiDocumented: false developerPortal: false selfServiceApiKeys: false documentedWebhooks: false supportedProgrammaticSurface: Accounting/payment partner integrations only (Xero, MYOB Business, QuickBooks Online, Sage, Stripe). liveButUndocumentedHost: https://api.tradifyhq.com modeledFrom: - https://www.tradifyhq.com/how-it-works - https://help.tradifyhq.com/hc/en-us - https://supergood.ai/docs/tradify-api disclaimer: Paths and schemas are inferred, not verified. No supported public base URL exists; do not build integrations against this document. tags: - name: Customers description: (Modeled) Customers / contacts and their job sites. paths: /customers: get: operationId: listCustomers tags: - Customers summary: List customers (modeled) description: MODELED - not a confirmed public endpoint. x-status: modeled responses: '200': description: A list of customers (modeled). content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Customer' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createCustomer tags: - Customers summary: Create a customer (modeled) description: MODELED - not a confirmed public endpoint. x-status: modeled requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CustomerInput' responses: '201': description: The created customer (modeled). content: application/json: schema: $ref: '#/components/schemas/Customer' '401': $ref: '#/components/responses/Unauthorized' components: responses: Unauthorized: description: Missing or invalid session credential (modeled). content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Customer: type: object description: Modeled customer / contact record. properties: id: type: string name: type: string email: type: string phone: type: string Error: type: object properties: error: type: object properties: code: type: string message: type: string CustomerInput: type: object required: - name properties: name: type: string email: type: string phone: type: string securitySchemes: sessionAuth: type: apiKey in: header name: Authorization description: MODELED. Tradify has no public API key scheme. Its app backend uses a session token obtained after username/password + MFA sign-in; unofficial proxies replay that session. There is no documented, self-serve public credential.