ZotGPT (UC Irvine) ZotGPT Gateway

ZotGPT (UC Irvine) ZotGPT Gateway from ZotGPT (UC Irvine) — 2 path(s) described in OpenAPI.

OpenAPI Specification

zotgpt-gateway-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: ZotGPT Gateway
  version: '1.0'
  summary: UC Irvine's unified AI API gateway, on the Portkey API specification.
  description: |
    A faithful, documentation-derived contract for the surface UC Irvine
    publishes for the ZotGPT Gateway.

    PROVENANCE: UC Irvine does not publish a machine-readable OpenAPI for the
    Gateway. This document was GENERATED from the operations, base URLs, headers,
    provider aliases, and model slugs named verbatim on
    https://zotgpt.uci.edu/services/gateway/ and
    https://zotgpt.uci.edu/services/gateway/clients/. Only surfaces UCI names in
    its own documentation are included. Request/response schemas follow the
    Portkey / OpenAI-compatible shapes that UCI points clients at; they are
    intentionally permissive rather than exhaustively enumerated, because UCI
    publishes no field-level reference of its own.

    NOT A UCI-OWNED HOST: the documented data plane is Portkey's multi-tenant
    host. UCI tenancy is asserted by the workspace virtual key and the
    x-portkey-provider alias, both minted behind UCInetID.
  contact:
    name: UCI OIT AI Team
    email: oit-ai@uci.edu
    url: https://zotgpt.uci.edu/help/
  x-provenance:
    generated: '2026-07-28'
    method: generated
    source:
      - https://zotgpt.uci.edu/services/gateway/
      - https://zotgpt.uci.edu/services/gateway/clients/
      - https://zotgpt.uci.edu/services/migrate-azure-api/
    upstream-spec: https://portkey.ai/docs/introduction/what-is-portkey
    note: >-
      No anonymous OpenAPI/Swagger was retrievable from any ZotGPT host. Probes
      for /openapi.json, /openapi.yaml, /swagger.json, /api-docs, /docs and
      /v1/models against api.zotgpt.uci.edu all failed at DNS resolution; the
      Azure API Management developer portal at portal.azureapi.zotgpt.uci.edu
      returned 200 but gates its API definitions behind sign-in.
servers:
  - url: https://api.portkey.ai/v1
    description: OpenAI-compatible base URL, as documented for ZotGPT Gateway clients.
  - url: https://api.portkey.ai
    description: Anthropic-style base URL, as documented for ZotGPT Gateway clients.
tags:
  - name: Chat
    description: Chat completions across the campus model catalog.
  - name: Embeddings
    description: Vector embeddings across the campus model catalog.
security:
  - virtualKey: []
paths:
  /chat/completions:
    post:
      tags: [ Chat ]
      operationId: createChatCompletion
      summary: Create a chat completion
      description: >-
        Send a chat completion request to any model in the ZotGPT campus Model
        Catalog. The model is selected by slug; the upstream provider is selected
        by the x-portkey-provider header carrying a UCI provider alias. Streaming
        responses are supported.
      parameters:
        - $ref: '#/components/parameters/PortkeyProvider'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
            examples:
              claudeOnBedrock:
                summary: Claude Opus on AWS Bedrock via the campus alias
                value:
                  model: '@zotgpt-api-bedrock/us.anthropic.claude-opus-4-7'
                  messages:
                    - role: user
                      content: Summarize this syllabus in five bullets.
              openaiProd:
                summary: An OpenAI model via the campus alias
                value:
                  model: '@openai-prod/gpt-5.5'
                  messages:
                    - role: user
                      content: Draft a rubric for a first-year writing assignment.
                  stream: true
      responses:
        '200':
          description: A chat completion, or a Server-Sent Events stream when stream is true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChatCompletionResponse'
            text/event-stream:
              schema:
                type: string
                description: SSE stream of chat completion chunks.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/BudgetOrRateLimited'
  /embeddings:
    post:
      tags: [ Embeddings ]
      operationId: createEmbedding
      summary: Create embeddings
      description: >-
        Create vector embeddings for input text using an embeddings model from
        the ZotGPT campus Model Catalog.
      parameters:
        - $ref: '#/components/parameters/PortkeyProvider'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmbeddingRequest'
      responses:
        '200':
          description: Embedding vectors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/BudgetOrRateLimited'
components:
  securitySchemes:
    virtualKey:
      type: apiKey
      in: header
      name: x-portkey-api-key
      description: >-
        A workspace virtual API key minted by the user in the ZotGPT Gateway
        portal after signing in with UCInetID. UCI documents it as "treat as a
        password." Bearer-scheme presentation is documented for Anthropic-style
        clients such as Claude Desktop.
  parameters:
    PortkeyProvider:
      name: x-portkey-provider
      in: header
      required: false
      description: >-
        The UCI provider alias to route to, for example "@zotgpt-api-bedrock" or
        "@openai-prod". May also be carried as a prefix on the model slug.
      schema:
        type: string
        examples:
          - '@zotgpt-api-bedrock'
          - '@openai-prod'
  responses:
    Unauthorized:
      description: Missing, revoked, or non-UCI virtual key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BudgetOrRateLimited:
      description: >-
        Request rejected by rate limiting or by the per-key spend limit /
        workspace budget enforcement UCI applies to virtual keys.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    ChatCompletionRequest:
      type: object
      required: [ model, messages ]
      properties:
        model:
          type: string
          description: >-
            A model slug from the ZotGPT campus Model Catalog, optionally
            prefixed with a UCI provider alias.
        messages:
          type: array
          items:
            $ref: '#/components/schemas/Message'
        stream:
          type: boolean
          default: false
        temperature:
          type: number
        max_tokens:
          type: integer
      additionalProperties: true
    Message:
      type: object
      required: [ role, content ]
      properties:
        role:
          type: string
          enum: [ system, user, assistant ]
        content:
          type: string
    ChatCompletionResponse:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        created:
          type: integer
        model:
          type: string
        choices:
          type: array
          items:
            type: object
            properties:
              index:
                type: integer
              message:
                $ref: '#/components/schemas/Message'
              finish_reason:
                type: string
        usage:
          $ref: '#/components/schemas/Usage'
      additionalProperties: true
    EmbeddingRequest:
      type: object
      required: [ model, input ]
      properties:
        model:
          type: string
        input:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
      additionalProperties: true
    EmbeddingResponse:
      type: object
      properties:
        object:
          type: string
        data:
          type: array
          items:
            type: object
            properties:
              index:
                type: integer
              embedding:
                type: array
                items:
                  type: number
        model:
          type: string
        usage:
          $ref: '#/components/schemas/Usage'
      additionalProperties: true
    Usage:
      type: object
      description: Token accounting, which is what the campus budget tiers are drawn against.
      properties:
        prompt_tokens:
          type: integer
        completion_tokens:
          type: integer
        total_tokens:
          type: integer
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
            code:
              type: string