# Choose API

## OpenAPI Specification

```yaml
openapi: 3.0.1
info:
  title: ''
  description: ''
  version: 1.0.0
paths:
  /{orgName}/projects/{projectName}/optimization/choose-api:
    post:
      summary: Choose API
      deprecated: false
      description: "Ingest purpose: Resolve server-side experiments and personalizations for a user before you render or respond.\n\nUse this endpoint to:\n\t•\tFetch the correct variation / personalization body for a user\n\t•\tResolve experiences by names or groups\n\t•\tEnsure consistent assignments using sessionId + device (optional but recommended)\n\nWhat it returns: a choices[] array. Each choice includes:\n\t•\tname (experience name)\n\t•\tgroup (optional group name)\n\t•\tbody (the payload your backend must apply)"
      operationId: choose-api
      tags: []
      parameters:
        - name: orgName
          in: path
          description: Organization name
          required: true
          example: ''
          schema:
            type: string
            default: my_org
        - name: projectName
          in: path
          description: Name of a project
          required: true
          example: ''
          schema:
            type: string
            default: my_project
        - name: apiKey
          in: query
          description: Intempt api key
          required: false
          schema:
            type: string
            default: identifier.secret
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identification:
                  type: string
                  description: User identification object
                  default: '{"userId": "customer@example.com"}'
                  format: json
                names:
                  type: array
                  description: Experience names
                  default:
                    - name_1
                  items:
                    type: string
                groups:
                  type: array
                  description: Experienc group names
                  default:
                    - group_1
                  items:
                    type: string
                device:
                  type: string
                  description: Device specification
                  default: mobile
                sessionId:
                  type: string
                  description: Session specification
                  default: my_session_1
              x-apidog-orders:
                - identification
                - names
                - groups
                - device
                - sessionId
            example:
              identification:
                userId: customer@example.com
              names:
                - demo-server-side-experiment
                - demo-server-side-personalization-most-popular
              device: desktop
              sessionId: sess_web_20260127_001
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  choices:
                    type: array
                    items:
                      type: string
                x-apidog-orders:
                  - choices
              examples:
                '1':
                  summary: Success
                  value:
                    choices: []
                '2':
                  summary: Experiment variation (feature flag style payload)
                  value:
                    choices:
                      - name: demo-server-side-experiment
                        group: homepage-experiments
                        body:
                          variant: B
                          heroLayout: variantB
                          ctaText: Start free trial
          headers: {}
          x-apidog-name: OK
        '400':
          description: '400'
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Bad Request
      security: []
      x-readme:
        code-samples:
          - language: text
            code: "{\n    \"identification\": {\n        \"userId\": \"habilow207@inupup.com\"\n    },\n    \"names\": [\n    \t   \"demo-server-side-personalization-recently-viewed\"\n    ],\n    \"device\": \"mobile\",\n    \"sessionId\": \"my_session_2\"\n}"
        samples-languages:
          - text
      x-apidog-folder: ''
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1137771/apis/api-24815717-run
components:
  schemas: {}
  securitySchemes: {}
servers: []
security: []

```
