Skip to content

Integrations API

Manage custom integration code for your prompts.

Endpoints

Create Integration

POST /v1/prompts/{prompt_name}/integrations

Create a new integration for a prompt.

Request:

json
{
  "language": "python",
  "code": "def pre_process(input_variables):\n    return input_variables\n\ndef post_process(llm_output, context):\n    return {'output': llm_output}"
}

Response:

json
{
  "data": {
    "id": "integration_abc123",
    "prompt_name": "customer-classifier",
    "language": "python",
    "version": 1,
    "created_at": "2025-01-15T10:00:00Z"
  }
}

Get Integration

GET /v1/prompts/{prompt_name}/integrations

Get the current integration for a prompt.

Response:

json
{
  "data": {
    "id": "integration_abc123",
    "prompt_name": "customer-classifier",
    "language": "python",
    "code": "def pre_process(input_variables):\n    return input_variables",
    "version": 1,
    "created_at": "2025-01-15T10:00:00Z"
  }
}

Update Integration

PATCH /v1/prompts/{prompt_name}/integrations

Update integration code (creates new version).

Request:

json
{
  "code": "def pre_process(input_variables):\n    # Updated code\n    return input_variables"
}

Response:

json
{
  "data": {
    "version": 2,
    "updated_at": "2025-01-15T11:00:00Z"
  }
}

Delete Integration

DELETE /v1/prompts/{prompt_name}/integrations

Delete integration code.

Response:

json
{
  "data": {
    "deleted": true
  }
}

Test Integration

POST /v1/prompts/{prompt_name}/integrations/test

Test integration code without executing the full prompt.

Request:

json
{
  "input_variables": {
    "message": "Test message"
  },
  "mock_llm_output": "Test LLM response"
}

Response:

json
{
  "data": {
    "pre_process_output": {
      "message": "Test message",
      "cleaned": true
    },
    "post_process_output": {
      "parsed": "Test LLM response",
      "success": true
    },
    "execution_time_ms": 45,
    "errors": []
  }
}

Upload Dependencies

POST /v1/prompts/{prompt_name}/integrations/dependencies

Upload custom dependencies for integration code.

Request (multipart/form-data):

bash
curl -X POST https://mandatum-api.gavelinivar.com/api/v1/prompts/classifier/integrations/dependencies \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@requirements.txt"

Response:

json
{
  "data": {
    "filename": "requirements.txt",
    "packages": ["beautifulsoup4==4.12.2", "lxml==4.9.3"],
    "uploaded_at": "2025-01-15T10:00:00Z"
  }
}

Examples

Python SDK

python
from mandatum import Mandatum

client = Mandatum(api_key="your-api-key")

# Create integration
integration_code = """
def pre_process(input_variables):
    message = input_variables.get('message', '').strip()
    return {'message': message}

def post_process(llm_output, context):
    import json
    try:
        result = json.loads(llm_output)
        return {'success': True, 'data': result}
    except json.JSONDecodeError:
        return {'success': False, 'raw': llm_output}
"""

integration = client.integrations.create(
    prompt_name="classifier",
    language="python",
    code=integration_code
)

# Test integration
test_result = client.integrations.test(
    prompt_name="classifier",
    input_variables={"message": "test"},
    mock_llm_output='{"category": "billing"}'
)

print(test_result)

# Upload dependencies
with open('requirements.txt', 'rb') as f:
    client.integrations.upload_dependencies(
        prompt_name="classifier",
        dependencies_file=f
    )

TypeScript SDK

Coming Soon

A TypeScript/JavaScript SDK is in development. For now, use the REST API directly.

See Also