Private betaWe’re looking for rental operators to run on OmniPM — 50% off for your first 12 months.Apply

DevelopersWebsite API

Private betaFull reference arrives with general availability

Your website, on live OmniPM data. Listings, availability and inquiries through one API.

Keep your site and your developer. Your pages read units, prices and real availability straight from OmniPM, and every inquiry, viewing request and chat lands in your team’s inbox.

Request · Response200 OK
GET /properties?area=Mitaka&moveInBy=2026-11-01
Authorization: Bearer <your-website-key>

200 OK
{
  "ok": true,
  "data": {
    "properties": [
      {
        "unitSlug": "mitaka-garden-204",
        "buildingName": "Mitaka Garden",
        "unitName": "204",
        "type": "apartment",
        "nearestStation": { "name": "Mitaka", "walkMinutes": 6 },
        "price": 118000,
        "size": { "sqm": 25.4, "layout": "1K", "floor": 2 },
        "availability": {
          "status": "available-from",
          "date": "2026-11-01T00:00:00.000Z",
          "label": "From Nov 1, 2026"
        }
      }
    ],
    "pagination": { "page": 1, "limit": 20, "total": 1, "totalPages": 1 }
  }
}
Auth
Bearer key per website
Format
JSON over HTTPS
Data
Your company’s only
Limits
Rate-limited per key
Reference
At general availability

Website API

What a rental website needs, served from the dashboard your team already works in.

Change a rent, start a campaign or log a move-out notice in OmniPM, and your website shows it on its next request. Nothing to copy across.

01

Listings and search

Filter by area, apartment or sharehouse, layout, bedrooms, price range, move-in date and running campaigns. Search a building, area or station by name, with typo tolerance.

areatypelayoutsbedroomspriceMinpriceMaxmoveInByavailableNowhasCampaignsortsearch
02

Unit pages

Rent, utilities and the building fee, size and floor, nearest station and walk time, amenities, photos, the current campaign and similar units.

03

Inquiries into the inbox

Inquiries, viewing requests, waiting-list sign-ups and contact forms arrive in OmniPM as conversations, matched to the unit they are about.

04

Website chat

The AI chat on your site searches your live listings and answers from your guest knowledge base. Each answer uses one AI credit.

05

Your content

Blog posts, campaigns and job openings written in OmniPM, ready to publish on your own pages.

An inquiry, straight into the inbox

Send the unit’s slug and OmniPM files the inquiry under that building and unit. A missing or unknown slug never loses the lead: OmniPM matches it by name instead.

POST /inquiries200 OK
POST /inquiries
Authorization: Bearer <your-website-key>
Content-Type: application/json

{
  "name": "Mara Lindqvist",
  "email": "mara@example.com",
  "platform": "website",
  "unitSlug": "mitaka-garden-204",
  "moveInDate": "2026-11-01",
  "desiredPeriod": "6 months",
  "message": "Is the desk by the window included?",
  "locale": "en"
}

200 OK
{
  "ok": true,
  "data": {
    "id": "…",
    "matched": {
      "building": { "id": "…", "name": "Mitaka Garden" },
      "unit": { "id": "…", "name": "204" }
    }
  }
}

The shape of the API

MethodPathWhat it doesScope
GET/propertiesAvailable units, filtered and paginated, each with its availabilityproperties:read
GET/properties?search={term}Look up a building, area or station, with the outcome in one sentenceproperties:read
GET/properties/{id}One unit with photos, fees, campaign and similar unitsproperties:read
GET/buildings/{id}A building page with its units and locationproperties:read
GET/content/{type}Blog posts, campaigns and job openingscontent:read
POST/inquiriesAn inquiry, matched to its unit and filed in the inboxinquiries:write
POST/leads/{kind}Viewing requests, waiting list, contact and newsletter formsleads:write
POST/chatA website chat answer, using one AI creditchat:invoke
POST/eventsPage views and searches for your marketing analyticsanalytics:write

Paths are shown in their general form. The full reference — every field, filter and error, with examples — is published with general availability.

Live availability

Availability arrives already worked out. Your site never guesses from a calendar.

OmniPM works out each unit’s availability from its reservations and contracts at the moment you ask, and returns a status, a date and a label ready to show. A unit is listed as available only when it is empty now, or when a move-out notice has confirmed the date.

available-nowListed

Available now

Vacant today, ready for an immediate move-in.

available-fromListed

Available from a date

The resident has filed a move-out notice, so the date is confirmed.

possibly-fromSearch only

Possibly from a date

A fixed term is ending but no notice is filed — the resident may renew. Returned separately, and only when you search.

occupiedCounted

Occupied

No vacancy coming up. Counted in search results, never listed.

Search answers in one sentence.

Search for a building, area or station and the response says which of four things happened — with a sentence your site, or a chatbot, can show as it is.

availableAt least one unit is available.2 units available for "Mitaka".
possibly_availableNothing free now, but units may free up.No units are available now for "Kanda", but 2 units may become available: …
none_availableIt exists, and it’s full."Ebisu Studio" exists but has no units available right now.
not_foundNo building, area or station matched.No listing matching "Odaiba Bay" was found.
The availability object
// On every unit the API returns
"availability": {
  "status": "possibly-from",
  "date": "2026-12-12T00:00:00.000Z",
  "dateUntil": null,
  "label": "Possibly from Dec 12, 2026"
}
GET /properties?search=Kanda200 OK
GET /properties?search=Kanda
Authorization: Bearer <your-website-key>

200 OK
{
  "ok": true,
  "data": {
    "properties": [],
    "possiblyAvailable": [ … ],
    "search": {
      "term": "Kanda",
      "outcome": "possibly_available",
      "message": "No units are available now for \"Kanda\", but 2 units …",
      "matchTier": "exact",
      "availableCount": 0,
      "possiblyAvailableCount": 2,
      "occupiedCount": 9
    }
  }
}

API keys

Keys for each website. Scoped to what that site needs, and revocable in a click.

Create keys in the dashboard, under Settings. A key belongs to your company alone, so every request it makes is limited to your own buildings and units.

my.omnipm.app · Settings · API keys
  1. 01

    Bearer authentication

    Send the key in the Authorization header, over HTTPS, from your server. It never belongs in code that runs in a visitor’s browser.

  2. 02

    Scoped

    Give each site only what it needs: read listings, read content, send inquiries and forms, run the chat, send analytics. Anything outside its scopes is refused.

  3. 03

    Shown once, stored as a hash

    The full key appears once, when you create it. OmniPM keeps only a hash, so nobody can read it back — us included.

  4. 04

    Revocable

    Revoke a key and its next request is refused. Last-used dates show which keys are still in service.

  5. 05

    Rate-limited

    Each key has its own request budget, so one busy site can’t slow another. Over the budget, the API answers 429 with a Retry-After header.

When a request is refused

Errors come back as JSON with a plain-English message and the usual status codes.

Errors
# No key, or a revoked one
401 Unauthorized
{ "error": "API key revoked" }

# A key without the scope this endpoint needs
403 Forbidden
{ "error": "Missing required scope: inquiries:write" }

# Over this key's request budget
429 Too Many Requests
Retry-After: <seconds>
{ "error": "Too many requests. Please try again later." }
How keys and data are protected

Early access

The documentation is on its way. Beta operators build with us now.

  1. Now · private beta

    Early access for beta operators

    We issue your keys, share the working reference for the endpoints your site needs, and answer your developer’s questions directly.

  2. General availability

    The full public reference

    Every endpoint, field, filter and error, with examples, published on this page.

    System status
  3. Any time

    Or skip the build

    We can build the website for you, on your brand and in 13 languages, running on this same API.

    Websites and API

Developer questions

Does the API cost extra?

No. It is part of every plan, and connecting your own site costs nothing extra. Website chat answers use AI credits, like every other AI action.

Is availability real-time?

It is worked out from reservations and contracts at the moment of each request. If your site caches responses, visitors see what was cached.

Can our site take bookings?

Your site sends inquiries, viewing requests and waiting-list sign-ups into OmniPM. Bookings are confirmed in OmniPM — by your team, or through a booking link with its own price and expiry.

Which languages does the data come in?

Building, unit, area and station names come in English and Japanese. Your site decides how to present them.

Can one key serve several websites?

It can, but we recommend separate keys for each site: revoke one and the others keep working, and last-used dates tell you which site is calling.

When is the full reference published?

With general availability. Until then, beta operators get the working reference and a direct line to the people who build the API.

Building a site on OmniPM? Apply for the beta and get early API access.