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, conversation_id=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.18.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.18.0
File Size Uploaded
hail_sdk-0.18.0.tar.gz 41.1 kB Details

Built distribution (wheel)

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

Total release size: 69.3 kB

Release files / hail_sdk-0.18.0.tar.gz

Download URL hail_sdk-0.18.0.tar.gz
Size 41.1 kB
Tags Source
SHA-256 checksum
How to use checksums
739673f1af397d45c19d9d2f4adc3b26eb42347a04db90207c449cd31c1259ad
BLAKE2b-256 checksum
How to use checksums
52a54bd44e6a401d40a0f4e551096c3123152d3b93f00f3337522d5c878409af
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 6, 2026.

Transparency log

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

Download URL hail_sdk-0.18.0-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c52f2b938bed40daf1bcc359ad61ed828ddfabe0e39587ebabede8370b5bc61
BLAKE2b-256 checksum
How to use checksums
8a1e35b15211d9c093eb5788d97664abbf50360755c7c7365ec2782a88e1d423
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 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.18.0 This release

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

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