Heyyumi AI Live Status API

The Live Status API from Heyyumi AI — 2 operation(s) for live status.

GitHub OpenAPI

Operations 3

POST /api/v1/live-status Live status (ask the venue right now) #
GET /api/v1/live-status Fresh live answer (optional) #
GET /api/v1/live-status/{queryId} Live status result (long-poll) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/heyyumi-ai:heyyumi-ai-live-status-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

heyyumi-ai-live-status-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HeyYumi Live Status API
  version: 1.0.0
  description: 'Refined food & drink venue data (the ''oneset''): identity, location, standardized hours, menu, price band, review count, freshness, confidence, plus reservation endpoints so AI can find, recommend, and book. One curator''s notebook, served as an API.


    ## Field Mask & tiered billing

    Use the `fields` query param (comma-separated) to choose what you receive. Tokens can be tier names, `all`, or individual field names. Unknown tokens are ignored and reported via the `X-Map3-Ignored-Fields` response header. When `fields` is omitted, the default is `core`.


    ## Authentication

    Use `Authorization: Bearer ` or the `X-API-Key` header. Do not put API keys in URLs. `?api_key=` is deprecated and scheduled for removal (it will be rejected with `401 query_auth_disabled`) because URLs are commonly stored in browser, proxy, server, and error logs.


    Billing is per request: each call is billed at the highest field tier you request (returned in the `X-Map3-Units` header). `page_size` does not change tokens.

    - `core` (= 1 token/request): id, name, category, categoryLabel, location, address, regionCode, confidence, sourceCount, possiblyClosed, lastSeenAt, placeUrl

    - `contact_hours` (= 2 tokens/request): phone, homepage, yumiReservable, reservationChannels, snsLinks, businessHours, temporaryClosures, is24h

    - `quality` (= 2 tokens/request): reviewCount, latestReviewDate, freshnessScore, dataQuality, price, menuSummary, openNow, closureSignal, promotion, photoCount, nearestStation

    - `edge` (= 4 tokens/request): accessHints, recommendedFor, atmosphere, menu, serviceAttributes, dietary, atmosphereScores, aiSummary, ownerIntro, ownerStory, influencerFeatures, culturalAssociations, legacy, reputation

    - `media` (= 8 tokens/request): photos


    Abuse is controlled by limits, not price: per-key rate limit (requests/min) and a token cap by plan (daily on the free tier, monthly on paid plans; 429 with `Retry-After`), and a result window for the live API (100 results on the free tier, 1,000 on Starter, 5,000 on Pro and Scale). Larger or full-dataset extraction requires Bulk Export / data licensing, not paginated API calls (see Acceptable Use in the Terms).'
  contact:
    name: heyyumi
    url: https://heyyumi.ai
servers:
- url: https://api.heyyumi.ai
security:
- bearerAuth: []
- apiKeyHeader: []
tags:
- name: Live Status
paths:
  /api/v1/live-status:
    post:
      operationId: create-live-status
      summary: Live status (ask the venue right now)
      description: 'Send the owner a time-sensitive question that map/review/static data can''t answer and that changes through the day — (A) is this menu item available now / today''s fresh stock / sold out (kind=item), (D) how long is the wait right now (kind=wait), (E) can a party of N get in right now (kind=seats, headcount required). Same rail as reservations: at a venue with an active owner (on the Yumi Partners app) the app gets an instant push and the response starts as status=''pending'' (5-minute answer window). The owner answers with one tap → available, limited, unavailable, soon, or not_offered; poll GET /api/v1/live-status/{queryId} (long-poll) for the outcome. To avoid re-bothering the owner, if a fresh answer already exists for the same venue+topic it''s reused instantly (reused=true), and a pending identical question is joined. If ''now'' is outside confirmed opening hours the owner is not disturbed and you get blocked=''closed_now'' immediately (do not retry — surface the hours). Venues without an active owner return 422 live_status_not_available. Do not use this for static info like hours, parking, or pet policy — answer those from search. With the `X-Map3-Sandbox: 1` header, the venue check and opening-hours guard run for real, nothing is sent to the owner, and a simulated answer arrives after about 8 seconds (queryId starts with sbx_l_, sandbox:true). The playground always runs in sandbox mode.'
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - placeId
              - kind
              - topic
              properties:
                placeId:
                  type: string
                  description: Canonical place id. Get it from a search first. The example is a Yumi Partner venue.
                  example: '1726507251'
                kind:
                  type: string
                  description: 'Question kind: item (menu/stock) · wait (queue) · seats (immediate seating, include headcount).'
                  example: item
                topic:
                  type: string
                  description: The subject as a bare token, not a sentence. e.g. '두바이 쫀득 쿠키', 'yellowtail', 'wait', 'party of 10'. For item, use the venue's actual menu name.
                  example: 두바이 쫀득 쿠키
                question:
                  type: string
                  description: The guest's original wording (optional), for owner context.
                  example: 지금 두바이 쫀득 쿠키 있어요?
                sandboxOutcome:
                  type: string
                  description: 'Sandbox only: the answer to simulate, available, limited, unavailable, soon, not_offered, or no_response (after 5 min). Omit for a default answer by kind. Ignored in live mode.'
      security:
      - bearerAuth: []
      - apiKeyHeader: []
      responses:
        '200':
          description: OK
          headers:
            X-Map3-Units:
              description: Billed tokens for this call = the highest field tier requested. page_size does not affect tokens (per-request billing).
              schema:
                type: integer
            X-Map3-Ignored-Fields:
              description: Comma-separated unknown field tokens that were ignored (present only when some were dropped).
              schema:
                type: string
          content:
            application/json:
              example:
                success: true
                data:
                  queryId: c2e4f6a8-0000-0000-0000-000000000000
                  placeId: '11782345'
                  kind: item
                  topic: 두바이 쫀득 쿠키
                  status: pending
                  note: null
                  settled: false
                  fresh: false
                  interestedCount: 1
                  expiresAt: '2026-09-04T00:05:00.000Z'
        '400':
          description: Invalid parameters / bulk_export_required (result window too large)
        '401':
          description: API key required or invalid
        '404':
          description: Live status query not found (not_found)
        '422':
          description: Venue can't take live questions yet (live_status_not_available) — no active owner on the Yumi Partners app
        '429':
          description: Rate limit, daily quota, or monthly quota exceeded (see Retry-After)
      tags:
      - Live Status
    get:
      operationId: search-live-status
      summary: Fresh live answer (optional)
      description: If a still-valid owner-confirmed answer exists for placeId + topic, it's returned without asking (found:true + status, note, verifiedAt, validUntil). Otherwise found:false — then POST to ask fresh. You usually only need POST (it reuses on its own); use this only to peek at 'just-confirmed' info without triggering anything.
      parameters:
      - name: placeId
        in: query
        required: true
        description: Canonical place id.
        schema:
          type: string
        example: '11782345'
      - name: topic
        in: query
        required: true
        description: The subject token (same as POST's topic).
        schema:
          type: string
        example: 두바이 쫀득 쿠키
      security:
      - bearerAuth: []
      - apiKeyHeader: []
      responses:
        '200':
          description: OK
          headers:
            X-Map3-Units:
              description: Billed tokens for this call = the highest field tier requested. page_size does not affect tokens (per-request billing).
              schema:
                type: integer
            X-Map3-Ignored-Fields:
              description: Comma-separated unknown field tokens that were ignored (present only when some were dropped).
              schema:
                type: string
          content:
            application/json:
              example:
                success: true
                data:
                  found: true
                  queryId: c2e4f6a8-0000-0000-0000-000000000000
                  placeId: '11782345'
                  kind: item
                  topic: 두바이 쫀득 쿠키
                  status: available
                  note: null
                  verifiedAt: '2026-09-04T00:02:30.000Z'
                  verifiedBy: merchant
                  validUntil: '2026-09-04T00:32:30.000Z'
                  fresh: true
                  interestedCount: 4
        '400':
          description: Invalid parameters / bulk_export_required (result window too large)
        '401':
          description: API key required or invalid
        '404':
          description: Live status query not found (not_found)
        '422':
          description: Venue can't take live questions yet (live_status_not_available) — no active owner on the Yumi Partners app
        '429':
          description: Rate limit, daily quota, or monthly quota exceeded (see Retry-After)
      tags:
      - Live Status
  /api/v1/live-status/{queryId}:
    get:
      operationId: get-live-status
      summary: Live status result (long-poll)
      description: 'Check a live question''s current status. status: pending, available, limited, unavailable, soon, not_offered, no_response (owner didn''t answer in 5 min). Pass ?wait= (max 25) to long-poll — it returns the moment the owner answers or the 5-minute window lapses (settled); if still pending, call again to fill the ~5-minute window, then report the result with the verified time. note may carry the owner''s extra memo (e.g. wait ''20분'', ''we can seat you separately''). verifiedAt = when it was confirmed; validUntil = how long the answer stays reusable for other guests (varies by kind).'
      parameters:
      - name: queryId
        in: path
        required: true
        description: The queryId returned by the create call.
        schema:
          type: string
        example: c2e4f6a8-0000-0000-0000-000000000000
      - name: wait
        in: query
        required: false
        description: Long-poll seconds (0-25). Omit for a one-shot check.
        schema:
          type: integer
        example: '25'
      security:
      - bearerAuth: []
      - apiKeyHeader: []
      responses:
        '200':
          description: OK
          headers:
            X-Map3-Units:
              description: Billed tokens for this call = the highest field tier requested. page_size does not affect tokens (per-request billing).
              schema:
                type: integer
            X-Map3-Ignored-Fields:
              description: Comma-separated unknown field tokens that were ignored (present only when some were dropped).
              schema:
                type: string
          content:
            application/json:
              example:
                success: true
                data:
                  queryId: c2e4f6a8-0000-0000-0000-000000000000
                  placeId: '11782345'
                  kind: wait
                  topic: 웨이팅
                  status: limited
                  note: 20분
                  settled: true
                  verifiedAt: '2026-09-04T00:02:30.000Z'
                  verifiedBy: merchant
                  validUntil: '2026-09-04T00:12:30.000Z'
                  fresh: true
                  interestedCount: 3
                  createdAt: '2026-09-04T00:00:00.000Z'
                  expiresAt: '2026-09-04T00:05:00.000Z'
        '400':
          description: Invalid parameters / bulk_export_required (result window too large)
        '401':
          description: API key required or invalid
        '404':
          description: Live status query not found (not_found)
        '422':
          description: Venue can't take live questions yet (live_status_not_available) — no active owner on the Yumi Partners app
        '429':
          description: Rate limit, daily quota, or monthly quota exceeded (see Retry-After)
      tags:
      - Live Status
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Preferred: Authorization: Bearer <API_KEY>. Do not pass keys in URLs.'
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: Alternative header auth. Query-string api_key is deprecated.