Skip to main content

Get business config

GET /api/v1/ready/businesses/:id/config
Returns the stored ReadyConfig for the specified business. This is the same configuration injected into the business’s Ready MCP server at deploy time as EZFORGE_READY_CONFIG. Responses are cached client-side with Cache-Control: private, max-age=10. Config changes propagate to clients within 10 seconds.

Authentication

This endpoint accepts two auth modes:
ModeMechanismRequired scope
SessionCookie or JWT
API keyAuthorization: Bearer <key>servers:read
Session callers are scoped to their own businesses. API-key callers are scoped to businesses owned by the user associated with the key’s project. In both cases, if the business does not belong to the authenticated caller, the endpoint returns 404 (not 403) to avoid leaking existence.

Path parameters

ParameterTypeDescription
idstringULID of the business (max 26 chars)

Response 200

{
  "data": {
    "version": "2.0",
    "serverId": "01HZ9QXYZ1234567890ABCDE1",
    "templateType": "restaurant",
    "business": {
      "name": "Rosario's Kitchen",
      "description": "Family-owned Italian restaurant serving the Midwest since 1987.",
      "category": "restaurant"
    },
    "contact": {
      "phone": "+1-313-555-0198",
      "email": "hello@rosarioskitchen.com",
      "website": "https://rosarioskitchen.com",
      "address": {
        "line1": "4821 Michigan Ave",
        "city": "Detroit",
        "state": "MI",
        "zip": "48210",
        "country": "US"
      },
      "coordinates": { "lat": 42.3314, "lng": -83.0458 }
    },
    "hours": {
      "monday": { "open": "11:00", "close": "21:00" },
      "tuesday": { "open": "11:00", "close": "21:00" },
      "wednesday": { "open": "11:00", "close": "21:00" },
      "thursday": { "open": "11:00", "close": "21:00" },
      "friday": { "open": "11:00", "close": "22:00" },
      "saturday": { "open": "10:00", "close": "22:00" },
      "sunday": "closed"
    },
    "catalog": {
      "categories": [
        { "id": "01HZ9CAT0000000000000001", "name": "Pasta", "sortOrder": 0 },
        { "id": "01HZ9CAT0000000000000002", "name": "Desserts", "sortOrder": 1 }
      ],
      "items": [
        {
          "id": "01HZ9ITEM000000000000001",
          "name": "Spaghetti Carbonara",
          "description": "Classic Roman pasta with guanciale, egg, and Pecorino Romano.",
          "categoryId": "01HZ9CAT0000000000000001",
          "priceCents": 1895,
          "priceType": "fixed",
          "isAvailable": true,
          "metadata": {}
        }
      ]
    },
    "featureFlags": {
      "appointmentBooking": false,
      "onlineOrdering": true,
      "quoteRequests": false,
      "faq": true,
      "menuBrowsing": true
    }
  }
}

ReadyConfig schema

FieldTypeRequiredDescription
version"2.0"Schema version
serverIdstringPlatform server ID for traceability
templateTypestringIndustry vertical: restaurant, salon, home_services, retail, professional_services, custom
businessobjectBusiness identity (name, description, category)
contactobjectPhone, email, website, address, coordinates
hoursobjectOperating hours keyed by day-of-week (e.g. "monday") or date. Each value is either "closed" or { open, close }
catalogobjectCatalog categories and items; may be absent before the first catalog sync
featureFlagsobjectFeature toggles: appointmentBooking, onlineOrdering, quoteRequests, faq, menuBrowsing
integrationsobjectExternal integration credentials (calendar, CRM, webhook). Values are sensitive — never log
analyticsobjectAnalytics configuration (enabled, optional reportingEndpoint)

Error codes

HTTPCodeDescription
400bad_requestid is missing or exceeds 26 characters
401unauthorizedRequest is not authenticated (no valid session or API key)
403forbiddenAPI-key caller is missing the servers:read scope
404not_foundBusiness does not exist or does not belong to the authenticated caller
404config_not_generatedBusiness exists but no template config has been generated yet. Trigger config generation from the Ready setup wizard or via the platform dashboard