# Quickstart

From account to first API response. No subscription or card is required to use signup credits.

## 1. Sign in

Open the [HotelUse dashboard](https://www.hoteluse.dev/#dashboard), choose Sign in, then Continue with Google or email. First-time sign-in creates your account. Complete the Google or email verification in the browser when requested.

## 2. Create an API key

In Dashboard → API keys, enter a key name and choose Create API key. Save the displayed secret once; it cannot be retrieved later. Store it in your application's secret manager or environment.



```bash
export HOTELUSE_API_KEY="hu_live_replace_with_your_key"
```



Do not commit the key or put it in browser JavaScript. API keys are for trusted server code. See [authentication](/docs/authentication.html) for rotation and revocation.

## 3. Make your first call

This static lookup does not need dates. It uses at most one hotel record unit. A repeat of the same record version is free.



```bash
curl 'https://www.hoteluse.dev/v1/hotels/get' \
  -H "Authorization: Bearer $HOTELUSE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: replace-with-a-unique-operation-id' \
  --data '{
  "hotel_id": "hu_69450c903d9c06226f1ce17b",
  "billing": {
    "max_units": 1
  }
}'
```



A successful result includes `data.hotel.name: "Hilton Bellevue"`, provider mappings, a record version and a usage receipt. [Full captured response](/docs/examples/get_hotel.json).

## 4. Search live prices

Use your own future check-in and check-out dates. Here is a JavaScript example with dates calculated from today. Run in Node.js 22 or later.



```javascript
import { randomUUID } from 'node:crypto';
const date = offset => { const d = new Date(); d.setUTCDate(d.getUTCDate() + offset); return d.toISOString().slice(0, 10); };
const response = await fetch('https://www.hoteluse.dev/v1/hotels/search', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.HOTELUSE_API_KEY,
    'Content-Type': 'application/json',
    'Idempotency-Key': randomUUID()
  },
  body: JSON.stringify({
    location: { country: 'US', city: 'Bellevue', region: 'WA' },
    context: {
      check_in: date(14), check_out: date(16),
      rooms: [{ adults: 2, children_ages: [] }],
      currency: 'USD', market: { residency_country: 'US' }
    },
    page_size: 25
  })
});
const result = await response.json();
if (!response.ok) throw new Error(JSON.stringify(result.error));
console.log(result.data.results, result.data.coverage, result.usage);
```



[Destination search reference](/docs/api/search-hotels.html) · [Room rates reference](/docs/api/get-room-rates.html). Search uses one search call; opening room rates uses one room call.

## Python

This example uses only Python's standard library. Set `HOTELUSE_API_KEY` in the environment first.



```python
import json, os, uuid, urllib.request
request = urllib.request.Request(
    'https://www.hoteluse.dev/v1/hotels/get',
    data=json.dumps({'hotel_id': 'hu_69450c903d9c06226f1ce17b', 'billing': {'max_units': 1}}).encode(),
    headers={
        'Authorization': 'Bearer ' + os.environ['HOTELUSE_API_KEY'],
        'Content-Type': 'application/json',
        'Idempotency-Key': str(uuid.uuid4()),
    },
    method='POST',
)
with urllib.request.urlopen(request, timeout=35) as response:
    result = json.load(response)
    print(result['data']['hotel']['name'], result['usage'])
```



## Next steps

[Connect through MCP](/docs/mcp.html) · [Handle errors and retries](/docs/errors-and-retries.html).

---

Canonical: https://www.hoteluse.dev/docs/quickstart.html
Source: https://www.hoteluse.dev/docs/quickstart.md
