Skip to main content
Ark provides official, fully-typed SDKs in four languages, plus an MCP server for AI assistants. All SDKs offer consistent behavior, complete API coverage, and excellent developer experience.

AI Assistants (MCP)

MCP Server

New: Use Ark with Claude, Cursor, VS Code, and other AI assistants. Send emails using natural language — no code required.
"Send a welcome email to [email protected]"

Language SDKs

Quick Installation

pip install ark-email
For async support with aiohttp:
pip install ark-email[aiohttp]

Send Your First Email

import os
from ark import Ark

client = Ark(api_key=os.environ.get("ARK_API_KEY"))

email = client.emails.send(
    from_="[email protected]",
    to=["[email protected]"],
    subject="Hello from Ark!",
    html="<h1>Welcome!</h1><p>You're all set.</p>"
)

print(f"Email sent: {email.data.id}")

SDK Features

All official Ark SDKs share these capabilities:
Every SDK includes complete type definitions. Python has full type hints, Node.js has TypeScript definitions, Ruby has Sorbet RBI files, and Go has native types.Your IDE will provide autocomplete, inline documentation, and catch errors before runtime.
SDKs automatically retry failed requests with exponential backoff for:
  • Connection errors
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 5xx Server Errors
Default: 2 retries. Configurable per-client or per-request.
Default timeout is 60 seconds. Customize globally or per-request:
client = Ark(timeout=30.0)  # 30 seconds

# Per-request
client.emails.send(..., timeout=10.0)
SDKs throw typed exceptions for different error scenarios:
StatusException
400BadRequestError
401AuthenticationError
403PermissionDeniedError
404NotFoundError
422UnprocessableEntityError
429RateLimitError
5xxInternalServerError
NetworkAPIConnectionError
Access HTTP headers, status codes, and raw response data when needed:
response = client.emails.with_raw_response.send(...)
print(response.headers)
email = response.parse()
Enable debug logging to troubleshoot issues:
export ARK_LOG=debug
Or in code:
import logging
logging.getLogger("ark").setLevel(logging.DEBUG)

Async Support

import asyncio
from ark import AsyncArk

async def main():
    client = AsyncArk()

    email = await client.emails.send(
        from_="[email protected]",
        to=["[email protected]"],
        subject="Async email!",
        html="<p>Sent asynchronously</p>"
    )
    print(f"Sent: {email.data.id}")

asyncio.run(main())
Install with pip install ark-email[aiohttp] for best async performance.

Source Code & Issues

All SDKs are open source. Report issues or contribute:
SDKRepositoryLicense
Pythongithub.com/ArkHQ-io/ark-pythonApache-2.0
Node.jsgithub.com/ArkHQ-io/ark-nodejsApache-2.0
Rubygithub.com/ArkHQ-io/ark-rubyApache-2.0
Gogithub.com/ArkHQ-io/ark-goApache-2.0

Next Steps