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

Core Concepts

The v2 API is built around two simple ideas: an organization owns one or more projects, and you always act on behalf of a single project. Understanding this scoping model up front makes every request -- and every response -- easy to reason about.

Organizations#

An organization represents your company or account. It owns your projects, your billing, and your team members. Most integrations operate within a single organization.

Projects#

A project is an isolated, self-contained workspace -- the unit you authenticate as. Everything you work with belongs to a project: its enriched hotels, its text templates, its generated texts, and the API keys that reach them. Two projects never see each other's data.
You tell the API which project a request applies to with the X-Project-ID header, and your project API key is bound to that same project. Together they scope every call to one project's data.
INFO
A project is a tenant
The platform is multi-tenant, and a project is the tenant boundary. All isolation -- data, access, and experimentation -- happens at the project level.

Why Projects#

Isolation -- each project's content and configuration are fully separated from every other project.
Multiple brands or sites -- run several projects under one organization, each with its own templates and content.
Granular access -- issue API keys per project, so a key only ever reaches that one project's data.

Experiment with a Dedicated Project#

There is no separate sandbox environment and no second base URL. Because each project is an isolated tenant, the way to test safely is to create a dedicated project for experiments. Generate texts, try out templates, and explore the API there without touching the content your production project serves. When you are happy with the result, do the same in your production project.
TIP
Keep production clean
Point your experiments at a separate project. Its hotels, templates, and generated texts are completely isolated from your production project, so you can iterate freely and throw the experiment away when you are done.

API Keys and Projects#

A project API key (Bearer proj_...) authenticates your request and identifies which project you are acting as. Send it together with the matching X-Project-ID header on every call; if the two disagree, the request is rejected. See Authentication for the details.
Need help? Reach our integration team at integrations@ygo.ai.
Modified at 2026-06-26 12:22:05
Previous
Overview
Next
Authentication
Built with