1. Project API
YGO Client API
v2
  • v2
  • v1
  • Project API
    • Overview
    • Core Concepts
    • Authentication
    • Error Handling & Limits
    • Content Enrichment API
      • Text Generation
        • Generate text
        • Get text generation status
        • Preview text
      • Enrichment
        • Get enriched hotel
        • List enriched hotels
        • List enriched hotel summaries
      • Templates
        • Save text template
        • List text templates
      • Tags
        • Save tag
        • List tags
        • Delete tag
        • Add tag to hotels (bulk)
        • Remove tag from hotels (bulk)
      • Settings
        • Get content settings
        • List the selectable image-provider catalog
    • Schemas
      • GetEnrichedHotelRequest
      • GenerateTextRequest
      • GetTextGenerationStatusRequest
      • PreviewTextRequest
      • GetEnrichedHotelsByTagRequest
      • ListEnrichedHotelsRequest
      • GetContentSettingsRequest
      • ListTextTemplatesRequest
      • SaveTextTemplateRequest
      • generateText_GenerateTextRequest
      • GetEnrichedHotelResponse
      • GenerateTextResponse
      • GetTextGenerationStatusResponse
      • PreviewTextResponse
      • GetEnrichedHotelsByTagResponse
      • ListEnrichedHotelsResponse
      • GetContentSettingsResponse
      • ListTextTemplatesResponse
      • SaveTextTemplateResponse
      • generateText_GenerateTextResponse
      • TextGenerationRun
      • TextGenerationStatus
      • PreviewResult
      • EnrichedHotelsByTag
      • Pagination
      • ContentSettings
      • TextTemplate
      • generateText_TextGenerationRun
      • ErrorResponse
      • RunProgress
      • PreviewHotel
      • TagSummary
      • EnrichedHotelListItem
      • generateText_RunProgress
      • EnrichedHotel
      • ErrorDetail
      • PreviewCell
      • TemplateUsageStats
      • generateText_ErrorResponse
      • Location
      • FieldError
      • PreviewChange
      • generateText_ErrorDetail
      • Address
      • generateText_FieldError
      • FactualAttribute
      • getTextGenerationStatus_GetTextGenerationStatusRequest
      • FactualInstance
      • getTextGenerationStatus_GetTextGenerationStatusResponse
      • POI
      • getTextGenerationStatus_TextGenerationStatus
      • CheckIn
      • getTextGenerationStatus_RunProgress
      • CheckOut
      • getTextGenerationStatus_ErrorResponse
      • GeneratedTexts
      • getTextGenerationStatus_ErrorDetail
      • GeneratedTextDetail
      • getTextGenerationStatus_FieldError
      • Image
      • previewText_PreviewTextRequest
      • EnrichedRoom
      • previewText_PreviewTextResponse
      • Bedding
      • previewText_PreviewResult
      • previewText_PreviewHotel
      • previewText_PreviewText
      • previewText_PreviewChange
      • previewText_ErrorResponse
      • previewText_ErrorDetail
      • previewText_FieldError
      • getEnrichedHotel_GetEnrichedHotelRequest
      • getEnrichedHotel_GetEnrichedHotelResponse
      • getEnrichedHotel_EnrichedHotel
      • getEnrichedHotel_ProjectTagSummary
      • getEnrichedHotel_Location
      • getEnrichedHotel_Address
      • getEnrichedHotel_FactualAttribute
      • getEnrichedHotel_FactualInstance
      • getEnrichedHotel_POI
      • getEnrichedHotel_CheckIn
      • getEnrichedHotel_CheckOut
      • getEnrichedHotel_GeneratedTexts
      • getEnrichedHotel_GeneratedTextDetail
      • getEnrichedHotel_Image
      • getEnrichedHotel_EnrichedRoom
      • getEnrichedHotel_Bedding
      • getEnrichedHotel_ErrorResponse
      • getEnrichedHotel_ErrorDetail
      • getEnrichedHotel_FieldError
      • listEnrichedHotelSummaries_ListEnrichedHotelSummariesRequest
      • listEnrichedHotelSummaries_ListEnrichedHotelSummariesResponse
      • listEnrichedHotels_EnrichedHotelListItem
      • listEnrichedHotelSummaries_Pagination
      • listEnrichedHotelSummaries_EnrichedHotelSummary
      • listEnrichedHotelSummaries_ErrorResponse
      • listEnrichedHotelSummaries_ErrorDetail
      • listEnrichedHotelSummaries_FieldError
      • listEnrichedHotels_ListEnrichedHotelsRequest
      • listEnrichedHotels_ListEnrichedHotelsResponse
      • listEnrichedHotels_Pagination
      • listEnrichedHotels_EnrichedHotel
      • listEnrichedHotels_ProjectTagSummary
      • listEnrichedHotels_Location
      • listEnrichedHotels_Address
      • listEnrichedHotels_FactualAttribute
      • listEnrichedHotels_FactualInstance
      • listEnrichedHotels_POI
      • listEnrichedHotels_CheckIn
      • listEnrichedHotels_CheckOut
      • listEnrichedHotels_GeneratedTexts
      • listEnrichedHotels_GeneratedTextDetail
      • listEnrichedHotels_Image
      • listEnrichedHotels_EnrichedRoom
      • listEnrichedHotels_Bedding
      • listEnrichedHotels_ErrorResponse
      • listEnrichedHotels_ErrorDetail
      • listEnrichedHotels_FieldError
      • getContentSettings_GetContentSettingsRequest
      • getContentSettings_GetContentSettingsResponse
      • getContentSettings_ContentSettings
      • getContentSettings_ErrorResponse
      • getContentSettings_ErrorDetail
      • getContentSettings_FieldError
      • listImageProvidersProject_ListImageProvidersRequest
      • listImageProvidersProject_ListImageProvidersResponse
      • listImageProvidersProject_ImageProviderCatalog
      • listImageProvidersProject_ImageProviderCatalogEntry
      • listImageProvidersProject_ErrorResponse
      • listImageProvidersProject_ErrorDetail
      • listImageProvidersProject_FieldError
      • addTagToHotels_AddTagToHotelsRequest
      • addTagToHotels_AddTagToHotelsResponse
      • addTagToHotels_BulkTagResult
      • addTagToHotels_BulkTagHotelResult
      • addTagToHotels_ErrorResponse
      • addTagToHotels_ErrorDetail
      • addTagToHotels_FieldError
      • deleteTag_DeleteTagRequest
      • deleteTag_DeleteTagResponse
      • deleteTag_DeletedProjectTag
      • deleteTag_ErrorResponse
      • deleteTag_ErrorDetail
      • deleteTag_FieldError
      • listTags_ListTagsRequest
      • listTags_ListTagsResponse
      • listTags_ProjectTag
      • listTags_ErrorResponse
      • listTags_ErrorDetail
      • listTags_FieldError
      • removeTagFromHotels_RemoveTagFromHotelsRequest
      • removeTagFromHotels_RemoveTagFromHotelsResponse
      • removeTagFromHotels_BulkTagResult
      • removeTagFromHotels_BulkTagHotelResult
      • removeTagFromHotels_ErrorResponse
      • removeTagFromHotels_ErrorDetail
      • removeTagFromHotels_FieldError
      • saveTag_SaveTagRequest
      • saveTag_SaveTagResponse
      • saveTag_ProjectTag
      • saveTag_ErrorResponse
      • saveTag_ErrorDetail
      • saveTag_FieldError
      • listTextTemplates_ListTextTemplatesRequest
      • listTextTemplates_ListTextTemplatesResponse
      • listTextTemplates_Pagination
      • listTextTemplates_TextTemplate
      • listTextTemplates_TemplateUsageStats
      • listTextTemplates_ErrorResponse
      • listTextTemplates_ErrorDetail
      • listTextTemplates_FieldError
      • saveTextTemplate_SaveTextTemplateRequest
      • saveTextTemplate_SaveTextTemplateResponse
      • saveTextTemplate_TextTemplate
      • saveTextTemplate_ErrorResponse
      • saveTextTemplate_ErrorDetail
      • saveTextTemplate_FieldError
  1. Project API

Error Handling & Limits

When a request cannot be completed, the v2 API returns a structured error instead of the usual Data payload. Errors are consistent across every endpoint, so you can handle them with a single code path. This page covers the error envelope, the status codes you may encounter, rate limiting, usage quotas, and the trace identifier that helps support investigate issues.

The Error Envelope#

Error responses replace the Data field with an Error object containing a machine-readable Code and a human-readable Message.
{
  "Error": {
    "Code": "VALIDATION_ERROR",
    "Message": "Request validation failed"
  }
}
Branch on the HTTP status code and the Code field in your integration; show or log the Message for diagnostics.

Status Codes#

StatusMeaningTypical cause
400Bad RequestThe request body is malformed or fails validation.
401UnauthorizedThe API key is missing, malformed, or invalid.
403ForbiddenThe key is valid but not allowed to act on the requested project.
404Not FoundThe requested resource does not exist.
409ConflictThe request conflicts with the current state, for example a duplicate save.
429Too Many RequestsThe rate limit has been exceeded.
500Internal Server ErrorAn unexpected error occurred on our side.
INFO
Retry only what is safe to retry
A 429 and a 500 are transient and worth retrying after a short delay. A 400, 401, 403, 404, or 409 reflects something about the request itself, so retrying without changing it will fail again.

Rate Limiting#

Every endpoint is rate-limited. When you exceed the limit, the API responds with 429 Too Many Requests and includes a Retry-After header telling you how many seconds to wait before sending another request.
{
  "Error": {
    "Code": "RATE_LIMIT_EXCEEDED",
    "Message": "Rate limit exceeded. Retry after the number of seconds in the Retry-After header."
  }
}
TIP
Back off, then retry
When you receive a 429, pause for the number of seconds in the Retry-After header before retrying. Honoring this header keeps your integration well-behaved and avoids compounding the limit.

Usage Quotas#

In addition to rate limiting, the API may be subject to plan-level usage quotas. If you expect your volume to grow, talk to your account manager so your plan is provisioned accordingly.

Tracing a Request#

Every response carries an X-Trace-ID header that uniquely identifies the request on our side.
INFO
Quote the trace id when you contact support
When you report a problem to integrations@ygo.ai, include the X-Trace-ID value from the affected response. It lets our team locate the exact request and resolve the issue faster.

Next Steps#

Overview -- Review the base URL, paths, and response envelope.
Authentication -- Get your project API key and authenticate your requests.
Content Enrichment -- Retrieve enriched hotels, manage templates, and generate text.
Need help? Reach our integration team at integrations@ygo.ai.
Modified at 2026-06-26 12:05:41
Previous
Authentication
Next
Content Enrichment API
Built with