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

Authentication

Every request to the v2 API is authenticated with a project API key and scoped to a single project. You provide both on every call: the key proves who you are, and the project header tells the API which project's content you are working with.

What You Need#

Each request must include two things:
A project API key in the Authorization header, using the Bearer scheme. Project keys are prefixed with proj_.
The X-Project-ID header, set to the UUID of the project the request applies to.
Both are required on every endpoint. The key and the project must belong together -- a key can only access the project it was issued for.
WARNING
Keep your API key secret
Treat your project API key like a password. Never commit it to version control, never expose it in client-side code, and store it in an environment variable or a secret manager. Rotate it if you suspect it has been compromised.

Making an Authenticated Request#

Send both headers with every call. The example below retrieves a single enriched hotel.

When Authentication Fails#

The API distinguishes between not knowing who you are and not letting you do something.
401 Unauthorized -- The Authorization header is missing, malformed (for example, missing the Bearer prefix), or the key is invalid or revoked.
403 Forbidden -- The key is valid but is not allowed to act on the project in the request. This happens when X-Project-ID is missing, or when the key and the project do not belong together.
Both responses use the standard error envelope:
{
  "Error": {
    "Code": "UNAUTHORIZED",
    "Message": "Invalid API key"
  }
}
TIP
Both headers, every request
A common first-call mistake is sending the Authorization header but forgetting X-Project-ID. If a valid key returns 403, check that the project header is present and matches the project your key was issued for.
Need help? Reach our integration team at integrations@ygo.ai.
Modified at 2026-06-26 12:22:09
Previous
Core Concepts
Next
Error Handling & Limits
Built with