Docs Quickstart

Quickstart

This guide walks you from zero to a working policy plane in under 15 minutes. You'll configure the proxy, define your first policy, initialize a tenant context, and verify that redaction is working correctly.

Prerequisites
  • Meibel API key (received after access request)
  • An OpenAI-compatible LLM endpoint (OpenAI, Azure OpenAI, Anthropic, local Ollama, etc.)
  • curl or any HTTP client for testing

1. Proxy setup

The Meibel proxy is a drop-in intercept for any OpenAI-compatible client. Set MEIBEL_PROXY_URL as your base URL:

Environment variables
# Your Meibel API key from the dashboard
MEIBEL_API_KEY=meibel_live_xxxxxxxxxxxxxxxx

# Proxy base URL (use this instead of api.openai.com/v1)
MEIBEL_PROXY_URL=https://proxy.meibelai.org/v1/openai

2. First policy config

Create a policy file in YAML. The policy DSL defines entity detection rules, redaction behavior, and audit options. Start with the defaults:

policy.yaml
version: "1"
policy_id: finance-default-v1

entities:
  # Built-in entity groups — enable/disable as needed
  - group: pii-standard    # name, email, phone, ssn, dob
    action: redact
    mask_format: [TYPE_INDEX]
  - group: financial       # account numbers, CUSIPs, AUM values
    action: redact
    mask_format: [FIN_TYPE_INDEX]

audit:
  enabled: true
  store_hash: true
  store_entity_types: true    # entity labels stored, not values
  store_raw_prompt: false     # raw prompt never leaves your network

Apply the policy to your tenant context via API:

curl
curl -X PUT https://proxy.meibelai.org/v1/tenants/finance-wealth/policy \
  -H "Authorization: Bearer $MEIBEL_API_KEY" \
  -H "Content-Type: application/yaml" \
  --data-binary @policy.yaml

3. Initialize a tenant context

Tenant contexts isolate LLM calls by department, client, or business unit. Create your first tenant:

curl
curl -X POST https://proxy.meibelai.org/v1/tenants \
  -H "Authorization: Bearer $MEIBEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tenant_id": "finance-wealth",
    "policy_id": "finance-default-v1",
    "rate_limit": { "requests_per_minute": 500 }
  }'

4. Verify redaction is working

Send a test prompt containing known PII and confirm the audit log shows redaction:

Python — test call through proxy
import openai

client = openai.OpenAI(
    api_key="sk-...",
    base_url="https://proxy.meibelai.org/v1/openai",
    default_headers={"X-Meibel-Tenant": "finance-wealth"}
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{
        "role": "user",
        # SSN will be redacted to [SSN_001] before reaching OpenAI
        "content": "Review account for John Doe, SSN 123-45-6789"
    }]
)
# Model received: "Review account for [PERSON_NAME_001], SSN [SSN_001]"
print(response.choices[0].message.content)

5. Query the audit log

After sending calls, verify the audit log captured the redaction event:

curl — audit query
curl "https://proxy.meibelai.org/v1/audit?tenant_id=finance-wealth&limit=5" \
  -H "Authorization: Bearer $MEIBEL_API_KEY"
Response
{
  "records": [{
    "request_id":   "req_01HX9K2B4Y",
    "tenant_id":    "finance-wealth",
    "model_version": "gpt-4o-2024-08-06",
    "policy_id":    "finance-default-v1",
    "policy_verdict": "REDACTED",
    "pii_findings": ["PERSON_NAME", "SSN"],
    "redaction_count": 2,
    "prompt_hash":  "sha256:a3f9...",
    "created_at":   "2025-11-14T14:23:08Z"
  }]
}
You're live

Calls through the proxy are now policy-controlled and audit-logged. Next: configure additional tenant contexts, tune entity patterns for your domain, or review the API reference.