{"templateId":"openapi_docs","sharedDataIds":{"openAPIDocsStore":"oas-index.yaml","sidebar":"sidebar-sidebars.yaml"},"props":{"definitionId":"index.yaml","dynamicMarkdocComponents":[],"baseSlug":"/","seo":{"title":"Setmore API","llmstxt":{"hide":true}},"itemId":"","disableAutoScroll":true,"metadata":{"type":"openapi","title":"Setmore API","description":"# Getting Started\n\nSetmore is an appointment scheduling platform that lets you book customer appointments, choose from available services, and manage appointments across multiple staff calendars under one account. This API provides basic Setmore functions for building tools and integrations, including importing new customer profiles and booking appointments.\n \n### **Request access**\n\nTo request access to the API, first make sure you've already signed up for a Setmore Pro account. Then send an email to api@setmore.com and include the following information:\n- Your Name\n- Email address that's registered to your **Setmore account**\n- A brief description of what you’d like to use the API for\n\n#### **What you can build**\n\nThe Setmore API enables you to build custom booking, retrieve calendar schedules, and create customer profiles. With this API, your integration can:\n\n*   **Manage Appointments:** Create and schedule new appointments dynamically based on real-time availability.\n*   **Retrieve Availability & Resources:** Query available time slots, filter schedules by specific staff members, and list available services.\n*   **Synchronize Staff & Services:** Fetch up-to-date lists of active staff members and services.\n*   **Automate Customer Creation:** Seamlessly register new customer profiles directly into the system.\n\n#### **Can I sell my integration?**\n\nCurrently, no. We do not have a marketplace to sell or share integrations at this time.\n\n#### **Need help?**\n\nDeveloper & Setmore API Support: Send an email to api@setmore.com.\n\nGeneral Inquiries: Reach out to us at help@setmore.com.\n\n#### **Rate Limits**\n\nTo ensure high availability and consistent performance, the Setmore API is subject to rate limiting. Usage is monitored continuously. While standard traffic limits apply, we reserve the right to dynamically adjust or restrict request thresholds per minute based on system health and client consumption patterns. \n\nIf your application exceeds these thresholds, the API will return an `HTTP 429 (Too Many Requests)` response.\n\n### **Quickstart Guide**\n\n#### **Authentication**\n\nTo interact with the Setmore API, you must authenticate your requests using a Access Token. \n\nWhen your access request is approved, the Setmore team will provision a permanent **Refresh Token** via email. Use this Refresh Token to dynamically generate your bearer tokens via the token endpoint below.\n\n##### **1. Exchange your Refresh Token**\n\nSend a `GET` request to exchange your permanent refresh token for a transient access token.\n\n**Endpoint:**\n`GET https://developer.setmore.com/api/v1/o/oauth2/token?refreshToken={your_refresh_token}`\n\n#### **2. Handle the Token Response**\n\nA successful exchange returns a JSON payload containing your bearer token credentials.\n\n**Example Response:**\n```json\n{\n\"response\": true,\n\"data\": {\n  \"token\": {\n    \"access_token\": \"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",\n    \"token_type\": \"BEARER\",\n    \"expires_in\": 604799,\n    \"user_id\": \"XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX\"\n    }\n  }\n}\n```\n> ⚠️ **Token Lifespan Notice:** Access tokens are highly transient and expire after the duration specified in `expires_in` (in seconds). Your application integration must monitor this expiration window and proactively call this endpoint to refresh tokens before they lapse.\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"developers.setmore.com","port":4000,"ipAddress":"216.73.217.79"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}