> ## Documentation Index
> Fetch the complete documentation index at: https://docs.geogen.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Entity

> Create a new entity with AI-generated prompts and start tracking.



## OpenAPI

````yaml post /entities
openapi: 3.1.0
info:
  title: Geogen API
  description: >-
    API for accessing LLM visibility data, managing entities, and tracking AI
    mentions.
  version: 1.0.0
servers:
  - url: https://api.geogen.io/v1
    description: Production server
security:
  - bearerAuth: []
paths:
  /entities:
    post:
      tags:
        - Entities
      summary: Create Entity
      description: >-
        Create a new entity and start tracking its visibility across LLMs.


        Prompts can be handled in three ways:

        - **Custom prompts**: Provide your own prompts via the `prompts` array.
        Each prompt can be a simple string (inherits the entity's `language` and
        `geolocation`) or an object with per-prompt `language` and `geolocation`
        overrides.

        - **Auto-generate** (default): Omit the `prompts` field and AI will
        generate relevant prompts based on the entity's description, language,
        and geolocation.

        - **No prompts**: Set `generatePrompts` to `false` to create the entity
        without any prompts. You can add prompts later via the Add Prompt
        endpoint.
      operationId: createEntity
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - domain
                - models
              properties:
                name:
                  type: string
                  description: Entity display name
                domain:
                  type: string
                  description: Website domain (e.g., example.com)
                models:
                  type: array
                  items:
                    type: string
                  description: Array of model UUIDs from /v1/models
                description:
                  type: string
                  description: Entity description
                language:
                  type: string
                  default: en
                  description: >-
                    Language code for the entity (e.g., 'en', 'fr', 'de'). Used
                    as default for auto-generated prompts and for custom prompts
                    that don't specify their own language.
                geolocation:
                  type: string
                  default: global
                  description: >-
                    Geolocation code for the entity (e.g., 'global', 'us',
                    'gb'). Used as default for auto-generated prompts and for
                    custom prompts that don't specify their own geolocation.
                trackingType:
                  type: string
                  enum:
                    - website
                    - individual
                  default: website
                  description: Type of tracking
                prompts:
                  type: array
                  items:
                    oneOf:
                      - type: string
                        description: Prompt text (uses entity's language and geolocation)
                      - type: object
                        required:
                          - prompt
                        properties:
                          prompt:
                            type: string
                            description: Prompt text
                          language:
                            type: string
                            description: >-
                              Language override for this prompt (e.g., 'fr',
                              'de'). Defaults to entity's language.
                          geolocation:
                            type: string
                            description: >-
                              Geolocation override for this prompt (e.g., 'us',
                              'gb'). Defaults to entity's geolocation.
                  description: >-
                    Custom prompts for tracking. Each item can be a plain string
                    (inherits entity's language/geolocation) or an object with
                    per-prompt language/geolocation overrides. When provided,
                    auto-generation is skipped.
                generatePrompts:
                  type: boolean
                  default: true
                  description: >-
                    Whether to auto-generate prompts using AI. Ignored when the
                    `prompts` array is provided. Set to `false` to create the
                    entity without any prompts.
                startTracking:
                  type: boolean
                  default: true
                  description: Start tracking immediately
            examples:
              with_custom_prompts_simple:
                summary: Custom prompts (strings)
                description: >-
                  Simple string prompts that inherit the entity's language and
                  geolocation.
                value:
                  name: Mon Site
                  domain: example.fr
                  description: Plateforme de gestion de projet pour les équipes distantes
                  language: fr
                  geolocation: fr
                  trackingType: website
                  models:
                    - model-uuid-1
                    - model-uuid-2
                  prompts:
                    - >-
                      Quel est le meilleur outil de gestion de projet pour les
                      équipes à distance ?
                    - >-
                      Quels logiciels recommandez-vous pour la collaboration en
                      ligne ?
                    - >-
                      Quelles sont les meilleures alternatives à Trello en
                      France ?
                  startTracking: true
              with_custom_prompts_mixed:
                summary: Custom prompts (per-prompt language/geo)
                description: >-
                  Mix of strings and objects. Strings inherit entity defaults,
                  objects can override language and geolocation per prompt.
                value:
                  name: My Website
                  domain: example.com
                  description: Project management platform for remote teams
                  language: en
                  geolocation: us
                  trackingType: website
                  models:
                    - model-uuid-1
                    - model-uuid-2
                  prompts:
                    - What is the best project management tool for remote teams?
                    - prompt: Quel est le meilleur outil de gestion de projet ?
                      language: fr
                      geolocation: fr
                    - prompt: What are the top project management tools in the UK?
                      geolocation: gb
                  startTracking: true
              auto_generate_prompts:
                summary: Auto-generated prompts (default)
                description: >-
                  Omit the prompts field to let AI generate relevant prompts
                  based on the entity's description, language, and geolocation.
                value:
                  name: My Website
                  domain: example.com
                  description: >-
                    Project management platform for remote teams with task
                    tracking and time management features
                  language: en
                  geolocation: us
                  trackingType: website
                  models:
                    - model-uuid-1
                    - model-uuid-2
                  startTracking: true
              no_prompts:
                summary: Without prompts
                description: >-
                  Create the entity without any prompts. You can add prompts
                  later via the Add Prompt endpoint.
                value:
                  name: My Website
                  domain: example.com
                  description: Project management platform for remote teams
                  language: en
                  geolocation: global
                  trackingType: website
                  models:
                    - model-uuid-1
                    - model-uuid-2
                  generatePrompts: false
                  startTracking: true
      responses:
        '201':
          description: Entity created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    $ref: '#/components/schemas/Entity'
                  promptsGenerated:
                    type: number
                    description: >-
                      Number of prompts saved for this entity (0 if
                      generatePrompts was false and no custom prompts were
                      provided)
                  prompts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Prompt ID
                        prompt:
                          type: string
                          description: The prompt text
                        language:
                          type: string
                          description: >-
                            Language code (per-prompt override or inherited from
                            the entity)
                        geolocation:
                          type: string
                          description: >-
                            Geolocation code (per-prompt override or inherited
                            from the entity)
                    description: >-
                      The saved prompts for this entity. Each prompt has its own
                      language and geolocation (either per-prompt override or
                      inherited from the entity).
                  trackingStarted:
                    type: boolean
                  message:
                    type: string
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  retryAfter:
                    type: number
components:
  schemas:
    Entity:
      type: object
      properties:
        id:
          type: string
          description: Entity ID
        name:
          type: string
          description: Entity name
        target:
          type: string
          description: Target URL or domain
        targetType:
          type: string
          enum:
            - url
            - term
          description: Type of target
        description:
          type: string
          description: Entity description
        faviconUrl:
          type: string
          description: Favicon URL
        language:
          type: string
          description: Language code
        geolocation:
          type: string
          description: Geolocation code
        isActive:
          type: boolean
          description: Whether entity is active
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key authentication. Format: Bearer wsk_your_api_key'

````