AppMage

AI Configuration

This endpoint group provides methods for retrieving the AppBuilder AI configuration, including details about AI providers, available models, default model settings, and task-specific recommendations. It exposes configuration details necessary for clients to interact with AI functionalities without exposing sensitive API keys.

Endpoints

POST /api/rpc (Method: AIConfigRpc.getAIConfiguration)

  • Description: Retrieves the entire AI configuration (providers, models, defaults). Sensitive keys like API key env var names are included, but actual keys are not.

  • Request Body:

    {
      "method": "AIConfigRpc.getAIConfiguration",
      "params": {}
    }
  • Parameters:

    Name Type Required Description
    This method takes no parameters.
  • Response:

    {
      "success": true,
      "data": {
        "providers": [
          {
            "name": "OpenAI",
            "type": "openai",
            "baseUrl": "https://api.openai.com/v1",
            "apiKeyEnvVar": "OPENAI_API_KEY",
            "models": [...]
          }
        ],
        "models": [
          {
            "id": "gpt-4o",
            "name": "GPT-4o",
            "provider": "OpenAI",
            "type": "chat",
            "endpoints": ["chat"],
            "capabilities": ["code_generation", "vision"],
            "modality": "multimodal",
            "inputModalities": ["text-in", "image-in"],
            "outputModalities": ["text-out"],
            "contextWindow": 128000
          }
        ],
        "defaults": {
          "chat": "gpt-4o",
          "embedding": "text-embedding-ada-002",
          "tts": "tts-1"
        },
        "categories": ["chat", "embedding", "image_generation"],
        "recommendations": {
          "summarization": {
            "modelId": "gpt-4o",
            "reason": "Excellent for concise summaries."
          }
        }
      }
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getAIConfiguration",
        "params": {}
      }'

POST /api/rpc (Method: AIConfigRpc.getModels)

  • Description: Retrieves a list of AI models, optionally filtered by various criteria.

  • Request Body:

    {
      "method": "AIConfigRpc.getModels",
      "params": {
        "capabilities": ["tts", "transcription", "image_generation"],
        "endpoints": ["chat", "realtime", "embedding"],
        "provider": "OpenAI",
        "type": "chat",
        "modality": "multimodal",
        "supportsModalities": ["text-in", "image-out"]
      }
    }
  • Parameters:

    Name Type Required Description
    capabilities Array<String> No Filter by model capabilities (e.g., ['tts', 'transcription', 'image_generation']).
    endpoints Array<String> No Filter by model API endpoints it supports (e.g., ['chat', 'realtime', 'embedding']).
    provider String No Filter by provider name (e.g., 'OpenAI', 'Google').
    type String No Filter by model type (e.g., 'chat', 'embedding', 'tts', 'image_generation').
    modality String No Filter by primary modality (e.g., 'text', 'multimodal', 'audio_to_text').
    supportsModalities Array<String> No Filter by models that support ALL listed modalities (e.g., ['text-in', 'image-out']).
  • Response:

    {
      "success": true,
      "data": [
        {
          "id": "gpt-4o",
          "name": "GPT-4o",
          "provider": "OpenAI",
          "type": "chat",
          "endpoints": ["chat"],
          "capabilities": ["code_generation", "vision"],
          "modality": "multimodal",
          "inputModalities": ["text-in", "image-in"],
          "outputModalities": ["text-out"],
          "contextWindow": 128000
        },
        {
          "id": "claude-3-opus-20240229",
          "name": "Claude 3 Opus",
          "provider": "Anthropic",
          "type": "chat",
          "endpoints": ["chat"],
          "capabilities": ["vision"],
          "modality": "multimodal",
          "inputModalities": ["text-in", "image-in"],
          "outputModalities": ["text-out"],
          "contextWindow": 200000
        }
      ]
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getModels",
        "params": {
          "provider": "OpenAI",
          "type": "chat"
        }
      }'

POST /api/rpc (Method: AIConfigRpc.getProviders)

  • Description: Retrieves the list of configured AI providers.

  • Request Body:

    {
      "method": "AIConfigRpc.getProviders",
      "params": {}
    }
  • Parameters:

    Name Type Required Description
    This method takes no parameters.
  • Response:

    {
      "success": true,
      "data": [
        {
          "name": "OpenAI",
          "type": "openai",
          "baseUrl": "https://api.openai.com/v1",
          "apiKeyEnvVar": "OPENAI_API_KEY"
        },
        {
          "name": "Google",
          "type": "google",
          "baseUrl": "https://generativelanguage.googleapis.com",
          "apiKeyEnvVar": "GOOGLE_API_KEY"
        }
      ]
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getProviders",
        "params": {}
      }'

POST /api/rpc (Method: AIConfigRpc.getDefaultModels)

  • Description: Retrieves the default AI models for various tasks or types.

  • Request Body:

    {
      "method": "AIConfigRpc.getDefaultModels",
      "params": {}
    }
  • Parameters:

    Name Type Required Description
    This method takes no parameters.
  • Response:

    {
      "success": true,
      "data": {
        "chat": "gpt-4o",
        "embedding": "text-embedding-ada-002",
        "image_generation": "dall-e-3",
        "tts": "tts-1",
        "transcription": "whisper-1"
      }
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getDefaultModels",
        "params": {}
      }'

POST /api/rpc (Method: AIConfigRpc.getProviderSettings)

  • Description: Retrieves settings for a specific AI provider or all provider settings.

  • Request Body:

    {
      "method": "AIConfigRpc.getProviderSettings",
      "params": {
        "providerName": "OpenAI"
      }
    }
  • Parameters:

    Name Type Required Description
    providerName String No If provided, returns settings for a specific provider. Otherwise, returns settings for all configured providers.
  • Response:

    {
      "success": true,
      "data": {
        "OpenAI": {
          "name": "OpenAI",
          "type": "openai",
          "baseUrl": "https://api.openai.com/v1",
          "apiKeyEnvVar": "OPENAI_API_KEY"
        },
        "Google": {
          "name": "Google",
          "type": "google",
          "baseUrl": "https://generativelanguage.googleapis.com",
          "apiKeyEnvVar": "GOOGLE_API_KEY"
        }
      }
    }

    Or, if providerName is specified:

    {
      "success": true,
      "data": {
        "name": "OpenAI",
        "type": "openai",
        "baseUrl": "https://api.openai.com/v1",
        "apiKeyEnvVar": "OPENAI_API_KEY"
      }
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getProviderSettings",
        "params": {
          "providerName": "OpenAI"
        }
      }'

POST /api/rpc (Method: AIConfigRpc.getModelCategories)

  • Description: Retrieves model categories.

  • Request Body:

    {
      "method": "AIConfigRpc.getModelCategories",
      "params": {}
    }
  • Parameters:

    Name Type Required Description
    This method takes no parameters.
  • Response:

    {
      "success": true,
      "data": [
        "chat",
        "embedding",
        "image_generation",
        "tts",
        "transcription",
        "code_generation"
      ]
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getModelCategories",
        "params": {}
      }'

POST /api/rpc (Method: AIConfigRpc.getTaskRecommendations)

  • Description: Retrieves task-specific model recommendations.

  • Request Body:

    {
      "method": "AIConfigRpc.getTaskRecommendations",
      "params": {
        "taskName": "summarization"
      }
    }
  • Parameters:

    Name Type Required Description
    taskName String No If provided, returns recommendation for a specific task. Otherwise, returns all recommendations.
  • Response:

    {
      "success": true,
      "data": {
        "summarization": {
          "modelId": "gpt-4o",
          "reason": "Excellent for concise summaries.",
          "alternatives": [
            { "modelId": "claude-3-opus-20240229", "reason": "Good for longer documents." }
          ]
        },
        "code_generation": {
          "modelId": "gpt-4o",
          "reason": "Strong performance in generating and understanding code."
        }
      }
    }

    Or, if taskName is specified:

    {
      "success": true,
      "data": {
        "modelId": "gpt-4o",
        "reason": "Excellent for concise summaries.",
        "alternatives": [
          { "modelId": "claude-3-opus-20240229", "reason": "Good for longer documents." }
        ]
      }
    }
  • Example (cURL):

    curl -X POST https://api.example.com/api/rpc \
      -H "Content-Type: application/json" \
      -H "X-API-Key: YOUR_API_KEY" \
      -d '{
        "method": "AIConfigRpc.getTaskRecommendations",
        "params": {
          "taskName": "summarization"
        }
      }'