> ## Documentation Index
> Fetch the complete documentation index at: https://docs.daily.co/llms.txt
> Use this file to discover all available pages before exploring further.

# SIP Clients

> Register ordinary SIP clients (softphones like Linphone or baresip) to your domain over UDP or TLS, and place or receive calls without buying a number.

A **SIP client** is an ordinary SIP user agent — a softphone such as [Linphone](https://linphone.org)
or [baresip](https://github.com/baresip/baresip), a programmatic client such as
[baresip-python](https://pypi.org/project/baresip-python/) (handy for running a client in the cloud or
in tests), or your own SIP stack — that **registers with your Daily domain** over UDP or TLS. Once
registered it can place and receive calls: to another of your registered clients, or out to an
external SIP address.

You provision a client with a single REST call, which returns a SIP `username`, a `password` (shown
once), and a ready-to-use `sip_uri`. Point your softphone at those credentials and it registers.

<Note>
  Each domain can register up to **2000** SIP clients by default. Beyond that,
  [`POST /sip-clients`](/reference/rest-api/sip-clients/create) returns `403` with
  `SIP client limit reached for this domain`. Delete unused clients (or let short-lived ones expire) to
  free capacity, or **[contact support](mailto:help@daily.co) to raise the limit**.
</Note>

<Note>
  This is different from a [SIP trunk](/docs/guides/features/dial-in-dial-out/sip-trunk), where you bring
  your **own carrier** and Daily auto-provisions a room per inbound call. A SIP client is a credential
  **you** register a softphone with — there is no carrier and no per-call room.
</Note>

## How it works

1. You call [`POST /sip-clients`](/reference/rest-api/sip-clients/create) with a `username`.
2. Daily returns the `sip_uri` and a `password` (this is the only time the password is shown).
3. You configure a softphone with that username, password, and SIP domain, over UDP or TLS.
4. The softphone REGISTERs with your domain.
5. The client places and receives calls — to another registered client, or to an external SIP address.

```mermaid theme={null}
sequenceDiagram
    participant You as Your backend
    participant Daily
    participant Phone as Softphone (Linphone/baresip)
    You->>Daily: POST /sip-clients { username }
    Daily-->>You: { sip_uri, password (once), ... }
    You->>Phone: configure username + password + domain
    Phone->>Daily: REGISTER (UDP or TLS)
    Phone->>Daily: INVITE (place a call) / receive an INVITE
```

## Create a client

```bash theme={null}
curl -X POST https://api.daily.co/v1/sip-clients \
  -H "Authorization: Bearer $DAILY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "username": "alice.0" }'
```

```json theme={null}
{
  "username": "alice.0",
  "domain": "examplecorp.sip-us.daily.co",
  "sip_uri": "sip:alice.0@examplecorp.sip-us.daily.co",
  "password": "generated-once-abc123",
  "expires_at": null
}
```

* **`username`** is a room-style name (letters, digits, `-`, `_`), optionally suffixed with `.<number>`
  (for example `alice.0`), and must be unique within your domain.
* **`password`** is generated for you and returned **once**. You may instead supply your own (12–64
  characters, at least one letter and one digit). Store it — it is never returned again.
* **`expires_at`** is `null` unless you set a TTL (see below).

## Configure the softphone

Use the values from the response:

| Softphone setting | Value |
| - | - |
| Username | the `username` (e.g. `alice.0`) |
| Password | the `password` from the create response |
| Domain / SIP server / registrar | the domain part of `sip_uri` (e.g. `examplecorp.sip-us.daily.co`) |
| Transport | UDP or TLS |

The client registers to your domain and is then reachable at its `sip_uri`.

## Expiry and cleanup

A client lives until you delete it, unless you give it a TTL at create time:

```bash theme={null}
curl -X POST https://api.daily.co/v1/sip-clients \
  -H "Authorization: Bearer $DAILY_API_KEY" \
  -d '{ "username": "temp.1", "expires_in_seconds": 3600 }'
```

With `expires_in_seconds` set, the client is removed automatically after it elapses — useful for
on-demand credentials created for a single session. You can also
[delete a client](/reference/rest-api/sip-clients/delete) explicitly at any time, or
[rotate its password](/reference/rest-api/sip-clients/rotate) without changing its `sip_uri`.

<Tip>
  **Set a TTL for short-lived clients.** If you provision a client for a single call or session, pass
  `expires_in_seconds`. The credential is then cleaned up automatically even if your explicit delete
  never runs (a crash, a lost retry), so a forgotten credential can't linger or keep counting against
  your per-domain limit. Reserve no-expiry clients for softphones you intend to keep registered
  long-term.
</Tip>

<Note>
  Expiring or deleting unused clients frees capacity under your domain's client limit (see the note at
  the top of this page).
</Note>

## Reference

* [Create a client](/reference/rest-api/sip-clients/create)
* [List clients](/reference/rest-api/sip-clients/list)
* [Get a client](/reference/rest-api/sip-clients/get)
* [Delete a client](/reference/rest-api/sip-clients/delete)
* [Rotate a client's password](/reference/rest-api/sip-clients/rotate)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.