Connexion

Référence de l'API

Endpoints publics v1. Majoritairement en lecture seule (GET) ; les demandes de réservation et les questions de statut en temps réel sont en écriture (POST). Tous les endpoints sauf /meta nécessitent une clé 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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

  • keywordstringfacultatifPartial match on name/address/menu item · exemple: 버거킹
  • region_codestringfacultatifRegion (admin-dong) code
  • business_categorystringfacultatifCategory (restaurant/cafe…) · exemple: restaurant
  • min_confidencenumberfacultatifMinimum confidence (0-1) · exemple: 0.6
  • sortstringfacultatifdiscovery (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. · exemple: discovery
  • recommended_forstringfacultatifNarrow 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. · exemple: group_dining
  • atmospherestringfacultatifAtmosphere (comma). quiet, lively, view, cozy, trendy, spacious, traditional, clean, work_study, rainy_mood. · exemple: quiet
  • parkingbooleanfacultatifOnly places with confirmed parking. See parking_type for the kind. · exemple: true
  • parking_typestringfacultatifParking type: onsite, valet, partner, nearby, none. Natural language (e.g. 발렛→valet) resolves. · exemple: onsite
  • reservablebooleanfacultatifOnly reservable places (crawl-confirmed plus Yumi Partner venues). · exemple: true
  • payment_methodsstringfacultatifRequire 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. · exemple: alipay
  • servesstringfacultatifServes (comma). coffee, alcohol, dessert, vegetarian, vegan. · exemple: alcohol
  • dietarystringfacultatifDietary (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. · exemple: vegan_options
  • foreign_languagesstringfacultatifLanguages 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. · exemple: en
  • subtypestringfacultatifNormalized 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. · exemple: korean_bbq
  • bbq_meatstringfacultatifMeat 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. · exemple: pork
  • viewstringfacultatifView type (comma = OR): ocean, sunset, river, mountain, night, city, garden. A venue with ocean+sunset matches both. Natural language (바다뷰→ocean, 한강뷰→river, 야경→night) resolves. · exemple: ocean
  • pet_friendlybooleanfacultatifExample 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. · exemple: true
  • open_atstringfacultatifOnly 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. · exemple: 2026-08-26T19:00
  • include_unknown_hoursbooleanfacultatifEscape hatch for open_at only. true also returns venues whose hours are unconfirmed (those are 'unknown', not 'open at that time'). · exemple: true
  • reservation_channelstringfacultatifHow 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. · exemple: yumi
  • fieldsstringfacultatifPick 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. · exemple: core,rating,accessHints
  • pageintegerfacultatifPage (default 1) · exemple: 1
  • page_sizeintegerfacultatifItems 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. · exemple: 20

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

  • latnumberobligatoireLatitude · exemple: 37.5704
  • lngnumberobligatoireLongitude · exemple: 126.9921
  • radiusintegerfacultatifRadius in meters (default 1000, max 5000) · exemple: 500
  • business_categorystringfacultatifCategory filter · exemple: cafe
  • keywordstringfacultatifPartial match on name/address/menu item
  • sortstringfacultatifdistance (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). · exemple: discovery
  • recommended_forstringfacultatifNarrow 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. · exemple: group_dining
  • atmospherestringfacultatifAtmosphere (comma). quiet, lively, view, cozy, trendy, spacious, traditional, clean, work_study, rainy_mood. · exemple: quiet
  • parkingbooleanfacultatifOnly places with confirmed parking. See parking_type for the kind. · exemple: true
  • parking_typestringfacultatifParking type: onsite, valet, partner, nearby, none. Natural language (e.g. 발렛→valet) resolves. · exemple: onsite
  • reservablebooleanfacultatifOnly reservable places (crawl-confirmed plus Yumi Partner venues). · exemple: true
  • payment_methodsstringfacultatifRequire 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. · exemple: alipay
  • servesstringfacultatifServes (comma). coffee, alcohol, dessert, vegetarian, vegan. · exemple: alcohol
  • dietarystringfacultatifDietary (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. · exemple: vegan_options
  • foreign_languagesstringfacultatifLanguages 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. · exemple: en
  • subtypestringfacultatifNormalized 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. · exemple: korean_bbq
  • bbq_meatstringfacultatifMeat 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. · exemple: pork
  • viewstringfacultatifView type (comma = OR): ocean, sunset, river, mountain, night, city, garden. A venue with ocean+sunset matches both. Natural language (바다뷰→ocean, 한강뷰→river, 야경→night) resolves. · exemple: ocean
  • pet_friendlybooleanfacultatifExample 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. · exemple: true
  • open_atstringfacultatifOnly 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. · exemple: 2026-08-26T19:00
  • include_unknown_hoursbooleanfacultatifEscape hatch for open_at only. true also returns venues whose hours are unconfirmed (those are 'unknown', not 'open at that time'). · exemple: true
  • reservation_channelstringfacultatifHow 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. · exemple: yumi
  • fieldsstringfacultatifPick 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. · exemple: core,rating,accessHints
  • pageintegerfacultatifPage (default 1) · exemple: 1
  • page_sizeintegerfacultatifItems 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. · exemple: 20

Exemple de réponse

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).

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

  • idstringobligatoirePlace id (canonical) · exemple: 11782345
  • fieldsstringfacultatifPick 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. · exemple: core,rating,accessHints

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

  • idstringobligatoirePlace id (canonical) · exemple: 11782345

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

  • dongstringfacultatifDong name (e.g. 홍제동) — returns candidates · exemple: 홍제동
  • sigungustringfacultatifNarrow by sigungu (e.g. 서대문구)
  • sidostringfacultatifNarrow by sido (e.g. 서울특별시)
  • region_codestringfacultatifLook up a single region code
  • include_emptybooleanfacultatifInclude regions with no places yet (default false)

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

Aucun paramètre

Exemple de réponse

json

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

Dataset stats

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

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Exécuter dans le playground →

Paramètres

Aucun paramètre

Exemple de réponse

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.

Sans clé · sans facturation

Exécuter dans le playground →

Paramètres

Aucun paramètre

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Paramètres

Aucun paramètre

Corps de la requête (JSON)

  • placeIdstringobligatoireCanonical place id. Get it from a search first. · exemple: 11782345
  • reservationTimestringobligatoireRequested date & time in ISO 8601 with timezone offset (future). Korea is +09:00. · exemple: 2026-09-01T19:00:00+09:00
  • guestCountintegerobligatoireParty size (at least 1). · exemple: 2
  • guestPhonestringobligatoireGuest phone (required) — for status texts (KakaoTalk/SMS) and no-show contact. Missing → guest_phone_required. · exemple: 010-1234-5678
  • guestNamestringfacultatifGuest name (recommended) so the owner knows who's coming. · exemple: 홍길동
  • notestringfacultatifOptional note to the owner (seating, occasion, allergies).
  • idempotencyKeystringfacultatifStable key to safely retry the same reservation. Auto-generated if omitted.

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Paramètres

  • idstringobligatoireThe reservationId returned by the create call. · exemple: b1f2c3d4-0000-0000-0000-000000000000
  • waitintegerfacultatifLong-poll seconds (0-25). Omit for a one-shot check. · exemple: 25

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Paramètres

Aucun paramètre

Corps de la requête (JSON)

  • placeIdstringobligatoireCanonical place id. Get it from a search first. · exemple: 11782345
  • kindstringobligatoireQuestion kind: item (menu/stock) · wait (queue) · seats (immediate seating, include headcount). · exemple: item
  • topicstringobligatoireThe subject as a bare token, not a sentence. e.g. '두바이 쫀득 쿠키', 'yellowtail', 'wait', 'party of 10'. For item, use the venue's actual menu name. · exemple: 두바이 쫀득 쿠키
  • questionstringfacultatifThe guest's original wording (optional), for owner context. · exemple: 지금 두바이 쫀득 쿠키 있어요?

Exemple de réponse

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).

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Paramètres

  • queryIdstringobligatoireThe queryId returned by the create call. · exemple: c2e4f6a8-0000-0000-0000-000000000000
  • waitintegerfacultatifLong-poll seconds (0-25). Omit for a one-shot check. · exemple: 25

Exemple de réponse

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.

Authentification requise (en-tête Bearer / X-API-Key recommandé)

Paramètres

  • placeIdstringobligatoireCanonical place id. · exemple: 11782345
  • topicstringobligatoireThe subject token (same as POST's topic). · exemple: 두바이 쫀득 쿠키

Exemple de réponse

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.

Numéro d'enregistrement 777-86-02664

Représentant Yuhyun

Licence e-commerce 2023-Seoul Jung-gu-0094

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

Service client +82 70-7954-1357

E-mail ixplorer@hidemeplease.xyz

Responsable de la protection des données Yuhyun

Hébergeur Vercel Inc.