接入

API 参考

v1 公开端点。大多为只读(GET),只有预订请求和实时提问为写入(POST)。除 /meta 外的所有端点都需要 Bearer 密钥。

OpenAPI →
GET/api/v1/places

Search places

Search refined places (the oneset) by keyword, region, category, and confidence. Default sort is discovery (query fit, recency, cross-source verification, and completeness together), paginated. Use fields to shape the response.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

  • keywordstring可选Partial match on name/address/menu item · 示例: 버거킹
  • region_codestring可选Region (admin-dong) code
  • business_categorystring可选Category (restaurant/cafe…) · 示例: restaurant
  • min_confidencenumber可选Minimum confidence (0-1) · 示例: 0.6
  • sortstring可选discovery (default, only value) — recommendation sort. distance is unavailable without coordinates. meta.sort reports the sort actually applied and may degrade to reviews on very broad searches. · 示例: discovery
  • recommended_forstring可选Narrow by occasion (comma, all must match). Natural language resolves too. Values: solo_dining, date, group_dining, family, business_meeting, formal_gathering, late_night… Full list & aliases at /api/v1/meta. · 示例: group_dining
  • atmospherestring可选Atmosphere (comma). quiet, lively, view, cozy, trendy, spacious, traditional, clean, work_study, rainy_mood. · 示例: quiet
  • parkingboolean可选Only places with confirmed parking. See parking_type for the kind. · 示例: true
  • parking_typestring可选Parking type: onsite, valet, partner, nearby, none. Natural language (e.g. 발렛→valet) resolves. · 示例: onsite
  • reservableboolean可选Only reservable places (crawl-confirmed plus Yumi Partner venues). · 示例: true
  • payment_methodsstring可选Require payment methods (comma, all must match). cash, card, naver_pay, kakao_pay, toss_pay, alipay, wechat_pay, unionpay, apple_pay, samsung_pay… apple_pay/samsung_pay/unionpay are owner-confirmed. · 示例: alipay
  • servesstring可选Serves (comma). coffee, alcohol, dessert, vegetarian, vegan. · 示例: alcohol
  • dietarystring可选Dietary (comma). vegan_options, vegetarian_options, fully_vegan, mixed_group_suitable, vegetarian_mixed_group_suitable, gluten_free. Natural words (KR/EN) resolve (vegan/plant-based → vegan_options, mixed → mixed_group_suitable, gf → gluten_free). For a mixed group use mixed_group_suitable (confirmed vegan MEAL, not just a drink). gluten_free is owner-confirmed only; if a region has fewer than 10 confirmed venues the result is withheld and meta.dietaryCoverage reports it. · 示例: vegan_options
  • foreign_languagesstring可选Languages the venue can serve customers in (ISO 639-1, comma, all must match). en, zh, ja, es, de, fr. Owner-confirmed. Natural language (영어→en, 일본어→ja) resolves. e.g. English-speaking venues for foreign guests. · 示例: en
  • subtypestring可选Normalized venue sub-type (comma = OR, 40+). Food: korean, korean_bbq, gukbap_soup, noodles, chinese, japanese, sushi_sashimi, italian, seafood… Cafe: coffee, dessert, bakery, brunch, traditional_tea… Bars: cocktail_bar, wine_bar, izakaya, pocha, hof_beer… Natural language resolves. Prefer subtype over broad business_category for venue-type intent. Full list at /api/v1/meta. · 示例: korean_bbq
  • bbq_meatstring可选Meat type a Korean BBQ venue serves (comma = OR): pork, beef, duck, lamb. Independent of subtype — subtype=korean_bbq picks the venue type, bbq_meat=pork narrows the meat. Mixed venues match both. · 示例: pork
  • viewstring可选View type (comma = OR): ocean, sunset, river, mountain, night, city, garden. A venue with ocean+sunset matches both. Natural language (바다뷰→ocean, 한강뷰→river, 야경→night) resolves. · 示例: ocean
  • pet_friendlyboolean可选Example boolean presence filter. Attach the param to require =true (only confirmed places). Full list (wifi, private_room, outdoor_seating, group_friendly, takeout, delivery, corkage_free, has_promotion, real_bar, rooftop, hanok, photo_spot, local_favorite, nursing_room, live_music, omakase…) plus special filters (muslim_friendly, legacy, local_food, exclude, featured_by, associated_with) at /api/v1/meta. · 示例: true
  • open_atstring可选Only places open at that time — a point or a meal window (KST). Point: 2026-08-26T19:00, '2026-08-26 19:00', '19:00' (today), 'now'. Meal windows: 'lunch' (11:00-14:00), 'dinner' (17:30-21:00), breakfast, brunch, late_night, a custom range '11:00-14:00', or combined with a date '2026-08-29 lunch'. Relative days: only 오늘/내일/모레 (today/tomorrow) are understood — send any other date absolutely. A window matches venues open for at least part of it, and the resolved range is echoed in meta.openAt.window. Based on regular hours, last order, and break times, including past-midnight sessions. Temporary closures and being full are not knowable. Venues with unconfirmed hours are excluded by default and reported via meta.openAt.unknownHoursExcluded. · 示例: 2026-08-26T19:00
  • include_unknown_hoursboolean可选Escape hatch for open_at only. true also returns venues whose hours are unconfirmed (those are 'unknown', not 'open at that time'). · 示例: true
  • reservation_channelstring可选How the venue can be booked (comma = OR): yumi (bookable via POST /api/v1/reservations) · external (third-party booking link) · phone. 'Accepts reservations' is not 'has a table at that time' — actual availability is only known by placing a request. · 示例: yumi
  • fieldsstring可选Pick fields (Field Mask). Comma-separated tier names (core/contact_hours/quality/edge/media), 'all', or individual field names. Defaults to core. Call tokens = the highest field tier requested (per-request; page_size does not affect tokens). Owner-uploaded photos come via photos (media tier, highest cost 8 — venue & menu image URLs); in lists use photoCount (quality) for a cheap count. recommendedFor may include occasion tags such as solo_dining, late_night, and late_night_eatery. · 示例: core,rating,accessHints
  • pageinteger可选Page (default 1) · 示例: 1
  • page_sizeinteger可选Items per page (max 100). Does not affect tokens (per-request billing). Live API keys can access up to a 5,000-result window; beyond that use Bulk Export. · 示例: 20

响应示例

json

{
  "success": true,
  "data": [
    {
      "id": "11892345",
      "name": "콩부자 홍제점",
      "category": "restaurant",
      "categoryLabel": "국밥",
      "location": {
        "lat": 37.5891,
        "lng": 126.9436
      },
      "address": {
        "road": "서울 서대문구 통일로 450",
        "jibun": "서울 서대문구 홍제동 330"
      },
      "regionCode": "1141011100",
      "confidence": 0.64,
      "sourceCount": 2,
      "possiblyClosed": false,
      "lastSeenAt": "2026-06-18T03:00:00.000Z"
    }
  ],
  "meta": {
    "total": 5,
    "page": 1,
    "pageSize": 20,
    "totalPages": 1
  }
}
GET/api/v1/places/nearby

Nearby search

Find places around a coordinate (lat·lng) within a radius (m), nearest first. Each result includes distanceM (meters from center). sort=discovery switches to recommendation ranking within the radius. fields/tokens behave like Search places.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

  • latnumber必填Latitude · 示例: 37.5704
  • lngnumber必填Longitude · 示例: 126.9921
  • radiusinteger可选Radius in meters (default 1000, max 5000) · 示例: 500
  • business_categorystring可选Category filter · 示例: cafe
  • keywordstring可选Partial match on name/address/menu item
  • sortstring可选distance (default, nearest first) or discovery (recommendation ranking within the radius). Use distance for 'closest to me', discovery for 'somewhere good near here'. meta.sort reports the sort actually applied (may degrade to distance on deep pages or wide radii). · 示例: discovery
  • recommended_forstring可选Narrow by occasion (comma, all must match). Natural language resolves too. Values: solo_dining, date, group_dining, family, business_meeting, formal_gathering, late_night… Full list & aliases at /api/v1/meta. · 示例: group_dining
  • atmospherestring可选Atmosphere (comma). quiet, lively, view, cozy, trendy, spacious, traditional, clean, work_study, rainy_mood. · 示例: quiet
  • parkingboolean可选Only places with confirmed parking. See parking_type for the kind. · 示例: true
  • parking_typestring可选Parking type: onsite, valet, partner, nearby, none. Natural language (e.g. 발렛→valet) resolves. · 示例: onsite
  • reservableboolean可选Only reservable places (crawl-confirmed plus Yumi Partner venues). · 示例: true
  • payment_methodsstring可选Require payment methods (comma, all must match). cash, card, naver_pay, kakao_pay, toss_pay, alipay, wechat_pay, unionpay, apple_pay, samsung_pay… apple_pay/samsung_pay/unionpay are owner-confirmed. · 示例: alipay
  • servesstring可选Serves (comma). coffee, alcohol, dessert, vegetarian, vegan. · 示例: alcohol
  • dietarystring可选Dietary (comma). vegan_options, vegetarian_options, fully_vegan, mixed_group_suitable, vegetarian_mixed_group_suitable, gluten_free. Natural words (KR/EN) resolve (vegan/plant-based → vegan_options, mixed → mixed_group_suitable, gf → gluten_free). For a mixed group use mixed_group_suitable (confirmed vegan MEAL, not just a drink). gluten_free is owner-confirmed only; if a region has fewer than 10 confirmed venues the result is withheld and meta.dietaryCoverage reports it. · 示例: vegan_options
  • foreign_languagesstring可选Languages the venue can serve customers in (ISO 639-1, comma, all must match). en, zh, ja, es, de, fr. Owner-confirmed. Natural language (영어→en, 일본어→ja) resolves. e.g. English-speaking venues for foreign guests. · 示例: en
  • subtypestring可选Normalized venue sub-type (comma = OR, 40+). Food: korean, korean_bbq, gukbap_soup, noodles, chinese, japanese, sushi_sashimi, italian, seafood… Cafe: coffee, dessert, bakery, brunch, traditional_tea… Bars: cocktail_bar, wine_bar, izakaya, pocha, hof_beer… Natural language resolves. Prefer subtype over broad business_category for venue-type intent. Full list at /api/v1/meta. · 示例: korean_bbq
  • bbq_meatstring可选Meat type a Korean BBQ venue serves (comma = OR): pork, beef, duck, lamb. Independent of subtype — subtype=korean_bbq picks the venue type, bbq_meat=pork narrows the meat. Mixed venues match both. · 示例: pork
  • viewstring可选View type (comma = OR): ocean, sunset, river, mountain, night, city, garden. A venue with ocean+sunset matches both. Natural language (바다뷰→ocean, 한강뷰→river, 야경→night) resolves. · 示例: ocean
  • pet_friendlyboolean可选Example boolean presence filter. Attach the param to require =true (only confirmed places). Full list (wifi, private_room, outdoor_seating, group_friendly, takeout, delivery, corkage_free, has_promotion, real_bar, rooftop, hanok, photo_spot, local_favorite, nursing_room, live_music, omakase…) plus special filters (muslim_friendly, legacy, local_food, exclude, featured_by, associated_with) at /api/v1/meta. · 示例: true
  • open_atstring可选Only places open at that time — a point or a meal window (KST). Point: 2026-08-26T19:00, '2026-08-26 19:00', '19:00' (today), 'now'. Meal windows: 'lunch' (11:00-14:00), 'dinner' (17:30-21:00), breakfast, brunch, late_night, a custom range '11:00-14:00', or combined with a date '2026-08-29 lunch'. Relative days: only 오늘/내일/모레 (today/tomorrow) are understood — send any other date absolutely. A window matches venues open for at least part of it, and the resolved range is echoed in meta.openAt.window. Based on regular hours, last order, and break times, including past-midnight sessions. Temporary closures and being full are not knowable. Venues with unconfirmed hours are excluded by default and reported via meta.openAt.unknownHoursExcluded. · 示例: 2026-08-26T19:00
  • include_unknown_hoursboolean可选Escape hatch for open_at only. true also returns venues whose hours are unconfirmed (those are 'unknown', not 'open at that time'). · 示例: true
  • reservation_channelstring可选How the venue can be booked (comma = OR): yumi (bookable via POST /api/v1/reservations) · external (third-party booking link) · phone. 'Accepts reservations' is not 'has a table at that time' — actual availability is only known by placing a request. · 示例: yumi
  • fieldsstring可选Pick fields (Field Mask). Comma-separated tier names (core/contact_hours/quality/edge/media), 'all', or individual field names. Defaults to core. Call tokens = the highest field tier requested (per-request; page_size does not affect tokens). Owner-uploaded photos come via photos (media tier, highest cost 8 — venue & menu image URLs); in lists use photoCount (quality) for a cheap count. recommendedFor may include occasion tags such as solo_dining, late_night, and late_night_eatery. · 示例: core,rating,accessHints
  • pageinteger可选Page (default 1) · 示例: 1
  • page_sizeinteger可选Items per page (max 100). Does not affect tokens (per-request billing). Live API keys can access up to a 5,000-result window; beyond that use Bulk Export. · 示例: 20

响应示例

json

{
  "success": true,
  "data": [
    {
      "id": "11892345",
      "name": "콩부자 홍제점",
      "category": "restaurant",
      "categoryLabel": "국밥",
      "location": {
        "lat": 37.5891,
        "lng": 126.9436
      },
      "address": {
        "road": "서울 서대문구 통일로 450",
        "jibun": "서울 서대문구 홍제동 330"
      },
      "regionCode": "1141011100",
      "confidence": 0.64,
      "sourceCount": 2,
      "possiblyClosed": false,
      "lastSeenAt": "2026-06-18T03:00:00.000Z",
      "distanceM": 0
    }
  ],
  "meta": {
    "total": 12,
    "page": 1,
    "pageSize": 20,
    "totalPages": 1,
    "center": {
      "lat": 37.5704,
      "lng": 126.9921
    },
    "radius": 500
  }
}
GET/api/v1/places/{id}

Place detail

A single place. Use fields to fetch only the tiers you need (fields=all returns hours, menu, access hints, recommendation context, and more).

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

  • idstring必填Place id (canonical) · 示例: 11782345
  • fieldsstring可选Pick fields (Field Mask). Comma-separated tier names (core/contact_hours/quality/edge/media), 'all', or individual field names. Defaults to core. Call tokens = the highest field tier requested (per-request; page_size does not affect tokens). Owner-uploaded photos come via photos (media tier, highest cost 8 — venue & menu image URLs); in lists use photoCount (quality) for a cheap count. recommendedFor may include occasion tags such as solo_dining, late_night, and late_night_eatery. · 示例: core,rating,accessHints

响应示例

json

{
  "success": true,
  "data": {
    "id": "11892345",
    "name": "콩부자 홍제점",
    "category": "restaurant",
    "categoryLabel": "국밥",
    "location": {
      "lat": 37.5891,
      "lng": 126.9436
    },
    "address": {
      "road": "서울 서대문구 통일로 450",
      "jibun": "서울 서대문구 홍제동 330"
    },
    "regionCode": "1141011100",
    "confidence": 0.64,
    "sourceCount": 2,
    "possiblyClosed": false,
    "lastSeenAt": "2026-06-18T03:00:00.000Z",
    "rating": null,
    "reviewCount": 10731,
    "latestReviewDate": "2026-06-15",
    "freshnessScore": 0.82,
    "dataQuality": {
      "veracity": 5,
      "completeness": 1,
      "confidence": 0.64,
      "recency": 0.99,
      "last_verified_days_ago": 4
    },
    "price": {
      "level": 2,
      "avg": 8000,
      "min": 4500,
      "max": 12000
    },
    "menuSummary": {
      "count": 12,
      "items": [
        "콩나물국밥",
        "수육",
        "모둠전"
      ]
    },
    "openNow": {
      "open": true,
      "reason": "open",
      "lastOrderPassed": false
    },
    "closureSignal": null,
    "promotion": null,
    "nearestStation": {
      "station": "홍제",
      "walkMin": 5
    },
    "photoCount": 5,
    "photos": {
      "count": 5,
      "main": "https://<supabase>/storage/v1/object/public/owner-photos/<uid>/11892345/1718000000000.jpg",
      "gallery": [
        {
          "category": "interior",
          "url": "https://<supabase>/storage/v1/object/public/owner-photos/<uid>/11892345/1718000000000.jpg",
          "isMain": true
        },
        {
          "category": "exterior",
          "url": "https://<supabase>/storage/v1/object/public/owner-photos/<uid>/11892345/1718000000001.jpg",
          "isMain": false
        }
      ],
      "menu": [
        {
          "menuItem": "콩나물국밥",
          "url": "https://<supabase>/storage/v1/object/public/owner-photos/<uid>/11892345/1718000000002.jpg"
        }
      ],
      "menuBoard": [
        "https://<supabase>/storage/v1/object/public/owner-photos/<uid>/11892345/1718000000003.jpg"
      ]
    },
    "phone": "02-123-4567",
    "homepage": null,
    "bookingUrl": null,
    "yumiReservable": false,
    "reservationChannels": [
      "phone"
    ],
    "snsLinks": null,
    "businessHours": [
      {
        "day": "mon",
        "closed": false,
        "open": "00:00",
        "close": "24:00",
        "endsNextDay": false,
        "breaks": [],
        "lastOrder": null
      }
    ],
    "is24h": true,
    "temporaryClosures": null,
    "accessHints": {
      "subway": [
        {
          "station": "홍제",
          "lines": [
            "3호선"
          ],
          "distanceM": 360,
          "walkMin": 5
        },
        {
          "station": "무악재",
          "lines": [
            "3호선"
          ],
          "distanceM": 920,
          "walkMin": 13
        }
      ]
    },
    "recommendedFor": [
      "solo_dining",
      "late_night",
      "late_night_eatery"
    ],
    "atmosphere": [
      "캐주얼",
      "빠른"
    ],
    "menu": [
      {
        "name": "콩나물국밥",
        "price": 8000,
        "recommend": true,
        "isNew": false,
        "description": "24시간 끓인 진한 국물에 아삭한 콩나물."
      },
      {
        "name": "매생이굴국밥",
        "price": 9500,
        "recommend": false,
        "isNew": true
      }
    ],
    "serviceAttributes": {
      "parking": true,
      "parking_type": "onsite",
      "parking_fee": "paid",
      "parking_note": "매장 주차 가능(유료)",
      "dine_in": true,
      "reservable": true,
      "venue_subtype": "gukbap_soup",
      "foreign_languages": [
        "en"
      ],
      "dietary": {
        "fully_vegan": false,
        "vegan_options": true,
        "vegetarian_options": true,
        "mixed_group_suitable": true,
        "vegan_menu_count": 3,
        "vegan_main_count": 2,
        "non_vegan_menu_count": 8,
        "confidence": 0.62,
        "note": "비건 메뉴와 일반 메뉴가 함께 있어 비건과 비(非)비건이 같이 가기 좋아요. 조리 분리는 확인이 필요해요."
      }
    },
    "atmosphereScores": {
      "late_night": 6,
      "late_night_eatery": 8,
      "quiet": 6.5,
      "lively": 4
    },
    "aiSummary": "홍제역 근처 캐주얼 국밥집, 혼밥·심야식당 수요에 적합.",
    "influencerFeatures": null
  }
}
GET/api/v1/places/{id}/history

Place history

Daily rating and activity-freshness (freshnessScore) trend (accumulated snapshots). A signal you can use to judge changes in a place's activity yourself.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

  • idstring必填Place id (canonical) · 示例: 11782345

响应示例

json

{
  "success": true,
  "data": [
    {
      "date": "2026-06-18",
      "reviewCount": 10731,
      "rating": null,
      "latestReviewDate": "2026-06-15",
      "freshnessScore": 0.82
    }
  ]
}
GET/api/v1/regions

Regions · resolve dong name

Resolves a dong (neighborhood) name into codes & coordinates (location lookup when you have no GPS). Dong names are not unique (e.g. Hongje-dong = Seoul Seodaemun-gu + Gangwon Gangneung), so candidates are returned disambiguated by sido/sigungu, with place counts and a representative center. Feed a chosen center into /places/nearby to also cover adjacent dongs. Without dong, lists all regions that have places.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

  • dongstring可选Dong name (e.g. 홍제동) — returns candidates · 示例: 홍제동
  • sigungustring可选Narrow by sigungu (e.g. 서대문구)
  • sidostring可选Narrow by sido (e.g. 서울특별시)
  • region_codestring可选Look up a single region code
  • include_emptyboolean可选Include regions with no places yet (default false)

响应示例

json

{
  "success": true,
  "data": [
    {
      "regionCode": "1141011100",
      "sido": "서울특별시",
      "sigungu": "서대문구",
      "dong": "홍제동",
      "fullName": "서울특별시 서대문구 홍제동",
      "center": {
        "lat": 37.577976,
        "lng": 126.938483
      },
      "placeCount": 280
    }
  ]
}
GET/api/v1/categories

Categories

Place counts per category in the oneset.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

无参数

响应示例

json

{
  "success": true,
  "data": [
    {
      "category": "restaurant",
      "count": 276878
    }
  ]
}
GET/api/v1/stats

Dataset stats

Total places, regions, multi-source share, average confidence, category breakdown.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

在体验区运行 →

参数

无参数

响应示例

json

{
  "success": true,
  "data": {
    "totalPlaces": 414485,
    "totalRegions": 1563,
    "multiSourcePlaces": 345701,
    "avgConfidence": 0.886,
    "byCategory": [
      {
        "category": "restaurant",
        "count": 276878
      },
      {
        "category": "cafe",
        "count": 106796
      },
      {
        "category": "bar",
        "count": 30636
      }
    ]
  }
}
GET/api/v1/meta

Filter & field vocabulary

Key-free (no billing, 1h cache). Returns the supported attribute filters, values, natural-language aliases, and field tiers. The single source of truth for filter vocabulary, which MCP and SDKs sync from automatically.

无需密钥 · 不计费

在体验区运行 →

参数

无参数

响应示例

json

{
  "version": 1,
  "filters": {
    "boolean": [
      "wifi",
      "parking",
      "outdoor_seating",
      "pet_friendly",
      "group_friendly",
      "kids_friendly",
      "reservable",
      "takeout",
      "delivery",
      "dine_in",
      "catering",
      "corkage_free",
      "wheelchair_accessible",
      "high_chair",
      "no_kids_zone",
      "smoking_area",
      "restroom_gender_separated",
      "power_outlets",
      "stroller_storage",
      "deposit_required",
      "restroom_clean",
      "waiting_expected",
      "leftover_packing",
      "repeat_customers",
      "private_room",
      "has_promotion",
      "real_bar",
      "rooftop",
      "hanok",
      "photo_spot",
      "local_favorite",
      "nursing_room",
      "live_music",
      "fireplace",
      "floor_seating",
      "counter_seating",
      "inside_market",
      "board_game",
      "sports_bar",
      "temple_food",
      "natural_wine",
      "craft_beer",
      "omakase"
    ],
    "enum": {
      "parking_type": [
        "onsite",
        "valet",
        "partner",
        "nearby",
        "none"
      ]
    },
    "subtype": [
      "korean",
      "korean_bbq",
      "gukbap_soup",
      "noodles",
      "chinese",
      "japanese",
      "sushi_sashimi",
      "italian",
      "seafood",
      "coffee",
      "dessert",
      "bakery",
      "brunch",
      "traditional_tea",
      "cocktail_bar",
      "wine_bar",
      "izakaya",
      "pocha",
      "hof_beer"
    ],
    "bbq_meat": [
      "pork",
      "beef",
      "duck",
      "lamb"
    ],
    "view": [
      "ocean",
      "sunset",
      "river",
      "mountain",
      "night",
      "city",
      "garden"
    ],
    "reservationChannel": [
      "yumi",
      "external",
      "phone"
    ],
    "array": {
      "payment_methods": [
        "cash",
        "card",
        "toss_pay",
        "kakao_pay",
        "naver_pay",
        "zero_pay",
        "local_gift",
        "gov_support",
        "alipay",
        "wechat_pay",
        "apple_pay",
        "samsung_pay",
        "unionpay"
      ],
      "serves": [
        "coffee",
        "alcohol",
        "dessert",
        "vegetarian",
        "vegan"
      ],
      "dietary": [
        "vegan_options",
        "vegetarian_options",
        "fully_vegan",
        "mixed_group_suitable",
        "vegetarian_mixed_group_suitable",
        "gluten_free"
      ],
      "foreign_languages": [
        "en",
        "zh",
        "ja",
        "es",
        "de",
        "fr"
      ],
      "recommended_for": [
        "solo_dining",
        "solo_drinking",
        "date",
        "group_dining",
        "group_drinking",
        "family",
        "business_meeting",
        "formal_gathering",
        "late_night",
        "late_night_eatery"
      ],
      "atmosphere": [
        "cozy",
        "quiet",
        "lively",
        "spacious",
        "view",
        "trendy",
        "traditional",
        "clean",
        "work_study",
        "rainy_mood"
      ]
    },
    "aliases": {
      "recommended_for": {
        "회식": "group_dining",
        "혼밥": "solo_dining",
        "상견례": "formal_gathering"
      },
      "atmosphere": {
        "조용한": "quiet",
        "뷰맛집": "view"
      },
      "parking_type": {
        "발렛": "valet"
      },
      "foreign_languages": {
        "영어": "en",
        "일본어": "ja"
      },
      "subtype": {
        "삼겹살": "korean_bbq",
        "국밥": "gukbap_soup",
        "칵테일바": "cocktail_bar"
      },
      "bbq_meat": {
        "삼겹살": "pork",
        "한우": "beef",
        "오리": "duck"
      },
      "view": {
        "바다뷰": "ocean",
        "한강뷰": "river",
        "야경": "night"
      },
      "dietary": {
        "비건": "vegan_options",
        "글루텐프리": "gluten_free"
      }
    }
  },
  "fields": {
    "tiers": {
      "core": 1,
      "contact_hours": 2,
      "quality": 2,
      "edge": 4,
      "media": 8
    },
    "byField": {
      "name": "core",
      "temporaryClosures": "contact_hours",
      "rating": "quality",
      "serviceAttributes": "edge",
      "influencerFeatures": "edge",
      "photos": "media"
    }
  },
  "coverage": {
    "supported": [
      "서울",
      "경기",
      "부산",
      "제주"
    ],
    "note": "현재 서울·경기·부산·제주 4개 시/도만 공식 제공(coverage 확대 중). 그 밖 지역은 결과가 비면 '아직 미지원'으로 안내."
  }
}
POST/api/v1/reservations

Request a reservation

Request a table reservation at a Yumi Partner venue (detail shows yumiReservable=true). No prepayment. On success the owner's app gets an instant push and the response starts as status='pending' (not yet confirmed). The owner accepting → confirmed, declining → cancelled, no response (~5 min) → expired. Poll the status endpoint (GET) for the outcome. The guest is texted progress via KakaoTalk/SMS. Non-partners return 422 reservation_not_available (do not retry — point to the external bookingUrl/phone). Pass idempotencyKey to safely retry the same request without creating duplicates.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

参数

无参数

请求体 (JSON)

  • placeIdstring必填Canonical place id. Get it from a search first. · 示例: 11782345
  • reservationTimestring必填Requested date & time in ISO 8601 with timezone offset (future). Korea is +09:00. · 示例: 2026-09-01T19:00:00+09:00
  • guestCountinteger必填Party size (at least 1). · 示例: 2
  • guestPhonestring必填Guest phone (required) — for status texts (KakaoTalk/SMS) and no-show contact. Missing → guest_phone_required. · 示例: 010-1234-5678
  • guestNamestring可选Guest name (recommended) so the owner knows who's coming. · 示例: 홍길동
  • notestring可选Optional note to the owner (seating, occasion, allergies).
  • idempotencyKeystring可选Stable key to safely retry the same reservation. Auto-generated if omitted.

响应示例

json

{
  "success": true,
  "data": {
    "reservationId": "b1f2c3d4-0000-0000-0000-000000000000",
    "status": "pending",
    "placeId": "11782345",
    "expiresAt": "2026-09-01T10:05:00.000Z"
  }
}
GET/api/v1/reservations/{id}

Reservation status (long-poll)

Check a reservation's current status. status: pending, confirmed, cancelled, expired, no_show. Pass ?wait=<sec> (max 25) to long-poll — it returns the moment the reservation settles (confirmed/cancelled/expired); if still pending, call again to fill the ~5-minute window, then report the final settled outcome.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

参数

  • idstring必填The reservationId returned by the create call. · 示例: b1f2c3d4-0000-0000-0000-000000000000
  • waitinteger可选Long-poll seconds (0-25). Omit for a one-shot check. · 示例: 25

响应示例

json

{
  "success": true,
  "data": {
    "reservationId": "b1f2c3d4-0000-0000-0000-000000000000",
    "placeId": "11782345",
    "status": "confirmed",
    "settled": true,
    "reservationTime": "2026-09-01T19:00:00+09:00",
    "guestCount": 2,
    "approvedAt": "2026-09-01T10:02:11.000Z",
    "createdAt": "2026-09-01T10:00:00.000Z",
    "expiresAt": "2026-09-01T10:05:00.000Z"
  }
}
POST/api/v1/live-status

Live status (ask the venue right now)

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.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

参数

无参数

请求体 (JSON)

  • placeIdstring必填Canonical place id. Get it from a search first. · 示例: 11782345
  • kindstring必填Question kind: item (menu/stock) · wait (queue) · seats (immediate seating, include headcount). · 示例: item
  • topicstring必填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. · 示例: 두바이 쫀득 쿠키
  • questionstring可选The guest's original wording (optional), for owner context. · 示例: 지금 두바이 쫀득 쿠키 있어요?

响应示例

json

{
  "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"
  }
}
GET/api/v1/live-status/{queryId}

Live status result (long-poll)

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=<sec> (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).

需要认证(推荐使用 Bearer / X-API-Key 请求头)

参数

  • queryIdstring必填The queryId returned by the create call. · 示例: c2e4f6a8-0000-0000-0000-000000000000
  • waitinteger可选Long-poll seconds (0-25). Omit for a one-shot check. · 示例: 25

响应示例

json

{
  "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"
  }
}
GET/api/v1/live-status

Fresh live answer (optional)

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.

需要认证(推荐使用 Bearer / X-API-Key 请求头)

参数

  • placeIdstring必填Canonical place id. · 示例: 11782345
  • topicstring必填The subject token (same as POST's topic). · 示例: 두바이 쫀득 쿠키

响应示例

json

{
  "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
  }
}

Hide Me Please, Inc.

© 2026 Hide Me Please, Inc. All rights reserved.

营业执照编号 777-86-02664

代表 Yuhyun

电子商务许可证 2023-Seoul Jung-gu-0094

2F, 33 Eulji-ro 11-gil, Jung-gu, Seoul 04543

客户服务 +82 70-7954-1357

邮箱 ixplorer@hidemeplease.xyz

个人信息保护负责人 Yuhyun

托管服务 Vercel Inc.