Metadata-Version: 2.4
Name: merge-gateway-python
Version: 0.2.0
Summary: Python SDK for the Merge Gateway API
License-Expression: MIT
Project-URL: Homepage, https://github.com/merge-api/merge-gateway-python-sdk
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.25.0
Requires-Dist: pydantic>=2.0
Dynamic: license-file

# merge-gateway-python

Python SDK for the [Merge Gateway](https://merge.dev) API.

## Installation

```bash
pip install merge-gateway-python

# Local development install
pip install -e ./
```

## Quick start

```python
from merge_gateway import MergeGateway

client = MergeGateway(
    api_key="sk-...",
    base_url="https://api-gateway-develop.merge.dev/v1",  # default
)
```

## Usage

### Responses

```python
# Non-streaming
response = client.responses.create(
    model="openai/gpt-4o",
    input=[{"type": "message", "role": "user", "content": "Tell me a bedtime story about a otter."}],
)
print(response.output[0].content)

# Streaming
stream = client.responses.create(
    model="openai/gpt-4o",
    input=[{"type": "message", "role": "user", "content": "Hello"}],
    stream=True,
)
for event in stream:
    print(event)
```

### Models

```python
# List models (with optional pagination)
models = client.models.list()
for m in models.data:
    print(m.id, m.display_name)

# Filter by provider
openai_models = client.models.list(provider="openai")

# Retrieve a specific model
model = client.models.retrieve("openai/gpt-4o")
```

### Embeddings

```python
result = client.embeddings.create(
    model="openai/text-embedding-3-small",
    input="The food was delicious",
    encoding_format="float",
)
print(result.data[0].embedding)
```

### Error handling

```python
from merge_gateway import AuthenticationError, RateLimitError

try:
    response = client.responses.create(model="openai/gpt-4o", input="Hi")
except AuthenticationError:
    print("Check your API key")
except RateLimitError:
    print("Slow down!")
```

## Publishing to PyPI

```bash
python -m build
twine upload dist/*
```
