jaxl-python


Namejaxl-python JSON
Version 0.0.12 PyPI version JSON
download
home_pagehttps://github.com/jaxl-innovations-private-limited/jaxl-python
SummaryOfficial Python SDK and CLI for interfacing with the Jaxl API. Manage calls, messages, IVRs, devices, teams, payments, campaigns, streaming transcriptions and AI Agents. Built on OpenAPI, it offers both generated API clients and Pythonic wrappers for ease of use.
upload_time2025-10-09 03:56:08
maintainerNone
docs_urlNone
authorJaxl Innovations Private Limited
requires_python>=3.9
license'Proprietary'
keywords jaxl api client sdk openapi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Jaxl CLI & Jaxl Python API Client

Use Jaxl from Python code or directly via the `jaxl` command-line tool.

1. [Install](#install)
2. [JAXL CLI](#jaxl-cli)
   - [Setup](#setup)
   - [Verify API Credentials & Auth Token](#verify-api-credentials--auth-token)
   - [Check Account Balance](#check-account-balance)
   - [Create an IVR](#create-an-ivr)
   - [Create a hangup IVR](#create-a-hangup-ivr)
   - [Configure IVR Options](#configure-ivr-options)
   - [List IVRs](#list-ivrs)
   - [List Purchased Jaxl Numbers](#list-purchased-jaxl-numbers)
   - [Assign a Phone Number to IVR by ID](#assign-a-phone-number-to-ivr-by-id)
   - [Place Outgoing Cellular Call with Existing IVR](#place-outgoing-cellular-call-with-existing-ivr)
   - [Place Outgoing Cellular Call with Ad-hoc IVR](#place-outgoing-cellular-call-with-ad-hoc-ivr)
   - [Dial-out Multi-Party Conference between Cellular Numbers](#dial-out-multi-party-conference-between-cellular-numbers)
   - [Dial-out Agent Team and Cellular Numbers](#dial-out-agent-team-and-cellular-numbers)
   - [Dial-out 2-Party Conference with Ad-hoc IVR](#dial-out-2-party-conference-with-ad-hoc-ivr)
   - [Add External Phone Number to an Active Call](#add-external-phone-number-to-an-active-call)
   - [Add Agent to an Active Call](#add-agent-to-an-active-call)
   - [Remove External Phone Number from an Active Call](#remove-external-phone-number-from-an-active-call)
   - [Remove Agent from an Active Call](#remove-agent-from-an-active-call)
   - [Send Text Prompts (TTS) in an Active Call](#send-text-prompts-tts-in-an-active-call)
   - [Play Audio File in an Active Call](#play-audio-file-in-an-active-call)
   - [Mute a Participant in an Active Call](#mute-a-participant-in-an-active-call)
   - [Unmute a Participant in an Active Call](#unmute-a-participant-in-an-active-call)
   - [Hold a Participant in an Active Call](#hold-a-participant-in-an-active-call)
   - [Unhold a Participant in an Active Call](#unhold-a-participant-in-an-active-call)
   - [Receive Call Events via Webhook IVRs](#receive-call-events-via-webhook-ivrs)
   - [Realtime Streaming Audio](#realtime-streaming-audio)
   - [Realtime Streaming Speech Segments](#realtime-streaming-speech-segments)
   - [Realtime Streaming Transcriptions per Speech Segment](#realtime-streaming-transcriptions-per-speech-segment)
   - [AI Agent: Realtime Transcriptions STT ➡️ LLM/MCP ➡️ TTS](#ai-agent-realtime-transcriptions-stt-️-llmmcp-️-tts)
   - [List Subscriptions Payments](#list-subscriptions-payments)
   - [List Consumable Payments](#list-consumable-payments)
3. [Jaxl Python SDK](#jaxl-python-sdk)
   - [SDK Example Usage](#sdk-example-usage)
4. [JAXL HTTP Webhook Protocol](./SPECIFICATION.md)
5. [SDK Documentation](#sdk-documentation)
6. [Status](#status)

## Install

`pip install -U jaxl-python`

## JAXL CLI

```bash
jaxl -h
usage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams} ...

Jaxl CLI

positional arguments:
  {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams}
    accounts            Manage Accounts
    apps                Manage Apps for Webhooks and Streaming audio/speech/transcriptions.
    calls               Manage Calls (Domestic & International Cellular, App-to-App)
    campaigns           Manage Campaigns
    devices             Manage Devices
    ivrs                Manage IVRs (Interactive Voice Response)
    kycs                Manage KYCs
    members             Manage Members
    messages            Manage Messages (SMS, WA, RCS, Email, App-to-App)
    notifications       Manage Notifications (Android, iOS, Web)
    payments            Manage Payments
    phones              Manage Phones (Landline, Mobile, TollFree)
    teams               Manage Teams (Managers, Phones)

options:
  -h, --help            show this help message and exit
```

### Setup

You will require the following to successfully run `jaxl` command line tool:

- `JAXL_API_CREDENTIALS`: Required to connect with Jaxl API Infrastructure
- `JAXL_API_AUTH_TOKEN`: Ensure necessary permissions are added to generated auth token.

Please visit [Jaxl Business Website](https://business.jaxl.com) or download the [Jaxl Business Android](https://play.google.com/store/apps/details?id=com.jaxl.business) or [Jaxl Business iOS](https://apps.apple.com/app/id6451118240) mobile application to access your credentials and auth tokens.

Finally, setup following environment variables when trying `jaxl` command line.

```bash
export JAXL_API_CREDENTIALS=/path/to/jaxl-api-credentials.json
export JAXL_API_AUTH_TOKEN="....authentication token...."
```

### Verify API Credentials & Auth Token

```bash
jaxl accounts me
```

### Check Account Balance

```bash
jaxl accounts balance
```

### Create an IVR

```bash
jaxl ivrs create \
  --message "Hello, we are calling via Jaxl IVR demo created from CLI"
```

### Create a hangup IVR

This IVR will speak the message and then hangup the call.

```bash
jaxl ivrs create \
  --message "Hello, we are calling via Jaxl IVR demo created from CLI" \
  --hangup
```

### Configure IVR Options

This IVR option uses `--next` to send user to another IVR.

```bash
jaxl ivrs options configure \
  --ivr <IVR ID TO CONFIGURE> \
  --input 0 \
  --message "Press 0 to repeat this menu" \
  --next <NEXT IVR ID>
```

> Use &lt;IVR ID TO CONFIGURE&gt; as the &lt;NEXT IVR ID&gt; to complete the "repeat this menu" experience.

One of the CTA key flag must be provided. Allowed CTA keys are:

- `--next`: Send to another IVR
- `--phone`: Send to an external phone number
- `--devices`: Send to devices by ID
- `--appusers`: Send to app users (org employees) by ID
- `--teams`: Send to teams by ID

### List IVRs

```bash
jaxl ivrs list
```

### List Purchased Jaxl Numbers

```bash
jaxl phones list
```

You can also search for a specific purchased number:

```bash
jaxl phones list --e164 "+91<Purchased Jaxl Number>"
```

### Assign a Phone Number to IVR by ID

All incoming calls to this number will send user to the assigned IVR.

```bash
jaxl phones ivrs \
  --e164 "+91<Purchased Jaxl Number>" \
  --ivr <IVR ID>
```

### Place Outgoing Cellular Call with Existing IVR

Below command will execute the following flow:

- Places a call to &lt;Callee Number&gt;
- When answered sends them to an existing IVR ID
- Once IVR finishes, call continues to CTA returned by IVR

```bash
jaxl calls create \
  --to "+91<Callee Number>" \
  --from "+91<Purchased Jaxl Number>" \
  --ivr <IVR ID>
```

### Place Outgoing Cellular Call with Ad-hoc IVR

Below command will execute the following flow:

- Creates an Ad-hoc IVR using `--message` and `--option` flags
- Places a call to <Callee Number>
- When answered sends callee to the ad-hoc IVR
- Once IVR finishes, call continues to CTA returned by IVR

```bash
jaxl calls create \
  --to "+91<Callee Number>" \
  --from "+91<Purchased Jaxl Number>" \
  --message "Hello, we are calling you from MyCompany" \
  --option "1=Press 1 for sales:team=<Sales Team ID>" \
  --option "2=Press 2 for HR department:team=<HR Team ID>
```

## Dial-out Multi-Party Conference between Cellular Numbers

Below command will execute the following flow:

- Dials out all `--to` participants in parallel
- Connects them together as they answer the call
- Ends the call when one but all others have hanged up the call

```bash
jaxl calls create \
  --to "+91<Doctors Number>" \
  --to "+91<Patient Number>" \
  --to "+91<Supervisor Number>" \
  --from "+91<Purchased Jaxl Number>"
```

### Dial-out Agent Team and Cellular Numbers

Below command will execute the following flow:

- Dials out multiple teams of doctors & patient in parallel
- Connects the patient with first doctor to pick the call from the teams
- Doctors are called on their cellular number first (if added on Jaxl app),
  followed by an attempt to call on Jaxl app directly (VoIP).
- Calling preference can be controlled per agent (doctor) or team to dictate
  whether to use cellular or voip first to connect with a doctor.

```bash
jaxl calls create \
  --to "teams=<Doctors Team ID1>,<Doctors Team ID2>" \
  --to "+91<Patient Number>"
```

### Dial-out 2-Party Conference with Ad-hoc IVR

Below command will execute the following flow:

- Dials out to Doctor first
- When doctor answers the call, they are asked to press 1 when ready
- If doctor presses 1, a second call is placed to the patient
- Ends the call when one but all others have hanged up the call

```bash
jaxl calls create \
  --to "+91<Doctors Number>" \
  --from "+91<Purchased Jaxl Number>" \
  --message "Hello Doctor, this is a call from MyCompany regarding your appointment with Mr. Patient Name. When ready please, " \
  --option "1=Press 1 to connect with the patient:phone=+91<Patient Number>"
```

### Add External Phone Number to an Active Call

```bash
jaxl calls add --call-id 1234 --phone +91<Mobile Number>
```

### Add Agent to an Active Call

```bash
jaxl calls add --call-id 1234 --agent <someone@mycompany.com>
```

### Remove External Phone Number from an Active Call

```bash
jaxl calls remove --call-id 1234 --phone +91<Mobile Number>
```

### Remove Agent from an Active Call

```bash
jaxl calls remove --call-id 1234 --agent <someone@mycompany.com>
```

### Send Text Prompts (TTS) in an Active Call

```bash
jaxl calls speak --call-id 1234 \
  --prompt "Hello, this text was injected in the middle of an active call" \
  --prompt "Yes its possible to pass in multiple prompt flags" \
  --prompt "Use shorter prompt phrases to keep TTS latency low" \
  --prompt "Avoid using excessively large sentences"
```

### Play Audio File in an Active Call

```bash
jaxl calls play --call-id 1234 --audio /path/to/a/file/on/local/disk/or/public/url
```

> NOTE: Audio file must be in SLIN16 format i.e. 8KHz Mono 16-bit.

### Mute a Participant in an Active Call

Mute a specific cellular user in a call.

```bash
jaxl calls mute --call-id 1234 --phone +91<Mobile Number>
```

Mute an agent (Jaxl App User) in a call.

```bash
jaxl calls mute --call-id 1235 --agent <someone@mycompany.com>
```

### Unmute a Participant in an Active Call

Unmute a specific cellular user in a call.

```bash
jaxl calls unmute --call-id 1234 --phone +91<Mobile Number>
```

Unmute a specific agent (Jaxl App User) in a call.

```bash
jaxl calls unmute --call-id 1235 --agent <someone@mycompany.com>
```

### Hold a Participant in an Active Call

Put a cellular user on-hold in a call

```bash
jaxl calls hold --call-id 1234 --phone +91<Mobile Number>
```

Put an agent on-hold in a call

```bash
jaxl calls hold --call-id 1235 --agent <someone@mycompany.com>
```

### Unhold a Participant in an Active Call

Unhold a cellular user in a call

```bash
jaxl calls unhold --call-id 1234 --phone +91<Mobile Number>
```

Unhold an agent in a call

```bash
jaxl calls unhold --call-id 1235 --agent <someone@mycompany.com>
```

### Receive Call Events via Webhook IVRs

Webhook IVRs can be used to programatically control the lifecycle of incoming and outgoing calls.
Jaxl will invoke configured webhook URL for subscribed call events. Handle the webhook request and
use Jaxl SDK to continue and customise the call flows.

To create a webhook IVR, use a `https://` URL as `--message` flag e.g.

```bash
jaxl ivrs create --message "https://example.com/jaxl-webhook-ivr"
```

Next, assign a number to webhook IVR as shown previously under [Assign a Phone Number to IVR by ID](#assign-a-phone-number-to-ivr-by-id). Now, all incoming calls on the number will start with
webhook before proceeding further.

To control flow of outgoing calls, use webhook IVR ID when placing an outbound call. See [Place Outgoing Cellular Call with Existing IVR](#place-outgoing-cellular-call-with-existing-ivr)

See [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working webhook examples.

### Realtime Streaming Audio

Refer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming audio examples.

### Realtime Streaming Speech Segments

Refer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming speech segments examples.

### Realtime Streaming Transcriptions per Speech Segment

Refer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming transcription per speech segment examples.

### AI Agent: Realtime Transcriptions STT ➡️ LLM/MCP ➡️ TTS

Refer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working AI Agent examples.

### List Subscriptions Payments

```bash
jaxl payments subscriptions list
```

### List Consumable Payments

```bash
jaxl payments consumables total
```

## Jaxl Python SDK

- Jaxl APIs is built upon [OpenAPI specification](https://www.openapis.org/)
- `jaxl-python` contains following Python modules:
  - `jaxl.api.client`: Generated OpenAPI SDK
  - `jaxl.api.resources`: Wrapper methods written to support `jaxl` CLI
  - `jaxl_api_client`: Helper function to retrieve an instance of `JaxlApiClient`

### SDK Example Usage:

```python
from jaxl.api import JaxlApiModule, jaxl_api_client
from jaxl.api.client.api.v1 import v1_calls_list

os.environ.setdefault("JAXL_API_CREDENTIALS", "/path/to/jaxl-api-credentials.json")

os.environ.setdefault("JAXL_API_AUTH_TOKEN", "....authentication token...")

response = v1_calls_list.sync_detailed(
    client=jaxl_api_client(JaxlApiModule.CALL),
    currency=2, # 1=USD, 2=INR
)
```

## SDK Documentation

```
# Clone this repository
git clone git@github.com:jaxl-innovations-private-limited/jaxl-python.git

# Enter cloned repo directory
cd jaxl-python

# Create virtual environment
python3 -m venv .venv

# Activate virtual environment
source .venv/bin/activate

# Install
pip install -e ".[dev]"

# Generate documentation
./docs.sh

# View documentation in browser
open docs/jaxl/index.html
```

## Status

[![pypi version](https://img.shields.io/pypi/v/jaxl-python)](https://pypi.org/project/jaxl-python/)

[![PyPi Monthly](https://img.shields.io/pypi/dm/jaxl-python)](https://pypi.org/project/jaxl-python/)

[![Python 3.x](https://img.shields.io/static/v1?label=Python&message=3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12&color=blue)](https://www.python.org/)

[![Checked with mypy](https://img.shields.io/static/v1?label=MyPy&message=checked&color=blue)](http://mypy-lang.org/)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jaxl-innovations-private-limited/jaxl-python",
    "name": "jaxl-python",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "jaxl, api, client, sdk, openapi",
    "author": "Jaxl Innovations Private Limited",
    "author_email": "engineering@jaxl.com",
    "download_url": "https://files.pythonhosted.org/packages/c7/dc/df014b5093b92aaeafb20a67375c5ca575bfbebfdba5501d1fdc994cd307/jaxl_python-0.0.12.tar.gz",
    "platform": null,
    "description": "# Jaxl CLI & Jaxl Python API Client\n\nUse Jaxl from Python code or directly via the `jaxl` command-line tool.\n\n1. [Install](#install)\n2. [JAXL CLI](#jaxl-cli)\n   - [Setup](#setup)\n   - [Verify API Credentials & Auth Token](#verify-api-credentials--auth-token)\n   - [Check Account Balance](#check-account-balance)\n   - [Create an IVR](#create-an-ivr)\n   - [Create a hangup IVR](#create-a-hangup-ivr)\n   - [Configure IVR Options](#configure-ivr-options)\n   - [List IVRs](#list-ivrs)\n   - [List Purchased Jaxl Numbers](#list-purchased-jaxl-numbers)\n   - [Assign a Phone Number to IVR by ID](#assign-a-phone-number-to-ivr-by-id)\n   - [Place Outgoing Cellular Call with Existing IVR](#place-outgoing-cellular-call-with-existing-ivr)\n   - [Place Outgoing Cellular Call with Ad-hoc IVR](#place-outgoing-cellular-call-with-ad-hoc-ivr)\n   - [Dial-out Multi-Party Conference between Cellular Numbers](#dial-out-multi-party-conference-between-cellular-numbers)\n   - [Dial-out Agent Team and Cellular Numbers](#dial-out-agent-team-and-cellular-numbers)\n   - [Dial-out 2-Party Conference with Ad-hoc IVR](#dial-out-2-party-conference-with-ad-hoc-ivr)\n   - [Add External Phone Number to an Active Call](#add-external-phone-number-to-an-active-call)\n   - [Add Agent to an Active Call](#add-agent-to-an-active-call)\n   - [Remove External Phone Number from an Active Call](#remove-external-phone-number-from-an-active-call)\n   - [Remove Agent from an Active Call](#remove-agent-from-an-active-call)\n   - [Send Text Prompts (TTS) in an Active Call](#send-text-prompts-tts-in-an-active-call)\n   - [Play Audio File in an Active Call](#play-audio-file-in-an-active-call)\n   - [Mute a Participant in an Active Call](#mute-a-participant-in-an-active-call)\n   - [Unmute a Participant in an Active Call](#unmute-a-participant-in-an-active-call)\n   - [Hold a Participant in an Active Call](#hold-a-participant-in-an-active-call)\n   - [Unhold a Participant in an Active Call](#unhold-a-participant-in-an-active-call)\n   - [Receive Call Events via Webhook IVRs](#receive-call-events-via-webhook-ivrs)\n   - [Realtime Streaming Audio](#realtime-streaming-audio)\n   - [Realtime Streaming Speech Segments](#realtime-streaming-speech-segments)\n   - [Realtime Streaming Transcriptions per Speech Segment](#realtime-streaming-transcriptions-per-speech-segment)\n   - [AI Agent: Realtime Transcriptions STT \u27a1\ufe0f LLM/MCP \u27a1\ufe0f TTS](#ai-agent-realtime-transcriptions-stt-\ufe0f-llmmcp-\ufe0f-tts)\n   - [List Subscriptions Payments](#list-subscriptions-payments)\n   - [List Consumable Payments](#list-consumable-payments)\n3. [Jaxl Python SDK](#jaxl-python-sdk)\n   - [SDK Example Usage](#sdk-example-usage)\n4. [JAXL HTTP Webhook Protocol](./SPECIFICATION.md)\n5. [SDK Documentation](#sdk-documentation)\n6. [Status](#status)\n\n## Install\n\n`pip install -U jaxl-python`\n\n## JAXL CLI\n\n```bash\njaxl -h\nusage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams} ...\n\nJaxl CLI\n\npositional arguments:\n  {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams}\n    accounts            Manage Accounts\n    apps                Manage Apps for Webhooks and Streaming audio/speech/transcriptions.\n    calls               Manage Calls (Domestic & International Cellular, App-to-App)\n    campaigns           Manage Campaigns\n    devices             Manage Devices\n    ivrs                Manage IVRs (Interactive Voice Response)\n    kycs                Manage KYCs\n    members             Manage Members\n    messages            Manage Messages (SMS, WA, RCS, Email, App-to-App)\n    notifications       Manage Notifications (Android, iOS, Web)\n    payments            Manage Payments\n    phones              Manage Phones (Landline, Mobile, TollFree)\n    teams               Manage Teams (Managers, Phones)\n\noptions:\n  -h, --help            show this help message and exit\n```\n\n### Setup\n\nYou will require the following to successfully run `jaxl` command line tool:\n\n- `JAXL_API_CREDENTIALS`: Required to connect with Jaxl API Infrastructure\n- `JAXL_API_AUTH_TOKEN`: Ensure necessary permissions are added to generated auth token.\n\nPlease visit [Jaxl Business Website](https://business.jaxl.com) or download the [Jaxl Business Android](https://play.google.com/store/apps/details?id=com.jaxl.business) or [Jaxl Business iOS](https://apps.apple.com/app/id6451118240) mobile application to access your credentials and auth tokens.\n\nFinally, setup following environment variables when trying `jaxl` command line.\n\n```bash\nexport JAXL_API_CREDENTIALS=/path/to/jaxl-api-credentials.json\nexport JAXL_API_AUTH_TOKEN=\"....authentication token....\"\n```\n\n### Verify API Credentials & Auth Token\n\n```bash\njaxl accounts me\n```\n\n### Check Account Balance\n\n```bash\njaxl accounts balance\n```\n\n### Create an IVR\n\n```bash\njaxl ivrs create \\\n  --message \"Hello, we are calling via Jaxl IVR demo created from CLI\"\n```\n\n### Create a hangup IVR\n\nThis IVR will speak the message and then hangup the call.\n\n```bash\njaxl ivrs create \\\n  --message \"Hello, we are calling via Jaxl IVR demo created from CLI\" \\\n  --hangup\n```\n\n### Configure IVR Options\n\nThis IVR option uses `--next` to send user to another IVR.\n\n```bash\njaxl ivrs options configure \\\n  --ivr <IVR ID TO CONFIGURE> \\\n  --input 0 \\\n  --message \"Press 0 to repeat this menu\" \\\n  --next <NEXT IVR ID>\n```\n\n> Use &lt;IVR ID TO CONFIGURE&gt; as the &lt;NEXT IVR ID&gt; to complete the \"repeat this menu\" experience.\n\nOne of the CTA key flag must be provided. Allowed CTA keys are:\n\n- `--next`: Send to another IVR\n- `--phone`: Send to an external phone number\n- `--devices`: Send to devices by ID\n- `--appusers`: Send to app users (org employees) by ID\n- `--teams`: Send to teams by ID\n\n### List IVRs\n\n```bash\njaxl ivrs list\n```\n\n### List Purchased Jaxl Numbers\n\n```bash\njaxl phones list\n```\n\nYou can also search for a specific purchased number:\n\n```bash\njaxl phones list --e164 \"+91<Purchased Jaxl Number>\"\n```\n\n### Assign a Phone Number to IVR by ID\n\nAll incoming calls to this number will send user to the assigned IVR.\n\n```bash\njaxl phones ivrs \\\n  --e164 \"+91<Purchased Jaxl Number>\" \\\n  --ivr <IVR ID>\n```\n\n### Place Outgoing Cellular Call with Existing IVR\n\nBelow command will execute the following flow:\n\n- Places a call to &lt;Callee Number&gt;\n- When answered sends them to an existing IVR ID\n- Once IVR finishes, call continues to CTA returned by IVR\n\n```bash\njaxl calls create \\\n  --to \"+91<Callee Number>\" \\\n  --from \"+91<Purchased Jaxl Number>\" \\\n  --ivr <IVR ID>\n```\n\n### Place Outgoing Cellular Call with Ad-hoc IVR\n\nBelow command will execute the following flow:\n\n- Creates an Ad-hoc IVR using `--message` and `--option` flags\n- Places a call to <Callee Number>\n- When answered sends callee to the ad-hoc IVR\n- Once IVR finishes, call continues to CTA returned by IVR\n\n```bash\njaxl calls create \\\n  --to \"+91<Callee Number>\" \\\n  --from \"+91<Purchased Jaxl Number>\" \\\n  --message \"Hello, we are calling you from MyCompany\" \\\n  --option \"1=Press 1 for sales:team=<Sales Team ID>\" \\\n  --option \"2=Press 2 for HR department:team=<HR Team ID>\n```\n\n## Dial-out Multi-Party Conference between Cellular Numbers\n\nBelow command will execute the following flow:\n\n- Dials out all `--to` participants in parallel\n- Connects them together as they answer the call\n- Ends the call when one but all others have hanged up the call\n\n```bash\njaxl calls create \\\n  --to \"+91<Doctors Number>\" \\\n  --to \"+91<Patient Number>\" \\\n  --to \"+91<Supervisor Number>\" \\\n  --from \"+91<Purchased Jaxl Number>\"\n```\n\n### Dial-out Agent Team and Cellular Numbers\n\nBelow command will execute the following flow:\n\n- Dials out multiple teams of doctors & patient in parallel\n- Connects the patient with first doctor to pick the call from the teams\n- Doctors are called on their cellular number first (if added on Jaxl app),\n  followed by an attempt to call on Jaxl app directly (VoIP).\n- Calling preference can be controlled per agent (doctor) or team to dictate\n  whether to use cellular or voip first to connect with a doctor.\n\n```bash\njaxl calls create \\\n  --to \"teams=<Doctors Team ID1>,<Doctors Team ID2>\" \\\n  --to \"+91<Patient Number>\"\n```\n\n### Dial-out 2-Party Conference with Ad-hoc IVR\n\nBelow command will execute the following flow:\n\n- Dials out to Doctor first\n- When doctor answers the call, they are asked to press 1 when ready\n- If doctor presses 1, a second call is placed to the patient\n- Ends the call when one but all others have hanged up the call\n\n```bash\njaxl calls create \\\n  --to \"+91<Doctors Number>\" \\\n  --from \"+91<Purchased Jaxl Number>\" \\\n  --message \"Hello Doctor, this is a call from MyCompany regarding your appointment with Mr. Patient Name. When ready please, \" \\\n  --option \"1=Press 1 to connect with the patient:phone=+91<Patient Number>\"\n```\n\n### Add External Phone Number to an Active Call\n\n```bash\njaxl calls add --call-id 1234 --phone +91<Mobile Number>\n```\n\n### Add Agent to an Active Call\n\n```bash\njaxl calls add --call-id 1234 --agent <someone@mycompany.com>\n```\n\n### Remove External Phone Number from an Active Call\n\n```bash\njaxl calls remove --call-id 1234 --phone +91<Mobile Number>\n```\n\n### Remove Agent from an Active Call\n\n```bash\njaxl calls remove --call-id 1234 --agent <someone@mycompany.com>\n```\n\n### Send Text Prompts (TTS) in an Active Call\n\n```bash\njaxl calls speak --call-id 1234 \\\n  --prompt \"Hello, this text was injected in the middle of an active call\" \\\n  --prompt \"Yes its possible to pass in multiple prompt flags\" \\\n  --prompt \"Use shorter prompt phrases to keep TTS latency low\" \\\n  --prompt \"Avoid using excessively large sentences\"\n```\n\n### Play Audio File in an Active Call\n\n```bash\njaxl calls play --call-id 1234 --audio /path/to/a/file/on/local/disk/or/public/url\n```\n\n> NOTE: Audio file must be in SLIN16 format i.e. 8KHz Mono 16-bit.\n\n### Mute a Participant in an Active Call\n\nMute a specific cellular user in a call.\n\n```bash\njaxl calls mute --call-id 1234 --phone +91<Mobile Number>\n```\n\nMute an agent (Jaxl App User) in a call.\n\n```bash\njaxl calls mute --call-id 1235 --agent <someone@mycompany.com>\n```\n\n### Unmute a Participant in an Active Call\n\nUnmute a specific cellular user in a call.\n\n```bash\njaxl calls unmute --call-id 1234 --phone +91<Mobile Number>\n```\n\nUnmute a specific agent (Jaxl App User) in a call.\n\n```bash\njaxl calls unmute --call-id 1235 --agent <someone@mycompany.com>\n```\n\n### Hold a Participant in an Active Call\n\nPut a cellular user on-hold in a call\n\n```bash\njaxl calls hold --call-id 1234 --phone +91<Mobile Number>\n```\n\nPut an agent on-hold in a call\n\n```bash\njaxl calls hold --call-id 1235 --agent <someone@mycompany.com>\n```\n\n### Unhold a Participant in an Active Call\n\nUnhold a cellular user in a call\n\n```bash\njaxl calls unhold --call-id 1234 --phone +91<Mobile Number>\n```\n\nUnhold an agent in a call\n\n```bash\njaxl calls unhold --call-id 1235 --agent <someone@mycompany.com>\n```\n\n### Receive Call Events via Webhook IVRs\n\nWebhook IVRs can be used to programatically control the lifecycle of incoming and outgoing calls.\nJaxl will invoke configured webhook URL for subscribed call events. Handle the webhook request and\nuse Jaxl SDK to continue and customise the call flows.\n\nTo create a webhook IVR, use a `https://` URL as `--message` flag e.g.\n\n```bash\njaxl ivrs create --message \"https://example.com/jaxl-webhook-ivr\"\n```\n\nNext, assign a number to webhook IVR as shown previously under [Assign a Phone Number to IVR by ID](#assign-a-phone-number-to-ivr-by-id). Now, all incoming calls on the number will start with\nwebhook before proceeding further.\n\nTo control flow of outgoing calls, use webhook IVR ID when placing an outbound call. See [Place Outgoing Cellular Call with Existing IVR](#place-outgoing-cellular-call-with-existing-ivr)\n\nSee [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working webhook examples.\n\n### Realtime Streaming Audio\n\nRefer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming audio examples.\n\n### Realtime Streaming Speech Segments\n\nRefer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming speech segments examples.\n\n### Realtime Streaming Transcriptions per Speech Segment\n\nRefer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working streaming transcription per speech segment examples.\n\n### AI Agent: Realtime Transcriptions STT \u27a1\ufe0f LLM/MCP \u27a1\ufe0f TTS\n\nRefer to [examples](https://github.com/jaxl-innovations-private-limited/jaxl-python/tree/main/examples) directory for working AI Agent examples.\n\n### List Subscriptions Payments\n\n```bash\njaxl payments subscriptions list\n```\n\n### List Consumable Payments\n\n```bash\njaxl payments consumables total\n```\n\n## Jaxl Python SDK\n\n- Jaxl APIs is built upon [OpenAPI specification](https://www.openapis.org/)\n- `jaxl-python` contains following Python modules:\n  - `jaxl.api.client`: Generated OpenAPI SDK\n  - `jaxl.api.resources`: Wrapper methods written to support `jaxl` CLI\n  - `jaxl_api_client`: Helper function to retrieve an instance of `JaxlApiClient`\n\n### SDK Example Usage:\n\n```python\nfrom jaxl.api import JaxlApiModule, jaxl_api_client\nfrom jaxl.api.client.api.v1 import v1_calls_list\n\nos.environ.setdefault(\"JAXL_API_CREDENTIALS\", \"/path/to/jaxl-api-credentials.json\")\n\nos.environ.setdefault(\"JAXL_API_AUTH_TOKEN\", \"....authentication token...\")\n\nresponse = v1_calls_list.sync_detailed(\n    client=jaxl_api_client(JaxlApiModule.CALL),\n    currency=2, # 1=USD, 2=INR\n)\n```\n\n## SDK Documentation\n\n```\n# Clone this repository\ngit clone git@github.com:jaxl-innovations-private-limited/jaxl-python.git\n\n# Enter cloned repo directory\ncd jaxl-python\n\n# Create virtual environment\npython3 -m venv .venv\n\n# Activate virtual environment\nsource .venv/bin/activate\n\n# Install\npip install -e \".[dev]\"\n\n# Generate documentation\n./docs.sh\n\n# View documentation in browser\nopen docs/jaxl/index.html\n```\n\n## Status\n\n[![pypi version](https://img.shields.io/pypi/v/jaxl-python)](https://pypi.org/project/jaxl-python/)\n\n[![PyPi Monthly](https://img.shields.io/pypi/dm/jaxl-python)](https://pypi.org/project/jaxl-python/)\n\n[![Python 3.x](https://img.shields.io/static/v1?label=Python&message=3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12&color=blue)](https://www.python.org/)\n\n[![Checked with mypy](https://img.shields.io/static/v1?label=MyPy&message=checked&color=blue)](http://mypy-lang.org/)\n",
    "bugtrack_url": null,
    "license": "'Proprietary'",
    "summary": "Official Python SDK and CLI for interfacing with the Jaxl API. Manage calls, messages, IVRs, devices, teams, payments, campaigns, streaming transcriptions and AI Agents. Built on OpenAPI, it offers both generated API clients and Pythonic wrappers for ease of use.",
    "version": "0.0.12",
    "project_urls": {
        "CI: GitHub": "https://github.com/jaxl-innovations-private-limited/jaxl-python/actions",
        "Download": "https://github.com/jaxl-innovations-private-limited/jaxl-python/archive/main.zip",
        "GitHub: discussions": "https://github.com/jaxl-innovations-private-limited/jaxl-python/discussions",
        "GitHub: issues": "https://github.com/jaxl-innovations-private-limited/jaxl-python/issues",
        "GitHub: repo": "https://github.com/jaxl-innovations-private-limited/jaxl-python",
        "Homepage": "https://github.com/jaxl-innovations-private-limited/jaxl-python"
    },
    "split_keywords": [
        "jaxl",
        " api",
        " client",
        " sdk",
        " openapi"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1a665498536b20a97f54897ecad8ab1dd68e21c005704e400037696db36d18e8",
                "md5": "fcc92a8ac2f28053ae9681bd11ed25c9",
                "sha256": "d4b858c86baed1a2bb753aa0ffab00d1cd22259e7a4089773d110662c07d4d9a"
            },
            "downloads": -1,
            "filename": "jaxl_python-0.0.12-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fcc92a8ac2f28053ae9681bd11ed25c9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 212606,
            "upload_time": "2025-10-09T03:56:06",
            "upload_time_iso_8601": "2025-10-09T03:56:06.705790Z",
            "url": "https://files.pythonhosted.org/packages/1a/66/5498536b20a97f54897ecad8ab1dd68e21c005704e400037696db36d18e8/jaxl_python-0.0.12-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c7dcdf014b5093b92aaeafb20a67375c5ca575bfbebfdba5501d1fdc994cd307",
                "md5": "20fcd85ca410ebce8dbd6cfe10bbc190",
                "sha256": "44d83b38b96f582219e4a692a0fa647ae61107a3e72184464bb7fc8af66e068e"
            },
            "downloads": -1,
            "filename": "jaxl_python-0.0.12.tar.gz",
            "has_sig": false,
            "md5_digest": "20fcd85ca410ebce8dbd6cfe10bbc190",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 104879,
            "upload_time": "2025-10-09T03:56:08",
            "upload_time_iso_8601": "2025-10-09T03:56:08.374560Z",
            "url": "https://files.pythonhosted.org/packages/c7/dc/df014b5093b92aaeafb20a67375c5ca575bfbebfdba5501d1fdc994cd307/jaxl_python-0.0.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-09 03:56:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jaxl-innovations-private-limited",
    "github_project": "jaxl-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "jaxl-python"
}
        
Elapsed time: 1.77647s