AppDirect AI Management API

Create, retrieve, and manage AI assistants

Operations 11

PATCH /api/v1/api-keys Update AI #
DELETE /api/v1/api-keys Delete AI #
POST /api/v1/ai Create New AI #
POST /api/v1/ai/import Import Agent #
GET /api/v1/ai/{aiId} Get AI Details #
GET /api/v1/ai/{aiId}/export Export Agent #
PUT /api/v1/ai/{aiId}/approve Approve an AI #
PUT /api/v1/ai/{aiId}/revoke Revoke AI approval #
PUT /api/v1/ai/{aiId}/generate-profile Generate AI profile #
PUT /api/v1/ai/{aiId}/share Share an AI #
GET /api/v1/me/ai List AIs

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/appdirect-ai-management-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

appdirect-ai-management-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The Companies API allows developers to manage marketplace companies and their user memberships.
  title: Companies AI Embed AI Management API
  license:
    name: Apache License, Version 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0
  version: v296.0-SNAPSHOT
servers:
- url: https://marketplace.appdirect.com/api
- url: https://virtserver.swaggerhub.com
tags:
- name: AI Management
  description: Create, retrieve, and manage AI assistants
paths:
  /api/v1/api-keys:
    patch:
      tags:
      - AI Management
      summary: Update AI
      description: Updates fields on the specified AI.
      operationId: updateAI
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI to update.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AIUpdateRequest'
      responses:
        '200':
          description: Updated AI details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIDetail'
        '400':
          description: Bad request - invalid input.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
    delete:
      tags:
      - AI Management
      summary: Delete AI
      description: Deletes the specified AI.
      operationId: deleteAI
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI to delete.
        schema:
          type: string
      responses:
        '204':
          description: AI deleted successfully.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai:
    post:
      tags:
      - AI Management
      summary: Create New AI
      description: Creates a new AI specified by the given identifier.
      operationId: createAI
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AICreateRequest'
      responses:
        '200':
          description: Details of the specified AI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIDetail'
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/import:
    post:
      tags:
      - AI Management
      summary: Import Agent
      description: Creates a new agent from a portable AgentBundle. Tool secrets can be supplied via the secrets map. Skills are imported only when the caller has SKILLS WRITE permission; otherwise they are skipped with a warning. If the bundle model is unavailable, the first available model is substituted and a warning is returned.
      operationId: importAgent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportAgentRequest'
      responses:
        '201':
          description: Agent successfully imported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportAgentResponse'
        '400':
          description: Invalid request body or model ID.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}:
    get:
      tags:
      - AI Management
      summary: Get AI Details
      description: Retrieves details of the AI specified by the given identifier.
      operationId: getAIDetails
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI whose details are to be retrieved.
        schema:
          type: string
      responses:
        '200':
          description: Details of the specified AI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIDetail'
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/export:
    get:
      tags:
      - AI Management
      summary: Export Agent
      description: Exports an agent and its configuration as a portable AgentBundle JSON document. Secrets are stripped from tool configurations and listed in requiredSecrets. Skills are included only when the caller has SKILLS READ permission. Organization-scoped callers can export agents in their org; instance-level callers can export across orgs.
      operationId: exportAgent
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the agent to export.
        schema:
          type: string
      - name: includeDataSources
        in: query
        required: false
        description: Whether to include data sources in the export. Defaults to true.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
          default: 'true'
      - name: dataSourceIds
        in: query
        required: false
        description: Comma-separated list of specific data source IDs to include. When provided, only the listed data sources are exported.
        schema:
          type: string
      responses:
        '200':
          description: Agent bundle exported successfully.
          headers:
            Content-Disposition:
              description: Attachment filename derived from the agent name.
              schema:
                type: string
                example: attachment; filename="my-agent.json"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentBundle'
        '400':
          description: AI ID is required.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: Agent not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/approve:
    put:
      tags:
      - AI Management
      summary: Approve an AI
      description: Marks an AI as approved by the organization.
      operationId: approveAI
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI to be approved.
        schema:
          type: string
      responses:
        '200':
          description: AI successfully approved.
        '401':
          description: Missing authorization context. User must be authenticated.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/revoke:
    put:
      tags:
      - AI Management
      summary: Revoke AI approval
      description: Revokes the organization approval for an AI.
      operationId: revokeAIApproval
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI whose approval is to be revoked.
        schema:
          type: string
      responses:
        '200':
          description: AI approval successfully revoked.
        '401':
          description: Missing authorization context. User must be authenticated.
        '403':
          description: Forbidden, the user is not authorized to perform this action.
        '404':
          description: AI not found with the given identifier.
        '500':
          description: Internal Server Error.
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/generate-profile:
    put:
      tags:
      - AI Management
      summary: Generate AI profile
      description: Generates an AI profile based on existing AI data.
      operationId: generateAIProfile
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI.
        schema:
          type: string
      responses:
        '200':
          description: AI profile generated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIProfile'
      security:
      - ApiKeyAuth: []
  /api/v1/ai/{aiId}/share:
    put:
      tags:
      - AI Management
      summary: Share an AI
      description: Shares the AI with the provided emails.
      operationId: shareAI
      parameters:
      - name: aiId
        in: path
        required: true
        description: The identifier of the AI.
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShareAIRequest'
      responses:
        '200':
          description: AI shared.
      security:
      - ApiKeyAuth: []
  /api/v1/me/ai:
    get:
      tags:
      - AI Management
      summary: List AIs
      parameters:
      - in: query
        name: scope
        schema:
          $ref: '#/components/schemas/ListAIsRequestScope'
        description: The scope to filter results by
      - in: query
        name: groupId
        schema:
          type: string
        description: The id of a group to filter results by
      - in: query
        name: categoryId
        schema:
          type: string
        description: The id of a category to filter results by
      - in: query
        name: approvedByOrg
        schema:
          type: boolean
        description: Filter results by whether the AI has been approved by the organization.
      - in: query
        name: search
        schema:
          type: string
        description: Search term
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/AIDetail'
components:
  schemas:
    AgentBundleDataSourceConfig:
      type: object
      properties:
        originalId:
          type: string
          description: Original data source ID from the export environment, used for same-environment relink on import.
        name:
          type: string
        type:
          $ref: '#/components/schemas/DataSourceType'
        refreshPeriod:
          $ref: '#/components/schemas/DataSourceRefreshPeriod'
        data:
          type:
          - object
          - 'null'
          additionalProperties: true
        knowledgeItems:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleKnowledgeItemConfig'
      required:
      - originalId
      - name
      - type
      - refreshPeriod
      - data
      - knowledgeItems
    AIVisibility:
      type: string
      description: 'Visibility level controlling who can access the AI. PRIVATE: Only the owner can access. GROUP: Only specified groups can access. ORGANIZATION: Anyone in the organization can access. ANYONE_WITH_LINK: Anyone with the link can access.'
      enum:
      - PRIVATE
      - GROUP
      - ORGANIZATION
      - ANYONE_WITH_LINK
    AIUpdateRequest:
      type: object
      description: Request object for updating an AI configuration. Send only the fields you want to update.
      properties:
        src:
          type: string
        name:
          type: string
        introduction:
          type:
          - string
          - 'null'
        description:
          type: string
        instructions:
          type: string
        seed:
          type: string
        modelId:
          type: string
        visibility:
          $ref: '#/components/schemas/AIVisibility'
        listInOrgCatalog:
          type: boolean
        listInPublicCatalog:
          type: boolean
        listInTenantCatalog:
          type: boolean
        generateCitations:
          type: boolean
        chatLogsVisible:
          type: boolean
        intermediateStepsVisible:
          type: boolean
        options:
          $ref: '#/components/schemas/AIModelOptions'
        groups:
          type: array
          items:
            type: string
        profile:
          $ref: '#/components/schemas/AIProfile'
        editors:
          type: array
          items:
            $ref: '#/components/schemas/AIEditorUser'
        publicCategories:
          type: array
          items:
            $ref: '#/components/schemas/PublicCategoryType'
        orgCategoryIds:
          type: array
          items:
            type: string
    AgentBundleFlowVersionConfig:
      type: object
      properties:
        version:
          type: integer
        active:
          type: boolean
        description:
          type: string
        data:
          type: object
          additionalProperties: true
      required:
      - version
      - active
      - description
      - data
    PublicCategoryType:
      type: string
      enum:
      - ACCOUNTING_FINANCE
      - AI_MODELS
      - ENGINEERING
      - HUMAN_RESOURCES
      - INFORMATION_TECHNOLOGY
      - LEARNING_DEVELOPMENT
      - MARKETING
      - PRODUCTIVITY
      - SALES
      - ADVISOR
      - FEATURED
    AgentBundle:
      type: object
      description: Portable agent definition for export and import. Secrets are stripped from tool data and listed in requiredSecrets.
      properties:
        version:
          type: string
          enum:
          - '1.0'
        exportedAt:
          type: string
          format: date-time
        source:
          type: object
          properties:
            apiBaseUrl:
              type: string
            orgId:
              type: string
          required:
          - apiBaseUrl
          - orgId
        agent:
          $ref: '#/components/schemas/AgentBundleAgentConfig'
        tools:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleToolConfig'
        userInputs:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleUserInputConfig'
        flows:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleFlowConfig'
        dataSources:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleDataSourceConfig'
        skills:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleSkillConfig'
        requiredSecrets:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleSecretDescriptor'
      required:
      - version
      - exportedAt
      - source
      - agent
      - tools
      - userInputs
      - flows
      - dataSources
      - skills
      - requiredSecrets
    AgentBundleKnowledgeItemConfig:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        uniqueId:
          type:
          - string
          - 'null'
        blobUrl:
          type:
          - string
          - 'null'
        filename:
          type:
          - string
          - 'null'
        mimeType:
          type:
          - string
          - 'null'
      required:
      - name
      - type
      - uniqueId
      - blobUrl
      - filename
      - mimeType
    ImportAgentRequest:
      type: object
      properties:
        bundle:
          $ref: '#/components/schemas/AgentBundle'
        name:
          type: string
          description: Optional override for the imported agent name.
        secrets:
          type: object
          additionalProperties:
            type: string
          description: Credential values keyed by requiredSecrets entries.
      required:
      - bundle
    AgentBundleFlowConfig:
      type: object
      properties:
        name:
          type: string
        enabled:
          type: boolean
        versions:
          type: array
          items:
            $ref: '#/components/schemas/AgentBundleFlowVersionConfig'
      required:
      - name
      - enabled
      - versions
    AgentBundleUserInputConfig:
      type: object
      properties:
        variableName:
          type: string
        type:
          $ref: '#/components/schemas/AIUserInputType'
        label:
          type: string
        configuration:
          type: object
          additionalProperties: true
        showOnChatCreate:
          type: boolean
        orderIndex:
          type: integer
      required:
      - variableName
      - type
      - label
      - configuration
      - showOnChatCreate
      - orderIndex
    AIModelOptions:
      type: object
      description: Configuration options for the AI model's behavior
      properties:
        temperature:
          type: array
          description: Controls randomness in the model's output
          minItems: 1
          maxItems: 1
          items:
            type: number
        topP:
          type: array
          description: Controls diversity via nucleus sampling
          minItems: 1
          maxItems: 1
          items:
            type: number
        topK:
          type: array
          description: Controls diversity by limiting to top K tokens
          minItems: 1
          maxItems: 1
          items:
            type: number
        maxTokens:
          type: array
          description: Maximum number of tokens in the model's response
          minItems: 1
          maxItems: 1
          items:
            type: number
        maxInputTokens:
          type: array
          description: Maximum number of input tokens allowed
          minItems: 1
          maxItems: 1
          items:
            type: number
        frequencyPenalty:
          type: array
          description: Penalizes frequent token usage
          minItems: 1
          maxItems: 1
          items:
            type: number
        presencePenalty:
          type: array
          description: Penalizes new token usage
          minItems: 1
          maxItems: 1
          items:
            type: number
    AIDetail:
      type: object
      properties:
        id:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        name:
          type: string
        introduction:
          type:
          - string
          - 'null'
        description:
          type: string
        instructions:
          type: string
        seed:
          type: string
        src:
          type: string
        orgId:
          type: string
        userId:
          type: string
        profile:
          $ref: '#/components/schemas/AIProfile'
        userName:
          type: string
        orgName:
          type: string
        categoryId:
          type: string
        visibility:
          $ref: '#/components/schemas/AIVisibility'
        listInOrgCatalog:
          type: boolean
        listInPublicCatalog:
          type: boolean
        listInTenantCatalog:
          type: boolean
        chatLogsVisible:
          type: boolean
        generateCitations:
          type: boolean
        intermediateStepsVisible:
          type: boolean
        modelId:
          type: string
        options:
          $ref: '#/components/schemas/AIModelOptions'
        groups:
          type: array
          items:
            type: string
        editors:
          type: array
          items:
            $ref: '#/components/schemas/AIEditorUser'
        publicCategories:
          type: array
          items:
            $ref: '#/components/schemas/PublicCategoryType'
        orgCategoryIds:
          type: array
          items:
            type: string
        messageCount:
          type: integer
        rating:
          type: number
        ratingCount:
          type: integer
        isShared:
          type: boolean
        hasUserChats:
          type: boolean
        isApprovedByOrg:
          type: boolean
        isPremiumModel:
          type: boolean
        isDeleted:
          type: boolean
    AICreateRequest:
      type: object
      description: Request object for creating an AI configuration.
      properties:
        src:
          type: string
        name:
          type: string
        introduction:
          type:
          - string
          - 'null'
        description:
          type: string
        instructions:
          type: string
        seed:
          type: string
        modelId:
          type: string
        visibility:
          $ref: '#/components/schemas/AIVisibility'
        listInOrgCatalog:
          type: boolean
        listInPublicCatalog:
          type: boolean
        listInTenantCatalog:
          type: boolean
        generateCitations:
          type: boolean
        chatLogsVisible:
          type: boolean
        intermediateStepsVisible:
          type: boolean
        options:
          $ref: '#/components/schemas/AIModelOptions'
        groups:
          type: array
          items:
            type: string
        profile:
          $ref: '#/components/schemas/AIProfile'
        editors:
          type: array
          items:
            $ref: '#/components/schemas/AIEditorUser'
        publicCategories:
          type: array
          items:
            $ref: '#/components/schemas/PublicCategoryType'
        orgCategoryIds:
          type: array
          items:
            type: string
      required:
      - src
      - name
      - description
      - instructions
    DataSourceType:
      type: string
      description: The type of the data source.
      enum:
      - API
      - FILE_UPLOAD
      - GOOGLE_DRIVE
      - ONEDRIVE
      - WEB_URL
      - CONFLUENCE
      - JIRA
      - GITHUB
    AgentBundleSecretDescriptor:
      type: object
      description: Describes a secret stripped during export. Keys map to credential fields in the import request.
      properties:
        key:
          type: string
          description: Secret key in the format tool:<index>:<name>:<field>.
        description:
          type: string
          description: Human-readable label for the credential field.
        secretType:
          type: string
          enum:
          - apiKey
          - password
          - clientId
          - clientSecret
          - header
          - custom
      required:
      - key
      - description
      - secretType
    AIUserInputType:
      type: string
      enum:
      - SHORT_TEXT
      - LONG_TEXT
      - TEXT_CHOICE
      - IMAGE_CHOICE
      - DATE
      - NUMBER
      - PHONE_NUMBER
      - FILE_UPLOAD
      - DISPLAY
      - ADDRESS
    AgentBundleSkillConfig:
      type: object
      properties:
        name:
          type: string
          description: 'Skill slug: lowercase alphanumeric characters, hyphens, and underscores.'
        description:
          type: string
        content:
          type: string
        enabled:
          type: boolean
      required:
      - name
      - description
      - content
      - enabled
    ImportAgentResponse:
      type: object
      properties:
        aiId:
          type: string
          description: Identifier of the newly created agent.
        warnings:
          type: array
          items:
            type: string
          description: Non-fatal issues encountered during import, such as model substitution or skipped skills.
      required:
      - aiId
      - warnings
    AIEditorUser:
      type: object
      properties:
        id:
          type:
          - string
          - 'null'
        name:
          type: string
        email:
          type: string
    AIProfile:
      type: object
      properties:
        headline:
          type: string
        description:
          type: string
        features:
          type: array
          items:
            $ref: '#/components/schemas/AIProfileFeature'
        showCharacter:
          type: boolean
        showTraining:
          type: boolean
        showPersonality:
          type: boolean
        trainingDescription:
          type: string
        conversations:
          type: array
          items:
            type: object
        socialImage:
          type: string
        idleVideo:
          type: string
        idleVideoError:
          type: string
        showSpeaker:
          type: boolean
        showVideo:
          type: boolean
        voice:
          type: string
        voiceEngine:
          type: string
        videoModel:
          type: string
    AgentBundleAgentConfig:
      type: object
      description: Portable agent configuration included in an export bundle.
      properties:
        name:
          type: string
        introduction:
          type:
          - string
          - 'null'
        description:
          type: string
        instructions:
          type: string
        seed:
          type: string
          description: Legacy field from older exports. Merged into instructions on import.
        src:
          type: string
        modelId:
          type: string
        visibility:
          $ref: '#/components/schemas/AIVisibility'
        listInOrgCatalog:
          type: boolean
        listInPublicCatalog:
          type: boolean
        listInTenantCatalog:
          type: boolean
        chatLogsVisible:
          type: boolean
        generateCitations:
          type: boolean
        intermediateStepsVisible:
          type: boolean
        options:
          $ref: '#/components/schemas/AIModelOptions'
        profile:
          $ref: '#/components/schemas/AIProfile'
      required:
      - name
      - introduction
      - description
      - instructions
      - src
      - modelId
      - visibility
      - listInOrgCatalog
      - listInPublicCatalog
      - listInTenantCatalog
      - chatLogsVisible
      - generateCitations
      - intermediateStepsVisible
      - options
      - profile
    DataSourceRefreshPeriod:
      type: string
      description: How frequently the data source should be refreshed.
      enum:
      - NEVER
      - DAILY
      - WEEKLY
      - MONTHLY
    AgentBundleToolConfig:
      type: object
      properties:
        name:
          type: string
        type:
          $ref: '#/components/schemas/ToolType'
        data:
          type:
          - object
          - 'null'
          additionalProperties: true
          description: Tool configuration with secrets stripped.
      required:
      - name
      - type
      - data
    ListAIsRequestScope:
      type: string
      enum:
      - PRIVATE
      - OWNED
      - GROUP
      - SHARED
      - ORGANIZATION
      - PUBLIC
      - ALL
    AIProfileFeature:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
    ShareAIRequest:
      type: object
      properties:
        emails:
          type: string
      required:
      - emails
    ToolType:
      type: string
      enum:
      - API_FUNCTION
      - SQL
      - PYTHON
      - USER_INPUT
      - KNOWLEDGE_RETRIEVAL
      - WEB_SEARCH
      - MCP_SERVER
      - IMAGE_GENERATION
      - USER_CONTEXT
      - SPREADSHEET
      - BROWSER
      - SANDBOX
      - OPENAI_FUNCTION