Developer Hub

The CRE API
developers want.

420+ REST endpoints. Strongly typed SDKs. A schema that maps to real CRE objects — not generic tables. Build integrations, automate workflows, and power analytics on data that actually makes sense.

Terminal
$ npm install @hqo/sdk
added 12 packages in 1.3s
$ node
> const { HqO } = require('@hqo/sdk')
> const hqo = new HqO({ apiKey: process.env.HQO_API_KEY })
> const b = await hqo.buildings.list()
{ data: [{ uuid: 'bld_a3f9', name: 'One Market', ... }], meta: { total: 84 } }

Quickstart

Up and running in 5 minutes.

1

Get an API key

Find your organization on HqO and request a developer API key from your account settings.

2

Install the SDK

Install the TypeScript or Python SDK.

npm install @hqo/sdk
3

Initialize the client

Import and initialize the client with your API key.

import { HqO } from '@hqo/sdk';

const hqo = new HqO({ apiKey: process.env.HQO_API_KEY });
4

Make your first query

Fetch your portfolio buildings.

const buildings = await hqo.buildings.list();
console.log(buildings.data); // Array of Building objects

SDKs

Your language. Your toolchain.

TypeScript SDK

v2.4.1

TypeScript

Fully typed client with auto-generated models from our OpenAPI spec. First-class support for async/await, streaming, and webhooks.

npm install @hqo/sdk
View on GitHub

Python SDK

v2.3.0

Python

Python 3.9+ client with asyncio support, Pydantic v2 models, and type stubs. Works with Django, FastAPI, and raw scripts.

pip install hqo-sdk
View on GitHub

REST API

OpenAPI 3.1

HTTP

Use any HTTP client or import our OpenAPI spec into Postman, Insomnia, or any toolchain. 420+ endpoints fully documented.

curl https://api.hqo.ai/v1/buildings
View on GitHub

Core Concepts

The patterns that matter.

Authentication

All API calls require a Bearer token. Tokens are organization-scoped and carry fine-grained permission masks per object type.

const hqo = new HqO({
  apiKey: 'hqo_live_sk_...',
  region: 'us-east-1',
});

Pagination

All list endpoints use cursor-based pagination. Pass a cursor token from meta.next_cursor to get the next page.

const page1 = await hqo.leases.list({ per_page: 25 });
const page2 = await hqo.leases.list({
  cursor: page1.meta.next_cursor,
});

Webhooks

Subscribe to any object lifecycle event. HqO signs all payloads with HMAC-SHA256. Verify signatures to ensure authenticity.

hqo.webhooks.verify(payload, signature, secret);

hqo.webhooks.on('lease.created', async (event) => {
  await syncToERP(event.data.lease);
});

Rate Limits

Rate limits are communicated via response headers. Use the X-RateLimit-Remaining header to implement backoff.

// SDK handles 429s with automatic retry
const hqo = new HqO({
  apiKey: process.env.HQO_API_KEY,
  retryConfig: { maxRetries: 3, backoff: 'exponential' },
});

Start building.

Get an API key, read the reference, or explore the TypeScript SDK. Your first query takes 5 minutes.