AppOmni AI API

Marlin AI autonomous analysis plans, and the AppOmni AgentGuard prompt-classification endpoint that returns an allow or block verdict with DLP and prompt-firewall scores for AI agent traffic.

Operations 2

GET /api/v1/ai/marlin/plans/analysis/latest/ Marlin AI results #
POST /api/v1/ai/prompts/agents/classify Classify an agent prompt (AgentGuard) #

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/appomni-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

appomni-ai-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: AppOmni AI API
  description: 'Marlin AI autonomous analysis plans and the AgentGuard prompt classification endpoint.


    Derived faithfully from the AppOmni public Postman collection published by AppOmni at https://api.appomni.com/
    — every path, method, parameter, request body and example response below is taken verbatim from that
    collection. No operation was invented.'
  version: 1.0.0
  contact:
    name: AppOmni
    url: https://appomni.com/support/
  license:
    name: Proprietary
    url: https://appomni.com/terms-of-service/
  x-generated-from: AppOmni public Postman collection (publishedId 2sBXc7Mjib) + AppOmni's published @appomni/n8n-nodes-agentguard
    source
  x-generated-source: https://api.appomni.com/api/collections/45135595/2sBXc7Mjib?segregateAuth=true&versionTag=latest
  x-generated-method: derived
  x-generated-date: '2026-09-04'
servers:
- url: https://{instance}.appomni.com
  description: AppOmni tenant. Replace {instance} with your AppOmni subdomain — e.g. `acme` if you log
    in at acme.appomni.com.
  variables:
    instance:
      default: example
      description: Your AppOmni tenant subdomain
security:
- bearerAuth: []
tags:
- name: Marlin AI
  description: Marlin AI is an autonomous SaaS security AI that runs platform-wide deep analyses and correlations
    automatically across security observations in the AppOmni platform
- name: AgentGuard
  description: AppOmni AgentGuard runtime prompt security — DLP and prompt-firewall classification for
    AI agent traffic.
paths:
  /api/v1/ai/marlin/plans/analysis/latest/:
    get:
      operationId: marlinAIResults
      summary: Marlin AI results
      tags:
      - Marlin AI
      description: "Returns a paginated list of the latest Marlin AI results in your environment.\n\n\
        \ Each entry includes metadata such as playbook_id, playbook_name, playbook_description, created_at,\
        \ risk_classification, ms_types, final_analysis, remediation_suggestions, summary\n\n Response\
        \ Fields\n\n Field \n Data Type \n Description \n Example \n\n playbook_id \n String \n Unique\
        \ identifier for the playbook. This is an AppOmni internal ID \n ms_errors \n\n playbook_name\
        \ \n String \n Name of the playbook as seen in the UI \n Summary on monitored services disconnection\
        \ issues \n\n playbook_description \n String \n Short description about what the playbook does\
        \ \n This playbook runs once per day and summarizes connection issues found on up to 20 monitored\
        \ services. The monitored services are chosen based on the largest posture coverage. \n\n created_at\
        \ \n String (ISO datetime) \n Timestamp when the playbook run was created \n 2022-11-29T05:56:26.372253Z\
        \ \n\n ms_types \n Array [String] \n List with type of service analyzed (e.g., box, github) \n\
        \ ['smartsheet', \n'github', \n'asana', \n'sfdc', \n'confluence', \n'zendesk'] \n\n final_analysis\
        \ \n String \n Text output of Marlin AI analysis \n These services have lost their connection\
        \ to AppOmni, preventing continuous monitoring \n\n remediation_suggestions \n String \n Text\
        \ output with remediation suggestions based on the data analyzed \n This suggests a missing permission\
        \ set required for the Salesforce integration. Contact user@appomni.com to re-establish the connection\
        \ \n\n summary \n String \n Text summary that shows on Marlin AI cards \n SaaS Monitoring Connection\
        \ Issues.14 monitored services were analyzed, with 10 disconnected and 3 degraded \n\n risk_classification\
        \ \n String \n risk set by Marlin AI based on what was found on its investigation \n high"
      responses:
        '200':
          description: Get Marlin AI results
          content:
            text/plain:
              schema:
                type: string
              example: "{\n    \"results\": [\n        {\n            \"analysis_output\": {\n       \
                \         \"plan_id\": \"e73fe289-a451-44de-8e26-d7658b96fdf5\",\n                \"final_analysis\"\
                : \"**Data analyzed:** 2651 occurrences and 20 findings related to inactive users were\
                \ analyzed across your AppOmni environment. No specific links to the analyzed data are\
                \ available in this output.\\n\\nThis analysis focused on identifying and reducing noise\
                \ from overlapping insights related to inactive users within your production environment.\
                \ The goal was to streamline your security posture by pinpointing redundant findings that\
                \ can be safely closed, thereby improving operational efficiency for your SOC team. This\
                \ process does not identify new cybersecurity threats but rather optimizes the management\
                \ of existing observations.\\n\\n**Key findings:**\\n*   **1311 occurrences** can be closed\
                \ due to coverage overlap.\\n*   **12 findings** can be closed due to coverage overlap.\\\
                n\\nThis optimization applies to insights found across the following monitored services:\
                \ **GSuite, iManage, O365, Okta, and SFMC**.\",\n                \"remediation_suggestions\"\
                : \"To enhance your team's focus and reduce alert fatigue, prioritize the following actions:\\\
                n\\n*   **Review and Close Findings:** Access the Posture Findings interface in AppOmni\
                \ and review the 12 identified findings and 1311 occurrences related to inactive users\
                \ that have been marked for closure due to coverage overlap. Confirm their redundancy\
                \ and proceed with dismissing or closing"
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/ai/prompts/agents/classify:
    post:
      operationId: classifyAgentPrompt
      summary: Classify an agent prompt (AgentGuard)
      tags:
      - AgentGuard
      description: 'Send a prompt to AppOmni AgentGuard for DLP and/or prompt-firewall analysis. Returns
        an allow/block verdict with per-classifier scores and block reasons. Authenticated with an AppOmni-issued
        ingest token in the `X-AppOmni-Ingest-Token` header (not the platform bearer token).


        Schema derived verbatim from AppOmni''s own published n8n community node source (github.com/appomni/n8n-nodes-agentguard,
        credentials/AgentGuardApi.credentials.ts and nodes/AgentGuard/Agentguard.node.ts).'
      security:
      - ingestToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentGuardClassifyRequest'
            example:
              messages:
              - role: user
                content: AppOmni AgentGuard credential test
                content_type: text/plain
              include_details: false
      responses:
        '200':
          description: Classification verdict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentGuardClassifyResponse'
        '401':
          description: Unauthorized — missing or invalid ingest token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'AppOmni API access token, created and managed in the AppOmni platform under Settings
        > API Settings. Sent as `Authorization: Bearer <token>`.'
    ingestToken:
      type: apiKey
      in: header
      name: X-AppOmni-Ingest-Token
      description: AppOmni-issued ingest token used by AgentGuard and the AODP ingest endpoint. Sent as
        the `X-AppOmni-Ingest-Token` request header.
  schemas:
    Error:
      type: object
      title: Error
      description: Standard Django REST Framework error envelope returned by the AppOmni API.
      properties:
        detail:
          type: string
          description: Human readable error message
    AgentGuardPrompt:
      type: object
      title: AgentGuardPrompt
      required:
      - role
      - content
      - content_type
      properties:
        role:
          type: string
          description: Message role, e.g. `user` or `system`
        content:
          type: string
          description: The prompt text to classify
        content_type:
          type: string
          description: Media type of `content`
          example: text/plain
    AgentGuardClassifierResult:
      type: object
      title: AgentGuardClassifierResult
      properties:
        name:
          type: string
        type:
          type: string
        status:
          type: string
          enum:
          - success
          - timeout
          - error
          - skipped
        duration_ms:
          type: integer
        applied_threshold:
          type: number
        scores:
          type: object
          properties:
            benign:
              type: number
            malicious:
              type: number
        block_reasons:
          type: array
          items:
            type: string
        details:
          type: object
          additionalProperties: true
        error:
          type: string
        skip_reason:
          type: string
    AgentGuardClassifyRequest:
      type: object
      title: AgentGuardClassifyRequest
      required:
      - messages
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/AgentGuardPrompt'
        include_details:
          type: boolean
          description: Return per-classifier detail in the response
        metadata:
          type: object
          title: AgentGuardClassifyMetadata
          description: Optional caller context used for attribution and user quarantine
          properties:
            user:
              type: object
              properties:
                id:
                  type: string
                username:
                  type: string
                email:
                  type: string
                principal_type:
                  type: string
            session:
              type: object
              properties:
                id:
                  type: string
            agent:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
            request:
              type: object
              properties:
                src_app:
                  type: string
                interface:
                  type: string
                user_agent:
                  type: string
                src_ip:
                  type: string
    AgentGuardClassifyResponse:
      type: object
      title: AgentGuardClassifyResponse
      required:
      - response_action
      - response_message
      - scores
      - block_reasons
      - classifiers
      - effective_threshold
      properties:
        response_action:
          type: string
          enum:
          - allow
          - block
          description: Verdict — `block` means the prompt must not be forwarded to the model
        response_message:
          type: string
        scores:
          type: object
          properties:
            benign:
              type: number
            malicious:
              type: number
        block_reasons:
          type: array
          items:
            type: string
        classifiers:
          type: array
          items:
            $ref: '#/components/schemas/AgentGuardClassifierResult'
        effective_threshold:
          type: number
        event_id:
          type: string