Skip to main content

hail-sdk

Python SDK for Hail — give your AI agent a voice, a real phone number, and an inbox.

Install

pip install hail-sdk

Requires Python 3.11+.

Quickstart

import asyncio
from hail import Client

async def main():
    async with Client(api_key="sk-...") as client:
        # Place an outbound call.
        call = await client.calls.create(
            to="+15551234567",
            system_prompt="You are calling to confirm a reschedule.",
        )
        print("queued", call.id)

        async for event in client.events.tail(id=f"call:{call.id}"):
            print(event.kind, event.payload)

        # Send an outbound email.
        email = await client.emails.create(
            to=["alice@example.com"],
            subject="Welcome",
            body_text="Thanks for signing up.",
        )
        print(email.status, email.from_address)

asyncio.run(main())

api_key defaults to $HAIL_API_KEY; base_url defaults to $HAIL_API_URL (falling back to https://api.hail.so).

API surface

Calls

  • client.calls.create(*, to, system_prompt=None, llm=None, from_=None, first_message=None, metadata=None, idempotency_key=None) — originate an outbound call. Pass either system_prompt (mode A) or a full llm block (mode B). idempotency_key defaults to a fresh UUIDv4.
  • client.calls.get(call_id) — fetch a single call.
  • client.calls.list(*, cursor=None, limit=50, status=None, to=None) — cursor-paginated org list.

Emails

  • client.emails.create(*, to, subject, body_text=None, body_html=None, from_=None, cc=None, bcc=None, reply_to=None, metadata=None, idempotency_key=None): send an outbound email. At least one of body_text / body_html is required. from_ is optional while the org has one verified sender; with several the server returns 422 and you must name one (read default_from from client.email_domains.list()). With none it auto-mints a hail-mail address (operator-configured). idempotency_key defaults to a fresh UUIDv4.
  • client.emails.get(email_id) — fetch a single email.
  • client.emails.list(*, cursor=None, limit=50, status=None) — cursor-paginated org list.

Identity

  • client.whoami() — who the API key belongs to: auth_kind, organization_id, user_id, email, name. The user fields are None for a shared operator key. Use email as reply_to so replies reach the person, not the sending domain.

Events

  • client.events.list(*, id=None, kind=None, cursor=None, limit=100) — one-shot fetch of GET /events. id is a typed <type>:<uuid> string (v1 only supports call:).
  • client.events.tail(*, id=None, kind=None, interval_seconds=0.5, follow=True) — async-iterator tail; auto-exits on terminal call status when narrowed to id=call:<uuid>.

Errors

All SDK errors derive from hail.HailError. HTTP-status-coded errors carry .status_code, .detail, and .response_text:

  • HailAuthError (401)
  • HailNotFoundError (404)
  • HailIdempotencyConflict (409)
  • HailValidationError (422)
  • HailServerError (5xx, after retry budget)
  • HailClientError (other 4xx)
  • HailMalformedResourceId — local validation of <type>:<uuid> strings
  • HailConfigError — no API key supplied or discoverable

Retries

GET/HEAD/PUT/DELETE — and any POST/PATCH carrying an Idempotency-Key — are retried up to 3 times on 5xx with exponential backoff (0.5s, 1.0s, 2.0s) plus jitter, honoring Retry-After when present. Mutating verbs without an idempotency key fail fast on 5xx so a duplicate side effect can't be silently introduced.

License

AGPL-3.0-or-later.

Metadata

Release files for hail-sdk 0.20.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hail-sdk 0.20.0
File Size Uploaded Provenance
hail_sdk-0.20.0.tar.gz 41.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hail-sdk 0.20.0
File Interpreter ABI Platform
hail_sdk-0.20.0-py3-none-any.whl Python 3 none any Details

Total release size: 70.6 kB

Release files / hail_sdk-0.20.0.tar.gz

Download URL hail_sdk-0.20.0.tar.gz
Size 41.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7e9fffea36768c922a3f24f026ca9eb86ac952b89d53eaa67229ecbd1923e4d1
BLAKE2b-256 checksum
How to use checksums
9580822d7773bf50582465f465df5a65f9b54c211c5430ff3e5a141cacc12bb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / hail_sdk-0.20.0-py3-none-any.whl

Download URL hail_sdk-0.20.0-py3-none-any.whl
Size 28.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d922375f47b4997bc6281bafb370fe27de36b7344efbf44d27fca1f8252203d
BLAKE2b-256 checksum
How to use checksums
3a9a7fe7b73833143f6eb72bbb70d691c7102ce40003dd8b75319bfb72a7f42c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for hail-sdk 0.20.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hail_sdk-0.20.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page