{
  "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",
    "notes": "The API key alone identifies and scopes your workspace — no separate workspace header is required.",
    "additional_headers": {
      "X-Account-Id": "Connected-account id, optional — pins a specific connection when a workspace has more than one for the same provider. Get it from GET /v1/connect.",
      "X-Schema": "calry | calry-v1 | native (default: calry)",
      "Idempotency-Key": "UUID for POST/PUT/PATCH dedup"
    },
    "key_prefix": "sk_live_"
  },
  "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_live_..."
          }
        }
      }
    }
  },
  "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", "POST /v1/connect/sessions/{sessionId}/select-provider", "POST /v1/connect/booking/verify", "GET /v1/connect/booking/rooms", "POST /v1/connect/booking/map-rooms"],
    "listings": ["POST /v1/listings", "GET /v1/listings", "POST /v1/listings/status", "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", "POST /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/{event_type}", "POST /v1/webhooks/{id}/ping", "POST /v1/webhooks/{id}/rotate-secret"]
  },
  "updated": "2026-05-01"
}
