Skip to main content

Vendor API 3.0 - Issuing authority (required) and license status added to license submission

To comply with a new provision of the Korean Public Health Control Act, the license document fields have been extended. This change is already live in production: data.issuer is required when submitting a license document (permit). Requests without it are rejected with 400.

Changes​

1. Submit License request (type: permit)​

FieldRequiredDescription
data.issuerRequiredIssuing authority of the document, exactly as it appears on the document (max 100 characters). Example: Mayor of Gangnam-gu, Seoul
data.statusOptionalLicense status code. 01 active, 02 suspended, 03 closed, 04 canceled/revoked/expired/halted, 05 excluded/deleted/transferred, 06 other

The business registration certificate (type: business) submission is unchanged.

{
"type": "permit",
"data": {
"type": "rural_homestay",
"number": "제2026-00123호",
"date": "2026-03-02",
"issuer": "Mayor of Gangnam-gu, Seoul",
"status": "01",
"file": "JVBERi0xLjQKJeLjz9MK..."
}
}

2. Get License Submission response​

issuer and status are added to data for permit requests. status is null if it was not sent.

See also​

Vendor API 3.0 - Channel Opening Checks Clarified

We clarified which basic checks apply to a channel opening request for each channel type. Legacy channels skip the property image and category checks and all room checks. A request is still automatically rejected if any applicable check fails, and auto-approval and review handling are unchanged.

Key Changes​

1. Checks on Legacy Channels​

The checks applied to legacy channels (Booking.com, Agoda, Expedia, Trip.com, Airbnb) are as follows.

ScopeCheckPlus channelsLegacy channels
PropertyDuplicate request · Sales status · Deleted · Property name · AddressAppliedApplied
PropertyImages (at least 3) · Category (at least 1)AppliedNot applied
RoomSellable rooms · Room name · Room images · Bookable datesAppliedNot applied

The previous guide said only the property image, category, and room image checks were skipped, which made it look like the other room checks still applied to legacy channels. In fact, all room checks are skipped.

We also removed the wording that described legacy channels as requires_cms_authorization=false channels. Airbnb is a legacy channel, but its value is true.

2. Plus Channel Check Descriptions​

Behavior is unchanged; the descriptions are now more precise.

CheckBeforeAfter
Duplicate request (formerly "Already open")Prevents opening the same channel twiceRejected if an open request is sent for a channel that is already ON, or a stop-sale request for one that is already OFF
Bookable datesAt least one bookable date within the next 30 daysAt least one date within D+0 to D+30 that meets all of rate, availability, and business day

3. Guide Updates​

Contact​

If you have any questions about API integration, please feel free to contact us:

Vendor API 3.0 - License Submission API

You can now submit a property's license document and business registration certificate through the API and check ONDA's review result. Plus channels can be opened only for properties whose license document and business registration are both approved (confirm), so submit both before requesting a Plus channel opening.

Key Changes​

1. Three New APIs​

The path prefix is /gds/vendor/properties.

APIMethodPath
Submit LicensePOST.../{vendor_property_id}/licenses
List License SubmissionsGET.../{vendor_property_id}/licenses
Get License SubmissionGET.../{vendor_property_id}/licenses/{request_id}

2. Documents​

Send one request per document, and set the document type with type.

typeDocument
permitLicense document (business report certificate, tourism business registration, rural homestay registration, etc.)
businessBusiness registration certificate
  • Put the file in data.file as a base64 string. jpeg, png, gif, webp, and pdf are supported, each file can be up to 10MB, and images must be at least 450x200 pixels.
  • For a corporate business (corporation), the business name, address, industry, and business category are also required.

3. Review Flow​

A submission is accepted as pending and becomes confirm (approved) or reject (rejected) after ONDA reviews it. The rejection reason is in reason in the lookup APIs. Resubmitting the same document while it is under review automatically rejects the earlier request, and the new one is reviewed instead.

Only one document per type is active. Even after several submissions of the same type, only the most recently approved one is the current document, and the previously approved document stays current until a new one is approved.

4. Guide Updates​

  • Initial Setup: License submission is added as the step after creating the property. The guide is now split into four pages: overview, content creation, license submission, and rates and availability push.
  • License Submission: A new guide covering required fields, file rules, review status, and license type codes for each document.
  • Plus Channel Opening: Adds the prerequisite that both the license document and the business registration must be approved.

5. Initial Setup Sections Moved​

Sections of the former Initial Setup page have moved to the pages below. Their content is unchanged; if you bookmarked a section link, update it to the new location.

SectionNew location
Step by step, ChecklistInitial Setup overview (same URL)
Using the code catalog (meta), Sending content in languages other than Korean, Rate plan model and rate plan structure, Property default extra adult charge, Content endpointsContent Creation
Pushing rates and business days (ARI) and availability (Avails)Rates & Availability Push

Contact​

If you have any questions about API integration, please feel free to contact us:

Server Address Notation Change in API Reference

The development server addresses written in the API docs have been replaced with placeholders. The actual server addresses and API behavior have not changed, so no changes are needed in systems already integrated.

Key Changes​

1. Server Addresses Shown as Placeholders​

Endpoints and cURL examples in the API reference now show the placeholders below instead of actual addresses. Path prefixes (/gds/diglett, /gds/vendor) are unchanged.

APINotation
Channel API{base_url}/gds/diglett
Vendor API 3.0{base_url}
Vendor API 1.5 (Property Management Push · Other){base_url}/gds/vendor
Vendor API 1.5 (Property Creation · Property Management Sync · Reservation){vendor_base_url}
  • {base_url}: the base URL of the ONDA server. Your ONDA contact provides the address for each environment (development/production).
  • {vendor_base_url}: the server address of APIs that the vendor implements and ONDA calls, specified by the vendor. This matches the notation used for Vendor API 3.0 webhooks.

When copying a cURL example, replace the placeholder with the address you were given.

2. Environment URL Guidance​

In the environment tables of the introduction and the FAQ, the development environment address now reads "Provided by your ONDA contact when integration starts". Production guidance is unchanged.

Contact​

If you have any questions about API integration, please feel free to contact us:

API Code Examples Unified to cURL and Authentication Guide Corrected

We have aligned the code examples and the authentication and environment guides in the API reference with how integration actually works.

Key Changes​

1. Authentication Guide Corrected (Channel API partners, please check)​

The Channel API authentication guide in the FAQ did not match the actual spec.

  • Before (incorrect): send keys in two headers, x-api-key and x-channel-key
  • After (actual spec): send your issued per-channel key in a single Authorization header
Authorization: {your_issued_key}

The Vendor API (vendor → ONDA calls) works the same way. There is no separate token issuance step (such as OAuth). The "OAuth 2.0" mention on the introduction page has also been removed.

2. Code Examples Unified to cURL​

Every reference page for the Channel API, Vendor API 1.5, and Vendor API 3.0 now shows a single cURL example.

  • Examples include the Authorization header
  • Long URLs and request bodies wrap by default, so you can read them without horizontal scrolling
  • The Send button, which sent requests to the server directly from the docs page, has been removed. Copy the cURL example and run it from your terminal or API client

3. Environment URLs Organized per API​

How environment URLs are provided is now described per API in the introduction and the FAQ. Previously only the Channel API was covered.

APIDevelopmentProduction
Channel APIProvided by your ONDA contact when integration startsProvided by your ONDA contact after testing in the development environment
Vendor API (3.0 / 1.5)Provided by your ONDA contact when integration startsProvided by your ONDA contact after the contract is signed

4. Guide Cleanup​

  • The "ONDA Hub Introduction" page has been merged into the introduction page. The old URL redirects automatically
  • The Glossary page has been added to the guide menu
  • The API menus on the English site are now shown in English
  • The site theme now follows your system setting (dark/light)

Contact​

If you have any questions about API integration, please feel free to contact us:

Vendor API 3.0 - Booking Retrieval Response Expanded and Booking Delivery Documentation Corrected

Previously, some values sent through booking delivery (POST /bookings) could not be read back through booking retrieval. With this change, every item in the delivery payload also appears in the retrieval response. In addition, three field types that were documented incorrectly for booking delivery have been corrected to match the actual behaviour.

Key Changes​

1. Twelve Fields Added to the Booking Retrieval Response​

GET /gds/vendor/booking/{vendor_booking_number}

FieldTypeRequiredDescription
channel_idnumberRequiredSales channel ID (e.g. 132)
channel_namestringRequiredSales channel name
channel_booking_numberstringOptionalSales channel booking number
gds_booking_numberstringRequiredONDA Hub booking number
gds_sub_booking_numberstringRequiredONDA Hub sub-booking number (one per room within a booking)
rateplan_idstringOptionalVendor rate plan ID. Omitted for bookings with no mapping
total_amountnumberRequiredChannel-side selling price. With postpayment, the amount collected on site
net_pricenumberRequiredDeposit amount (payable to the vendor)
payment_typeprepayment | postpaymentRequiredPayment type (prepaid / pay on arrival)
special_commentstringOptionalGuest requests
visit_typewalk | carOptionalArrival method. Present only when the channel supplies it
secondary_channelstringOptionalSecondary sales channel. Present only when the channel supplies it

When an optional field has no value, the key is omitted entirely rather than set to null. Check for the presence of the key when parsing the response.

Now that the response carries three amount fields, here is what each one means:

FieldBasis
amountVendor-side amount — the per-night amounts plus any extra charges
total_amountChannel-side selling price
net_priceDeposit amount (payable to the vendor)

2. Change to the type Field in the Booking Retrieval Response​

When no value is present
Before"type": null
AfterThe key is omitted

This aligns the response with the booking delivery payload. No booking in production data lacks this value, so responses do not actually change — but if your parsing logic compares against null, please verify it.

3. Booking Delivery Documentation Corrected​

The values being sent have not changed. The documentation did not match the actual behaviour and has been corrected. If you implemented against the documentation, please verify your code.

POST /bookings

FieldDocumentation (before)Actual = documentation (now)
channel_idstring, example 'NAVER'number, example 132
total_amountstring, example '100000'number, example 100000
channel_booking_numberRequiredOptional
  • channel_id and total_amount have always been sent as numbers. Only the documented examples were wrong.
  • channel_booking_number is now optional because the key can be absent when the sales channel does not supply its own booking number.

The total_amount in PUT /bookings/{vendor_booking_number}/modify carried the same documentation error and has also been corrected to number.

Contact​

If you have any questions about API integration, please feel free to contact us:

Vendor API 3.0 Documentation Released

Documentation for Vendor API 3.0, intended for new integrations, is now available. The existing Vendor API 1.5 remains supported, and you can choose either version from the Vendor API menu at the top.

What Changed from 1.5​

Content Delivery Direction Reversed​

Previously, ONDA called the vendor API with GET to fetch content. In 3.0, vendors send content directly to ONDA.

  • Create: POST /gds/vendor/properties
  • Update: PATCH /gds/vendor/properties/{vendor_property_id}

Retrieval (GET) is kept as a fallback option.

Rate Plan Models Introduced​

A rate plan is defined as a combination of room type × rate plan model. Rate plan models are created per property. Each property must have exactly one standalone model, and there is no limit on package models.

Rate and Availability Delivery Separated​

  • Rates and business days → POST .../ari (per rate plan)
  • Availability → POST .../ari/avails (combined availability per room type)

Both calls carry values common to all channels and per-channel values (channels[]) in a single request.

Channel APIs Added​

Channel discovery, opening requests, per-channel settings, and property/room/rate plan mapping are now handled through the API.

Documentation Structure​

SectionContents
Integration guides12 chapters, from setup to channel opening, booking operations, and cancellation/refund policy
API reference38 HUB APIs + 5 vendor APIs = 43 endpoints

In the HUB API (vendor → ONDA), the vendor is the client. In the vendor API (ONDA → vendor), the vendor is the server. Booking create, confirm, modify, and cancel, as well as cancellation/refund policy lookup, are endpoints the vendor must implement.

AI Development Support​

You can download Vendor API 3.0 context files (Claude Code · Cursor · Windsurf) from the AI Tools page.

Notes​

  • The development (alpha) base URL is provided by your ONDA contact when integration starts
  • The production URL and access token are provided by your ONDA contact after the integration contract is signed

Vendor Server URL Change and API Docs UI/UX Improvements

This update changes the Vendor API development (alpha) server URL and adds an important error handling guide to the Channel Create Reservation API. Readability and visual consistency across the API reference pages have also been improved.

Key Changes​

1. Vendor API Development (alpha) Server URL Change​

The server URL for the Vendor API development (alpha) environment only has changed to a dedicated Vendor API address, separate from the Channel API. Your ONDA contact will provide the new address.

Scope: all 5 Vendor API specs (Property Creation / Property Management (Sync) / Property Management (Push) / Reservation / Other API)

2. Channel Create Reservation: 400 Error Handling Guide Added​

The top of the Channel Create Reservation API page now explains how to handle the 400 channel booking number is exist already error.

This error is returned when a reservation request with the same channel_booking_number is received more than once. Do not treat it as an immediate failure (for example, by cancelling the payment). Instead, re-check the actual reservation status as follows.

  1. Call the Check Reservation API with the received channel_booking_number (use the type=channel_booking_number query parameter)
  2. If the response contains the reservation, treat it as a successful reservation and sync your internal status
  3. If there is no reservation, it is a real failure. Proceed with your usual failure handling, such as cancelling the payment

3. API Reference Page UI/UX Improvements​

The API docs have been aligned with the ONDA design system.

  • Content-type badge: an application/json badge appears to the right of the Request / Responses headings
  • Response code tab position: aligned on the same row as the description to save vertical space
  • Collapsible nested schemas: improved spacing and animation for collapsed object and array fields
  • Schema display cleanup: REQUIRED badge placement, hiding empty examples, and preserving enum values in descriptions

Contact​

If you have any questions about API integration, please feel free to contact us:

Vendor API Error Codes Guide Added

An Error Codes page has been added to the Vendor API development guide.

When a vendor receives an API request from ONDA (ONDA Hub) and fails to process it, the vendor must respond using the standard error format defined on this page.

Key Contents​

Error Response Format​

{
"code": "4000",
"error": "No rooms available for booking"
}

Both code and error are required, and error must use the defined English message exactly as written.

Error Code List​

Twelve error codes are defined, grouped by category.

CategoryCode Range
SYSTEM_ERROR1000
AUTH_ERROR2000
VALIDATION_ERROR3000
BUSINESS_ERROR4000 – 4007
UNKNOWN_ERROR9999

BUSINESS_ERROR codes are documented together with their related endpoints (Create Reservation, Check Reservation, Cancel Reservation, Confirm Reservation), so it is clear which code to return in each situation.

For details, see the Error Codes guide.

Contact​

If you have any questions about API integration, please feel free to contact us:

AI Development Support Page Added

An "AI Tools" menu has been added to the top navigation bar. By injecting the full ONDA API documentation as context into AI development tools like Claude Code, Cursor, and Windsurf, you can receive more accurate code suggestions and API understanding.

Key Changes​

Dedicated AI Tools Page (/ai-tools)​

A dedicated page has been added where Vendor API and Channel API developers can select and download only the context files relevant to their integration scope.

Available Files​

FilePurposeFor
ONDA-VENDOR-CLAUDE.mdClaude Code contextVendor API developers
ONDA-VENDOR.mdcCursor contextVendor API developers
ONDA-VENDOR.windsurfrulesWindsurf contextVendor API developers
ONDA-CHANNEL-CLAUDE.mdClaude Code contextChannel API developers
ONDA-CHANNEL.mdcCursor contextChannel API developers
ONDA-CHANNEL.windsurfrulesWindsurf contextChannel API developers

Each file includes the common guides (Introduction, Getting Started, FAQ) along with the full set of API-specific documentation.

How to Use​

Claude Code

# Save the downloaded file to your project root
mv ~/Downloads/ONDA-VENDOR-CLAUDE.md ./CLAUDE.md
# Claude Code will automatically load the ONDA Vendor API context

Cursor

# Create the .cursor/rules/ directory and move the file
mkdir -p .cursor/rules
mv ~/Downloads/onda-vendor.mdc .cursor/rules/
# Cursor AI will automatically load the ONDA Vendor API context

Windsurf

# Save the downloaded file to your project root
mv ~/Downloads/ONDA-VENDOR.windsurfrules ./.windsurfrules
# Windsurf AI will automatically recognize the ONDA Vendor API context

Contact​

If you have any questions about API integration, please feel free to contact us: