REST API reference

Hipcamp API

15 endpoints for Hipcamp. Each one is a POST with a JSON body, called with your API key.

Base URL
https://cotlet.dev/api/v1/hipcamp
Connects with
Your own Hipcamp host account
Integration page
Hipcamp
Hipcamp Endpoints
Endpoint Access Description
list_listings read Your listings with their sites, status and base nightly price.
list_bookings read Confirmed bookings in a date range with camper, site, dates, guests and total.
list_booking_requests read Pending booking requests waiting for your answer, with dates, site and time left to respond.
get_booking read One booking or request: camper, group size, message and price.
get_calendar read Availability and nightly price per site and day, including blocked dates.
list_messages read Inbox conversations with campers, with the last message and its state.
list_reviews read Camper reviews of your listings with rating, text, date and your response.
list_payouts read Payouts with amount, status, date and the bookings they cover.
block_dates write Make a site or a whole listing unavailable for a date range.
unblock_dates write Open blocked dates again for booking.
update_pricing write Set a special nightly price for chosen nights.
accept_booking_request write Accept a pending booking request. The camper is notified and charged.
decline_booking_request write Decline a pending booking request. The camper is notified and not charged.
send_message write Send a message to a camper in an existing conversation.
respond_to_review write Respond to a camper review, publicly or as a private message.

POST https://cotlet.dev/api/v1/hipcamp/list_listings

Returns every listing in your host account with its sites. Use listing_id and site_id from each item in the other endpoints. Base price is the price on the site, before any special price you set on single nights.

Parameters

No parameters.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_listings \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_listings")
Node.js
const result = await cotlet.call('hipcamp', 'list_listings');
CLI
cotlet call hipcamp list_listings

Example response

{
  "listings": [
    {
      "listing_id": "lst_48211",
      "name": "Willow Creek Farm",
      "status": "live",
      "sites": [
        {
          "site_id": "site_meadow",
          "name": "Meadow",
          "base_price": 45,
          "currency": "USD"
        },
        {
          "site_id": "site_creek",
          "name": "Creekside",
          "base_price": 52,
          "currency": "USD"
        }
      ]
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/list_bookings

Lists confirmed bookings whose arrival falls in the range, soonest arrival first. Booking requests still waiting for your answer are not included; list_booking_requests returns those. Total is what the camper paid for the stay.

Parameters

Parameters: list_bookings
NameTypeDescription
from date First arrival date. Default: today.
to date Last arrival date. Default: 30 days from today.
listing_id string Only this listing.
status enum upcoming, current, past or cancelled. Default: upcoming.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_bookings \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_bookings")
Node.js
const result = await cotlet.call('hipcamp', 'list_bookings');
CLI
cotlet call hipcamp list_bookings

Example response

{
  "bookings": [
    {
      "booking_id": "bk_90105",
      "listing_id": "lst_48211",
      "site": "Meadow",
      "camper": "Maya R.",
      "arrival": "2026-10-16",
      "departure": "2026-10-18",
      "guests": 3,
      "total": 90,
      "currency": "USD",
      "status": "upcoming"
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/list_booking_requests

Lists requests to book that you have not accepted or declined, soonest expiry first. A request expires 24 hours after it arrives if you do not respond, and expires_at shows when. Pass booking_id to get_booking, accept_booking_request or decline_booking_request.

Parameters

Parameters: list_booking_requests
NameTypeDescription
listing_id string Only this listing.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_booking_requests \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_booking_requests")
Node.js
const result = await cotlet.call('hipcamp', 'list_booking_requests');
CLI
cotlet call hipcamp list_booking_requests

Example response

{
  "requests": [
    {
      "booking_id": "bk_90217",
      "listing_id": "lst_48211",
      "site": "Meadow",
      "camper": "Jon P.",
      "arrival": "2026-10-23",
      "departure": "2026-10-25",
      "guests": 2,
      "expires_at": "2026-10-12T09:14:00Z"
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/get_booking

Returns one booking or booking request with the camper's first name, number of guests, the message they sent with the request and the price for the stay. Use it before accepting so your agent reads the camper's note.

Parameters

Parameters: get_booking
NameTypeDescription
booking_id required string Booking ID from list_bookings or list_booking_requests.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/get_booking \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"booking_id":"booking_8c41d2"}'
Python
result = client.call("hipcamp", "get_booking", {"booking_id":"booking_8c41d2"})
Node.js
const result = await cotlet.call('hipcamp', 'get_booking', {"booking_id":"booking_8c41d2"});
CLI
cotlet call hipcamp get_booking --data '{"booking_id":"booking_8c41d2"}'

Example response

{
  "booking_id": "bk_90217",
  "status": "pending_request",
  "site": "Meadow",
  "camper": "Jon P.",
  "arrival": "2026-10-23",
  "departure": "2026-10-25",
  "guests": 2,
  "camper_message": "Two adults and a dog, arriving after 5 pm.",
  "nights": 2,
  "nightly_price": 45,
  "total": 90,
  "currency": "USD"
}

POST https://cotlet.dev/api/v1/hipcamp/get_calendar

Returns one row per site and night with its price and state: available, booked or blocked. Special prices are shown as set; days without one show the base price. Use it before update_pricing to see what a change would touch.

Parameters

Parameters: get_calendar
NameTypeDescription
listing_id required string Listing ID from list_listings.
site_id string One site of the listing. Default: all sites.
from required date First day.
to required date Last day.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/get_calendar \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("hipcamp", "get_calendar", {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('hipcamp', 'get_calendar', {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call hipcamp get_calendar --data '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "site_id": "site_meadow",
  "days": [
    {
      "date": "2027-07-02",
      "state": "available",
      "nightly_price": 45,
      "special_price": false
    },
    {
      "date": "2027-07-03",
      "state": "booked",
      "nightly_price": 45,
      "special_price": false
    },
    {
      "date": "2027-07-04",
      "state": "blocked",
      "nightly_price": 45,
      "special_price": false
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/list_messages

Lists Inbox conversations, most recent first, with the same filters as the Inbox. Pending conversations include booking requests waiting for your answer. Use conversation_id in send_message.

Parameters

Parameters: list_messages
NameTypeDescription
filter enum unread, pending, future, past or questions. Default: unread.
booking_id string Only the conversation of this booking.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_messages \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_messages")
Node.js
const result = await cotlet.call('hipcamp', 'list_messages');
CLI
cotlet call hipcamp list_messages

Example response

{
  "conversations": [
    {
      "conversation_id": "cv_33170",
      "camper": "Maya R.",
      "booking_id": "bk_90105",
      "last_message": "Which gate is the Meadow site? We arrive Friday.",
      "last_message_at": "2026-10-11T08:02:00Z",
      "unread": true
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/list_reviews

Lists reviews newest first, each with your public response if you wrote one. Leave responded empty to get all of them, or set it to false to find reviews you have not answered.

Parameters

Parameters: list_reviews
NameTypeDescription
listing_id string Only this listing.
since date Only reviews on or after this date.
responded boolean false: only reviews without your response.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_reviews \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_reviews")
Node.js
const result = await cotlet.call('hipcamp', 'list_reviews');
CLI
cotlet call hipcamp list_reviews

Example response

{
  "reviews": [
    {
      "review_id": "rv_5521",
      "listing_id": "lst_48211",
      "camper": "Maya R.",
      "recommended": true,
      "text": "Quiet site, great creek, easy host.",
      "created_at": "2026-10-08T14:30:00Z",
      "response": null
    }
  ]
}

POST https://cotlet.dev/api/v1/hipcamp/list_payouts

Lists payouts as the Payouts tab shows them, newest first, each with the bookings it covers. A booking is paid after the camper checks out, so recent stays can still be missing.

Parameters

Parameters: list_payouts
NameTypeDescription
since date Only payouts on or after this date. Default: 90 days ago.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/list_payouts \
  -H "Authorization: Bearer $COTLET_API_KEY"
Python
result = client.call("hipcamp", "list_payouts")
Node.js
const result = await cotlet.call('hipcamp', 'list_payouts');
CLI
cotlet call hipcamp list_payouts

Example response

{
  "payouts": [
    {
      "payout_id": "po_7731",
      "date": "2026-10-06",
      "amount": 170,
      "currency": "USD",
      "status": "paid",
      "bookings": [
        "bk_89990",
        "bk_90012"
      ]
    }
  ]
}

Block dates

write

POST https://cotlet.dev/api/v1/hipcamp/block_dates

Turns off availability for the nights in the range, the same as Bulk Edit in the Calendar. Blocking keeps the property in Hipcamp search. It reaches no one and unblock_dates undoes it, so it runs without asking.

Parameters

Parameters: block_dates
NameTypeDescription
listing_id required string Listing ID from list_listings.
site_id string One site of the listing. Default: all sites.
from required date First blocked night.
to required date Last blocked night.
reason string Closure reason, as offered in Bulk Edit.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/block_dates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("hipcamp", "block_dates", {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('hipcamp', 'block_dates', {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call hipcamp block_dates --data '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "listing_id": "lst_48211",
  "site_id": "site_meadow",
  "from": "2027-08-14",
  "to": "2027-08-18",
  "reason": "Maintenance",
  "nights_blocked": 5
}

POST https://cotlet.dev/api/v1/hipcamp/unblock_dates

Turns availability back on for the nights in the range. It reaches no one and block_dates undoes it, so it runs without asking.

Parameters

Parameters: unblock_dates
NameTypeDescription
listing_id required string Listing ID from list_listings.
site_id string One site of the listing. Default: all sites.
from required date First night to open.
to required date Last night to open.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/unblock_dates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'
Python
result = client.call("hipcamp", "unblock_dates", {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"})
Node.js
const result = await cotlet.call('hipcamp', 'unblock_dates', {"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"});
CLI
cotlet call hipcamp unblock_dates --data '{"listing_id":"listing_8c41d2","from":"2026-10-01","to":"2026-10-01"}'

Example response

{
  "listing_id": "lst_48211",
  "site_id": "site_meadow",
  "from": "2027-08-14",
  "to": "2027-08-18",
  "nights_opened": 5
}

POST https://cotlet.dev/api/v1/hipcamp/update_pricing

Sets a special price for the nights in the range, the same as Bulk Edit in the Calendar. A special price takes precedence over the base price and applies to bookings made after the change; confirmed bookings keep their price. It reaches no one directly and one call undoes it, so it runs without asking.

Parameters

Parameters: update_pricing
NameTypeDescription
listing_id required string Listing ID from list_listings.
site_id string One site of the listing. Default: all sites.
from required date First night.
to required date Last night.
nightly_price required integer Price per night in the listing currency, whole units.
weekdays string[] Only these days: mon, tue, wed, thu, fri, sat, sun. Default: every day.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/update_pricing \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"lst_48211","site_id":"site_meadow","from":"2027-07-01","to":"2027-07-31","nightly_price":55,"weekdays":["fri","sat"]}'
Python
result = client.call("hipcamp", "update_pricing", {"listing_id":"lst_48211","site_id":"site_meadow","from":"2027-07-01","to":"2027-07-31","nightly_price":55,"weekdays":["fri","sat"]})
Node.js
const result = await cotlet.call('hipcamp', 'update_pricing', {"listing_id":"lst_48211","site_id":"site_meadow","from":"2027-07-01","to":"2027-07-31","nightly_price":55,"weekdays":["fri","sat"]});
CLI
cotlet call hipcamp update_pricing --data '{"listing_id":"lst_48211","site_id":"site_meadow","from":"2027-07-01","to":"2027-07-31","nightly_price":55,"weekdays":["fri","sat"]}'

Example response

{
  "listing_id": "lst_48211",
  "site_id": "site_meadow",
  "nights_updated": 10,
  "nightly_price": 55,
  "currency": "USD"
}

Accept booking request

write Confirm

POST https://cotlet.dev/api/v1/hipcamp/accept_booking_request

Accepts the request; Hipcamp then captures the charge it held when the request came in, and the camper is notified. Only requests that have not expired can be accepted. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: accept_booking_request
NameTypeDescription
booking_id required string Booking ID from list_bookings or list_booking_requests.
message string Optional note to the camper.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/accept_booking_request \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"booking_id":"bk_90217","message":"Welcome, Jon! Late arrival is fine; the gate code comes the day before."}'
Python
result = client.call("hipcamp", "accept_booking_request", {"booking_id":"bk_90217","message":"Welcome, Jon! Late arrival is fine; the gate code comes the day before."})
Node.js
const result = await cotlet.call('hipcamp', 'accept_booking_request', {"booking_id":"bk_90217","message":"Welcome, Jon! Late arrival is fine; the gate code comes the day before."});
CLI
cotlet call hipcamp accept_booking_request --data '{"booking_id":"bk_90217","message":"Welcome, Jon! Late arrival is fine; the gate code comes the day before."}'

Example response

{
  "booking_id": "bk_90217",
  "status": "confirmed",
  "site": "Meadow",
  "arrival": "2026-10-23",
  "departure": "2026-10-25",
  "total": 90,
  "currency": "USD"
}

Decline booking request

write Confirm

POST https://cotlet.dev/api/v1/hipcamp/decline_booking_request

Declines the request and notifies the camper. The camper is not charged. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: decline_booking_request
NameTypeDescription
booking_id required string Booking ID from list_bookings or list_booking_requests.
message string Optional note to the camper explaining why.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/decline_booking_request \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"booking_id":"booking_8c41d2"}'
Python
result = client.call("hipcamp", "decline_booking_request", {"booking_id":"booking_8c41d2"})
Node.js
const result = await cotlet.call('hipcamp', 'decline_booking_request', {"booking_id":"booking_8c41d2"});
CLI
cotlet call hipcamp decline_booking_request --data '{"booking_id":"booking_8c41d2"}'

Example response

{
  "booking_id": "bk_90218",
  "status": "declined",
  "camper_charged": false
}

Send message

write Confirm

POST https://cotlet.dev/api/v1/hipcamp/send_message

Posts a message in an Inbox conversation under your host name and returns its ID. Start from a conversation_id returned by list_messages. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_message
NameTypeDescription
conversation_id required string Conversation ID from list_messages.
body required string Message text.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/send_message \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"conversation_id":"cv_33170","body":"Hi Maya, take the second gate after the red barn; Meadow is the flat spot by the creek. Firewood is $8 a bundle at the shed."}'
Python
result = client.call("hipcamp", "send_message", {"conversation_id":"cv_33170","body":"Hi Maya, take the second gate after the red barn; Meadow is the flat spot by the creek. Firewood is $8 a bundle at the shed."})
Node.js
const result = await cotlet.call('hipcamp', 'send_message', {"conversation_id":"cv_33170","body":"Hi Maya, take the second gate after the red barn; Meadow is the flat spot by the creek. Firewood is $8 a bundle at the shed."});
CLI
cotlet call hipcamp send_message --data '{"conversation_id":"cv_33170","body":"Hi Maya, take the second gate after the red barn; Meadow is the flat spot by the creek. Firewood is $8 a bundle at the shed."}'

Example response

{
  "conversation_id": "cv_33170",
  "message_id": "msg_88410",
  "sent_at": "2026-10-11T09:05:00Z"
}

Respond to review

write Confirm

POST https://cotlet.dev/api/v1/hipcamp/respond_to_review

Posts your response under the review, or sends it to the camper as a private message. A public response appears under your name for future campers. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: respond_to_review
NameTypeDescription
review_id required string Review ID from list_reviews.
body required string Response text.
visibility enum public or private. Default: public.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/hipcamp/respond_to_review \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"review_id":"rv_5521","visibility":"private","body":"Thank you, Maya! So glad the creek was running for you. Come back in spring."}'
Python
result = client.call("hipcamp", "respond_to_review", {"review_id":"rv_5521","visibility":"private","body":"Thank you, Maya! So glad the creek was running for you. Come back in spring."})
Node.js
const result = await cotlet.call('hipcamp', 'respond_to_review', {"review_id":"rv_5521","visibility":"private","body":"Thank you, Maya! So glad the creek was running for you. Come back in spring."});
CLI
cotlet call hipcamp respond_to_review --data '{"review_id":"rv_5521","visibility":"private","body":"Thank you, Maya! So glad the creek was running for you. Come back in spring."}'

Example response

{
  "review_id": "rv_5521",
  "visibility": "public",
  "posted_at": "2026-10-11T09:12:00Z"
}