Dynamo AI API

Dynamo AI API as documented publicly: 19 operations. Contract generated from the documentation by API Evangelist (2026-10-24); not the provider's own document.

Operations 19

GET / GET / #
POST / POST / #
GET /.default GET /.default #
POST /analyze DynamoGuard Logs #
GET /awscli-exe-linux-x86_64.zip GET /awscli-exe-linux-x86_64.zip #
POST /proxy Expose a normal POST route that accepts JSON, forwards it to an upstream streaming API, aggregates the streamed output, and returns a single JSON response. #
POST /v1/applications Pull Moderation Logs From The API #
GET /v1/applications/{applicationId}/assign-ai-systems Pull Moderation Logs From The API #
GET /v1/applications/{applicationId}/logs Pull Moderation Logs From The API #
POST /v1/applications/{applicationid}/assign-ai-systems POST /v1/applications/{applicationId}/assign-ai-systems #
GET /v1/applications/{applicationid}/logs/count GET /v1/applications/{applicationId}/logs/count #
POST /v1/config Activate an IdP user #
POST /v1/moderation/analyze POST /v1/moderation/analyze #
GET /v1/moderation/log/{logId}/full-prompts Pull Moderation Logs From The API #
POST /v1/moderation/model/{aiSystemId}/chat/{sessionId} Chat request moderation log #
GET /v1/moderation/model/{aiSystemId}/logs Pull Moderation Logs From The API #
GET /v1/user/all Read a user's effective org-level roles #
POST /v1/user/reset-password/onboarded-user POST /v1/user/reset-password/onboarded-user #
POST /v1/user/token POST /v1/user/token #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dynamo-ai:dynamo-ai-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dynamo-ai-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Dynamo AI API
  version: '2026-10-24'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-24: 19 operation(s) read from 11 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Dynamo AI has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 9
    documentation: 10
    pages-with-code: 8
    pages-read: 11
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-24'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
  - https://docs.dynamo.ai/docs/sdk-reference/Installing%20ML%20SDK%20Libraries
  - https://docs.dynamo.ai/docs/DynamoEval/Integrating%20Custom%20Systems/Bridging%20Streaming%20APIs
  - https://docs.dynamo.ai/docs/DynamoEval/Integrating%20Custom%20Systems/Custom%20API%20Language%20Models
  - https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/DynamoGuard
  - https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-To-SIEM
  - https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Log-Record
  - https://docs.dynamo.ai/docs/Onboarding/IAM/Scopes-In-Detail
  - https://docs.dynamo.ai/docs/Onboarding/IAM/Entra-ID-as-IdP
  - https://docs.dynamo.ai/docs/Onboarding/IAM/Rotating-Credentials
  - https://docs.dynamo.ai/docs/Onboarding/IAM/Adding-Mappers
paths:
  /:
    get:
      operationId: get
      tags:
      - Api
      summary: GET /
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Scopes-In-Detail
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s -H \"Authorization: Bearer $ADMIN_TOKEN\" \\ \"https://api.<domain>/v1/user/all?includeOrgLevelRoles=true\" \\ | jq\
          \ '.users[] | select(.email==\"USER_EMAIL\") | {email, orgLevelRoles}' \n An empty orgLevelRoles array on a federated user means no\
          \ identity-provider mapper matched. See Claim-Mapped Roles Missing , and note that a user in this state receives a server error rather\
          \ than a permission deni"
    post:
      operationId: post
      tags:
      - Api
      summary: POST /
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Entra-ID-as-IdP
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s -X POST https://api.<domain>/v1/user/setup \\ -H \"Authorization: Bearer $ADMIN_TOKEN\" \\ -H 'Content-Type: application/json'\
          \ \\ -d '{\"userId\":\"<application-user-id>\"}' \n userId is the application user id, not the Keycloak UUID — they are different identifiers\
          \ for the same person. \n Confirm both steps succeeded: \n { \"success\" : true , \"steps\" : [ { \"step\" : \"POLICIES\" , \"status\"\
          \ : \"success\" } "
  /.default:
    get:
      operationId: get_default
      tags:
      - API
      summary: GET /.default
      x-source: https://docs.dynamo.ai/docs/DynamoEval/Integrating%20Custom%20Systems/Custom%20API%20Language%20Models
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDefaultResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl or OpenAPI schema. \n Create the Custom API Language Model in the UI or with create_custom_model ( examples below ). \n\
          \ Request/response format specification ​ \n DynamoEval always speaks these shapes on its side of the adapter. Your API may use different\
          \ fields; JSONata maps between them. \n Request format ​ \n DynamoEval supports single-turn and multi-turn conversation formats. \n\
          \ Single-turn req"
  /analyze:
    post:
      operationId: post_analyze
      tags:
      - Analyze
      summary: DynamoGuard Logs
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/DynamoGuard
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /awscli-exe-linux-x86_64.zip:
    get:
      operationId: get_awscli_exe_linux_x86_64_zip
      tags:
      - Awscli Exe Linux X86 64
      summary: GET /awscli-exe-linux-x86_64.zip
      x-source: https://docs.dynamo.ai/docs/sdk-reference/Installing%20ML%20SDK%20Libraries
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\" unzip awscliv2.zip sudo ./aws/install\
          \ \n Now we setup the AWS CLI. This will ask for an Access Key, Secret Key, and Region. The keys should have been shared with your team\
          \ over email. \n aws configure \n Now, login to code artifacts \n aws codeartifact login --tool pip --repository dynamofl --domain dynamofl\
          \ --domain-own"
  /proxy:
    post:
      operationId: post_proxy
      tags:
      - Proxy
      summary: Expose a normal POST route that accepts JSON, forwards it to an upstream streaming API, aggregates the streamed output, and returns
        a single JSON response.
      x-source: https://docs.dynamo.ai/docs/DynamoEval/Integrating%20Custom%20Systems/Bridging%20Streaming%20APIs
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostProxyResponse'
      x-evidence:
        kind: documentation
  /v1/applications:
    post:
      operationId: post_v1_applications
      tags:
      - Applications
      summary: Pull Moderation Logs From The API
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ApplicationsRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1ApplicationsResponse'
      x-evidence:
        kind: documentation
  /v1/applications/{applicationId}/assign-ai-systems:
    get:
      operationId: get_v1_applications_applicationId_assign_ai_systems
      tags:
      - Applications
      summary: Pull Moderation Logs From The API
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: applicationId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ApplicationsApplicationidAssignAiSystemsResponse'
      x-evidence:
        kind: documentation
  /v1/applications/{applicationId}/logs:
    get:
      operationId: get_v1_applications_applicationId_logs
      tags:
      - Applications
      summary: Pull Moderation Logs From The API
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: applicationId
        in: path
        required: true
        schema:
          type: string
      - name: startTime
        in: query
        required: true
        schema:
          type: string
        description: Window start, UTC seconds. Inclusive.
      - name: endTime
        in: query
        required: true
        schema:
          type: string
        description: Window end, UTC seconds. Inclusive.
      - name: sortDir
        in: query
        required: false
        schema:
          type: string
        description: asc or desc. Default desc.
      - name: pageNum
        in: query
        required: false
        schema:
          type: string
        description: Page number, from 1. Default 1.
      - name: perPage
        in: query
        required: false
        schema:
          type: string
        description: Logs per page. Default 50. 0 returns every log in the window.
      - name: actions
        in: query
        required: false
        schema:
          type: string
        description: JSON array of final actions, e.g. ["BLOCK","WARN"].
      - name: aiSystemIds
        in: query
        required: false
        schema:
          type: string
        description: Applications endpoint only. JSON array of AI system IDs.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ApplicationsApplicationidLogsResponse'
      x-evidence:
        kind: documentation
  /v1/applications/{applicationid}/assign-ai-systems:
    post:
      operationId: post_v1_applications_applicationid_assign_ai_systems
      tags:
      - Applications
      summary: POST /v1/applications/{applicationId}/assign-ai-systems
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: applicationid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ApplicationsApplicationidAssignAiSystemsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -sS -X POST \\ -H \"Authorization: Bearer TOKEN\" \\ -H \"Content-Type: application/json\" \\ -d '{\"addAiSystems\":[\"\
          AI_SYSTEM_ID\"]}' \\ https://API_HOST/v1/applications/APPLICATION_ID/assign-ai-systems \n The response is 207 Multi-Status , with one\
          \ result per AI system. POST /v1/applications ignores an aiSystems field. Use this call to attach AI systems. \n Create A Service User\
          \ And Token ​ \n Create a "
  /v1/applications/{applicationid}/logs/count:
    get:
      operationId: get_v1_applications_applicationid_logs_count
      tags:
      - Applications
      summary: GET /v1/applications/{applicationId}/logs/count
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: applicationid
        in: path
        required: true
        schema:
          type: string
      - name: endTime
        in: query
        required: false
        schema:
          type: string
      - name: startTime
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -sS -H \"Authorization: Bearer TOKEN\" \\ \"https://API_HOST/v1/applications/APPLICATION_ID/logs/count?startTime=START_UTC_SECONDS&endTime=END_UTC_SECONDS\"\
          \ \n Response Fields ​ \n Each entry in logs has id , timestamp (ISO 8601, UTC), action (the most severe action of the analyses), analyses\
          \ , metadata , and multiturnMetadata , plus ragContext when the request included one. Each analysis has text ,"
  /v1/config:
    post:
      operationId: post_v1_config
      tags:
      - Config
      summary: Activate an IdP user
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Entra-ID-as-IdP
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ConfigRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1ConfigResponse'
      x-evidence:
        kind: documentation
  /v1/moderation/analyze:
    post:
      operationId: post_v1_moderation_analyze
      tags:
      - Moderation
      summary: POST /v1/moderation/analyze
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-To-SIEM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ModerationAnalyzeRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -sS -D - -o /dev/null \\ -H \"Authorization: Bearer TOKEN\" \\ -H \"Content-Type: application/json\" \\ -d '{\"messages\"\
          :[{\"role\":\"user\",\"content\":\"Test message\"}],\"textType\":\"MODEL_INPUT\",\"modelId\":\"AI_SYSTEM_ID\"}' \\ https://API_HOST/v1/moderation/analyze\
          \ | grep -i '^x-request-id' \n In your SIEM, find the event whose metadata.reqId equals that value. Its message.logType is moderationLogs\
          \ . \n A reque"
  /v1/moderation/log/{logId}/full-prompts:
    get:
      operationId: get_v1_moderation_log_logId_full_prompts
      tags:
      - Moderation
      summary: Pull Moderation Logs From The API
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: logId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ModerationLogLogidFullPromptsResponse'
      x-evidence:
        kind: documentation
  /v1/moderation/model/{aiSystemId}/chat/{sessionId}:
    post:
      operationId: post_v1_moderation_model_aiSystemId_chat_sessionId
      tags:
      - Moderation
      summary: Chat request moderation log
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Log-Record
      parameters:
      - name: aiSystemId
        in: path
        required: true
        schema:
          type: string
      - name: sessionId
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/moderation/model/{aiSystemId}/logs:
    get:
      operationId: get_v1_moderation_model_aiSystemId_logs
      tags:
      - Moderation
      summary: Pull Moderation Logs From The API
      x-source: https://docs.dynamo.ai/docs/Onboarding/Observability/Logging/Moderation-Logs-From-API
      parameters:
      - name: aiSystemId
        in: path
        required: true
        schema:
          type: string
      - name: startTime
        in: query
        required: true
        schema:
          type: string
        description: Window start, UTC seconds. Inclusive.
      - name: endTime
        in: query
        required: true
        schema:
          type: string
        description: Window end, UTC seconds. Inclusive.
      - name: sortDir
        in: query
        required: false
        schema:
          type: string
        description: asc or desc. Default desc.
      - name: pageNum
        in: query
        required: false
        schema:
          type: string
        description: Page number, from 1. Default 1.
      - name: perPage
        in: query
        required: false
        schema:
          type: string
        description: Logs per page. Default 50. 0 returns every log in the window.
      - name: actions
        in: query
        required: false
        schema:
          type: string
        description: JSON array of final actions, e.g. ["BLOCK","WARN"].
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ModerationModelAisystemidLogsResponse'
      x-evidence:
        kind: documentation
  /v1/user/all:
    get:
      operationId: get_v1_user_all
      tags:
      - User
      summary: Read a user's effective org-level roles
      description: Returns a list of users with optional organization‑level role information.
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Scopes-In-Detail
      parameters:
      - name: includeOrgLevelRoles
        in: query
        required: false
        schema:
          type: string
        description: Include organization level roles in the response (as shown in the example).
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
        description: Bearer token for authentication.
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v1/user/reset-password/onboarded-user:
    post:
      operationId: post_v1_user_reset_password_onboarded_user
      tags:
      - User
      summary: POST /v1/user/reset-password/onboarded-user
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Rotating-Credentials
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1UserResetPasswordOnboardedUserRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://API_HOSTNAME/v1/user/reset-password/onboarded-user \\ -H \"Authorization: Bearer API_KEY\" \\ -H \"Content-Type:\
          \ application/json\" \\ -d '{\"email\":\"USER_EMAIL\"}' \n The new password must satisfy the realm password policy. A value that fails\
          \ the policy is rejected, and if the rejection happens during user creation the API reports no error to the caller. Read the active\
          \ policy before c"
  /v1/user/token:
    post:
      operationId: post_v1_user_token
      tags:
      - User
      summary: POST /v1/user/token
      x-source: https://docs.dynamo.ai/docs/Onboarding/IAM/Rotating-Credentials
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://API_HOSTNAME/v1/user/token \\ -H \"Authorization: Bearer CURRENT_API_KEY\" \n The response contains the\
          \ new key. Update your secret store to match. \n Changing the secret store value alone has no effect. The platform writes the API key\
          \ hash only when the account has no key recorded. \n Rotating the Keycloak Client Secret ​ \n The platform authenticates to Keycloak\
          \ with a confidential"
components:
  schemas:
    PostRequest:
      type: object
      properties:
        userId:
          type: string
    GetDefaultResponse:
      type: object
      properties:
        Authorization:
          type: string
        ocp-apim-subscription-key:
          type: string
    PostProxyResponse:
      type: object
      properties:
        content:
          type: string
          description: The full assistant reply, assembled from every stream delta.
    PostV1ApplicationsRequest:
      type: object
      properties:
        addAiSystems:
          type: string
          description: Array of AI system IDs to attach.
    PostV1ApplicationsResponse:
      type: object
      properties:
        status:
          type: integer
          description: 207 Multi-Status response code.
    GetV1ApplicationsApplicationidAssignAiSystemsResponse:
      type: object
      properties:
        status:
          type: integer
          description: 207 Multi-Status response code with per‑AI‑system results.
    GetV1ApplicationsApplicationidLogsResponse:
      type: object
      properties:
        logs:
          type: array
          description: Array of log entries.
        id:
          type: string
          description: Log identifier.
        timestamp:
          type: string
          description: ISO 8601 UTC timestamp.
        action:
          type: string
          description: Most severe action of the analyses.
        analyses:
          type: array
          description: List of analyses.
        metadata:
          type: object
          description: Metadata object.
        multiturnMetadata:
          type: object
          description: Multiturn metadata.
        ragContext:
          type: object
          description: RAG context when request included one.
        applicationAiSystemId:
          type: string
          description: Added by applications endpoint.
        applicationAiSystemName:
          type: string
          description: Added by applications endpoint.
        applicationAiSystemRemovedAt:
          type: string
          description: Added by applications endpoint.
    PostV1ApplicationsApplicationidAssignAiSystemsRequest:
      type: object
      properties:
        addAiSystems:
          type: array
          items:
            type: string
    PostV1ConfigRequest:
      type: object
      properties:
        namespace:
          type: string
          description: Configuration namespace, e.g., MODERATION
        name:
          type: string
          description: Configuration name, e.g., dynamoGuardAccess
        value:
          type: string
          description: Configuration value, e.g., ACTIVATED
        userEmail:
          type: string
          description: Email of the user for whom the setting applies
      required:
      - namespace
      - name
      - value
      - userEmail
    PostV1ConfigResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates if the operation succeeded
        steps:
          type: array
          description: List of steps performed
    PostV1ModerationAnalyzeRequest:
      type: object
      properties:
        messages:
          type: array
          items:
            type: object
            properties:
              role:
                type: string
              content:
                type: string
        textType:
          type: string
        modelId:
          type: string
    GetV1ModerationLogLogidFullPromptsResponse:
      type: object
      properties:
        fullPrompts:
          type: object
          description: Full text of prompts for the specified log.
    GetV1ModerationModelAisystemidLogsResponse:
      type: object
      properties:
        logs:
          type: array
          description: Array of log entries.
    PostV1UserResetPasswordOnboardedUserRequest:
      type: object
      properties:
        email:
          type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: API
- name: Analyze
- name: Api
- name: Applications
- name: Awscli Exe Linux X86 64
- name: Config
- name: Moderation
- name: Proxy
- name: User