{
  "schema_version": "1.0",
  "name": "Repull",
  "description": "The unified API for vacation-rental tech. Connect to 13 channels (Airbnb, Booking.com, VRBO, Plumguide + 9 PMSes) through one hosted picker. Create listings with AI-generated content, price them with Atlas-powered market intelligence, and stream events through HMAC-signed webhooks.",
  "url": "https://repull.dev",
  "documentation_url": "https://repull.dev/docs",
  "api_base_url": "https://api.repull.dev",
  "openapi_url": "https://api.repull.dev/openapi.json",
  "llms_txt_url": "https://repull.dev/llms.txt",
  "llms_full_txt_url": "https://repull.dev/llms-full.txt",
  "agents_txt_url": "https://repull.dev/agents.txt",
  "hosted_connect_url": "https://connect.repull.dev/{sessionId}",
  "live_demo_url": "https://repull-sdk-demo.vercel.app",
  "open_source_url": "https://repull.dev/open-source",
  "authentication": {
    "type": "bearer",
    "header": "Authorization",
    "prefix": "Bearer",
    "additional_headers": {
      "X-Workspace-Id": "Workspace UUID, required on every call",
      "X-Schema": "calry | calry-v1 | native (default: calry)",
      "Idempotency-Key": "UUID for POST/PUT/PATCH dedup"
    },
    "key_prefixes": {
      "sk_test_": "Sandbox — seeded data, no rate limits, no side effects",
      "sk_live_": "Live — real PMS/OTA traffic"
    },
    "sandbox_proxy_value": "__sandbox__"
  },
  "cors": {
    "allow_origin": "*",
    "notes": "Permissive CORS for browser SDK consumers"
  },
  "capabilities": [
    "multi_channel_connect_picker",
    "listings_create",
    "listings_ai_content_generation",
    "listings_multi_channel_publish",
    "property_management",
    "reservation_management",
    "channel_management",
    "guest_communication",
    "availability_calendar",
    "ai_dynamic_pricing",
    "pricing_bulk_apply",
    "pricing_strategy_editor",
    "pricing_history",
    "market_intelligence",
    "market_calendar_with_events",
    "market_comps",
    "market_segments",
    "ai_operations",
    "webhook_signed_delivery",
    "webhook_replay",
    "webhook_secret_rotation",
    "stripe_billing",
    "per_market_subscription"
  ],
  "channels": {
    "ota": ["Airbnb", "Booking.com", "VRBO", "Plumguide"],
    "pms_active": ["Hostaway", "Guesty", "OwnerRez", "Smoobu", "Beds24", "iGMS", "Hospitable", "Lodgify", "BookingSync"],
    "pms_scaffolded": ["Cloudbeds", "Hostfully", "Mews", "Tokeet", "Streamline", "Zeevou", "Uplisting", "Hostify", "Avantio", "Apaleo", "Escapia", "Amenitiz"],
    "total_supported": 13
  },
  "sdks": {
    "typescript": { "package": "@repull/sdk", "registry": "npm", "version": "0.1.0" },
    "python": { "package": "repull", "registry": "pypi", "version": "0.1.0" },
    "php": { "package": "repull/sdk", "registry": "packagist" },
    "go": { "module": "github.com/ivannikolovbg/repull-go", "registry": "go" },
    "ruby": { "package": "repull", "registry": "rubygems" },
    "dotnet": { "package": "Repull.SDK", "registry": "nuget" },
    "ai_sdk_provider": { "package": "@repull/ai-sdk", "registry": "npm", "version": "0.1.0" },
    "cli": { "package": "@repull/cli", "registry": "npm" }
  },
  "mcp_server": {
    "package": "@repull/mcp",
    "binary": "repull-mcp",
    "version": "0.1.0",
    "description": "MCP server for Claude Desktop, Cursor, Windsurf and any MCP client",
    "config_example": {
      "mcpServers": {
        "repull": {
          "command": "npx",
          "args": ["-y", "@repull/mcp"],
          "env": {
            "REPULL_API_KEY": "sk_test_...",
            "REPULL_WORKSPACE_ID": "ws_..."
          }
        }
      }
    }
  },
  "open_source_repos": {
    "channel_manager": "https://github.com/ivannikolovbg/repull-channel-manager",
    "revenue": "https://github.com/ivannikolovbg/repull-revenue",
    "mcp": "https://github.com/ivannikolovbg/repull-mcp",
    "ai_sdk": "https://github.com/ivannikolovbg/repull-ai-sdk",
    "sdk": "https://github.com/ivannikolovbg/repull-sdk"
  },
  "billing": {
    "plans": [
      { "name": "Free", "listings": 3 },
      { "name": "Starter", "listings": 10, "price_usd": 99 },
      { "name": "Scale", "custom": true }
    ],
    "per_market": { "free_per_workspace": 1, "additional_price_usd": 49, "billed_via": "Stripe" }
  },
  "key_endpoints": {
    "connect": ["GET /v1/connect/providers", "POST /v1/connect", "GET /v1/connect/sessions/{id}", "POST /v1/connect/booking/verify", "POST /v1/connect/booking/rooms", "POST /v1/connect/booking/map-rooms"],
    "listings": ["POST /v1/listings", "GET /v1/listings", "POST /v1/listings/{id}/generate-content", "POST /v1/listings/{id}/publish/airbnb", "POST /v1/listings/{id}/publish/booking", "GET /v1/listings/{id}/publish-status"],
    "markets": ["GET /v1/markets", "GET /v1/markets/{city}", "GET /v1/markets/{city}/calendar", "GET /v1/markets/browse", "GET /v1/listings/{id}/comps", "GET /v1/listings/{id}/segments"],
    "pricing": ["GET /v1/listings/{id}/pricing", "PUT /v1/listings/{id}/pricing", "POST /v1/listings/pricing/bulk"],
    "webhooks": ["POST /v1/webhooks", "GET /v1/webhooks/event-types", "GET /v1/webhooks/{id}/deliveries", "POST /v1/webhooks/{id}/test", "POST /v1/webhooks/{id}/rotate-secret"],
    "ai": ["POST /v1/ai"]
  },
  "updated": "2026-05-01"
}
