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

# Run Jailbreak Benchmark with saved model

> Identical to `POST /rt/redteam/jailbreak`, except the system under test is a **saved model** named in the `X-Enkrypt-Model` / `X-Enkrypt-Model-Version` headers instead of an inline `target`. The gateway resolves the model and fills in `target` before the request reaches the Red Team service. The same modality rules apply to the saved model: text in and text out, or text + image in and text out.

Saved models that reach their provider through a custom cURL command, custom headers/payload/response format, JWT auth, provider-specific `auth_data` or `metadata`, or an outbound proxy have no equivalent in the `target` shape and return `400`. Use an inline `target` on `POST /rt/redteam/jailbreak` for those.

Relay routing is the one exception to that `metadata` rule: a model saved with `model_config.connect_via_relay: true` and a `model_config.metadata.relay` block is projected onto `target.connect_via_relay` / `target.metadata.relay` and runs through your bridge exactly as an inline relay target would. A saved model carrying `metadata.relay` **alongside** other provider metadata still returns `400`, and so does one that sets `connect_via_relay` without a `metadata.relay` block, or a `metadata.relay` block without the flag.



## OpenAPI

````yaml POST /rt/model/redteam/jailbreak
openapi: 3.0.0
info:
  title: Enkrypt AI APIs
  version: 2.0.0
servers:
  - url: https://api.enkryptai.com
security:
  - apiKeyAuth: []
tags:
  - name: Guardrails
  - name: Code of Conduct
  - name: Endpoints
  - name: Redteam
    description: >-
      Red Team API: submit red-team / threat-modeling / playground / eval runs,
      then poll run status, records, results and compliance. Also two-phase
      threat modeling (categories + data), dataset retrieval, model health,
      findings and risk mitigation. The previous task-based Red Team API is
      under **Archived**.
  - name: Deployments
  - name: AI Proxy
  - name: Leaderboard
  - name: Archived
  - name: MCP Hub
    description: >-
      MCP Hub vulnerability scanning APIs. Submitting scans (the POST endpoints)
      is open to all authenticated callers. The scan **retrieval** APIs — Get
      Scan Job Status, Get Complete Scan Results, List Scans, and Get MCP Hub
      Scan Statistics (the GET endpoints) — are an **enterprise data-license
      feature**: they require your organization to have MCP Hub API access
      enabled by Enkrypt, otherwise they return `403`. Contact us at
      support@enkryptai.com to enable access.
  - name: MCP Registry Servers
  - name: MCP Gateways
  - name: MCP Playground
  - name: Skill Scanner
    description: >-
      Skill Scanner APIs: submit an agent skill (a directory inside a git
      repository) for security scanning, then read the verdict, the risk level
      and the full report. Scanning is asynchronous — a scan takes roughly 30–90
      seconds, so `POST /skill-hub/scan` returns a `scan_id` you poll.


      You see your organization's scans and nobody else's. The identity comes
      from your API key, never from your request — sending `user_email` is a
      `400`.


      For an organization or project API key, scans are filed under the
      **organization**, so every member sees every scan the organization has
      run, whichever project or member submitted it. For an individual account
      it is simply your own scans. Either way List Skill Scans needs no
      parameter to say who you are.
  - name: Compliance
    description: >-
      Compliance APIs: connect a ChatGPT Enterprise workspace, then keep reading
      its compliance logs and scanning every message through one of your saved
      guardrails.


      Every endpoint here — reads as well as writes — requires the **governance
      officer** role on the project your API key belongs to. The organization
      owner is **not** exempt: an owner who has not been granted the role gets
      `403` like anyone else. An individual (non-organization) account cannot
      hold the role at all, so compliance is an organization-only feature today.


      A scan is addressed by name in the `X-Enkrypt-Scan` header, within the
      project its API key belongs to. Message text is never stored: Get
      Compliance Message fetches it live from the provider, and only while the
      provider still holds it.
paths:
  /rt/model/redteam/jailbreak:
    post:
      tags:
        - Redteam
      summary: Run Jailbreak Benchmark with saved model
      description: >-
        Identical to `POST /rt/redteam/jailbreak`, except the system under test
        is a **saved model** named in the `X-Enkrypt-Model` /
        `X-Enkrypt-Model-Version` headers instead of an inline `target`. The
        gateway resolves the model and fills in `target` before the request
        reaches the Red Team service. The same modality rules apply to the saved
        model: text in and text out, or text + image in and text out.


        Saved models that reach their provider through a custom cURL command,
        custom headers/payload/response format, JWT auth, provider-specific
        `auth_data` or `metadata`, or an outbound proxy have no equivalent in
        the `target` shape and return `400`. Use an inline `target` on `POST
        /rt/redteam/jailbreak` for those.


        Relay routing is the one exception to that `metadata` rule: a model
        saved with `model_config.connect_via_relay: true` and a
        `model_config.metadata.relay` block is projected onto
        `target.connect_via_relay` / `target.metadata.relay` and runs through
        your bridge exactly as an inline relay target would. A saved model
        carrying `metadata.relay` **alongside** other provider metadata still
        returns `400`, and so does one that sets `connect_via_relay` without a
        `metadata.relay` block, or a `metadata.relay` block without the flag.
      operationId: rt_run_jailbreak_saved_model_post
      parameters:
        - name: X-Enkrypt-Policy
          in: header
          required: false
          schema:
            title: Code of Conduct Policy Name
            type: string
            description: >-
              Optional. The name of a saved Code of Conduct policy to label the
              run with. There is deliberately no body field for this - the
              request model rejects unknown keys. The benchmark's prompts and
              scoring are fixed, so the policy does not change what is tested.
            example: customer-support-coc
        - name: X-Enkrypt-Model
          in: header
          required: true
          schema:
            title: Model Name
            type: string
            description: The model saved name. E.g. Test Model
            example: Test Model
        - name: X-Enkrypt-Model-Version
          in: header
          required: true
          schema:
            title: Model Version
            type: string
            description: The model version. Default is 'v1'
            example: v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RTv2JailbreakRequestSavedModel'
            example:
              run_name: Jailbreak benchmark - Test Model v1
        required: true
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTv2RunQueuedResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RTv2HTTPValidationError'
components:
  schemas:
    RTv2JailbreakRequestSavedModel:
      properties:
        run_name:
          type: string
          maxLength: 200
          minLength: 1
          nullable: true
          title: Run Name
        user_metadata:
          additionalProperties: true
          type: object
          nullable: true
          title: User Metadata
      additionalProperties: false
      type: object
      title: RTv2JailbreakRequestSavedModel
      description: >-
        `POST /v1/redteam/jailbreak` payload.


        Fixed recipe: the jailbreak corpus, the attacks and the evaluation are
        server-owned.


        `target` is omitted: the saved model named in the `X-Enkrypt-Model` /
        `X-Enkrypt-Model-Version` headers supplies it.
    RTv2RunQueuedResponse:
      additionalProperties: true
      type: object
      title: RunQueuedResponse
      description: >-
        The accepted run. `run_id` is the value to carry into the run endpoints
        (`GET /rt/runs/{run_id}`, `/records`, `/results`, `/stream`).


        **Do not follow the `*_url` fields verbatim.** They are relative and are
        not guaranteed to carry the `/rt/` prefix this API is published under,
        so requesting one as given can return `400`. Build the URL from `run_id`
        and the paths documented here instead - `/rt/runs/{run_id}/records` is
        the resource you want. The same applies to `records_url` on the results
        payload.


        `websocket_url` is the **Server-Sent Events** progress stream
        (`/rt/runs/{run_id}/stream`) despite its name. The live log socket is
        `logs_url` - a relative path to join onto
        `wss://api.enkryptai.com/wss/redteam/v1/logs/tasks/`. See the `Stream
        Run Logs (WebSocket)` endpoint.
    RTv2HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/RTv2ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    RTv2ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: apikey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.