# sinch sip

Manage Elastic SIP Trunking (EST) resources: trunks, endpoints, ACLs, calls, countries, and credential lists. See [Elastic SIP Trunking](/docs/est/) on developers.sinch.com for product documentation.

## sinch sip trunks

Manage SIP trunks. A trunk connects your PBX or SIP infrastructure to the Sinch network.

### sinch sip trunks list

```sh
sinch sip trunks list [--limit <number>] [--json]
```

### sinch sip trunks get

```sh
sinch sip trunks get <trunk-id> [--json]
```

### sinch sip trunks create

```sh
sinch sip trunks create [options]
```

| Option | Description |
|  --- | --- |
| `-n, --name <name>` | Trunk name |
| `-h, --host-name <hostname>` | SIP host name |
| `--caller-id` | Enable caller ID |
| `--non-interactive` | Skip prompts |
| `--json` | Output as JSON |


### sinch sip trunks update

```sh
sinch sip trunks update <trunk-id> [options]
```

| Option | Description |
|  --- | --- |
| `-n, --name <name>` | New trunk name |
| `-h, --host-name <hostname>` | New host name |
| `--caller-id` / `--no-caller-id` | Enable/disable caller ID |


### sinch sip trunks delete

```sh
sinch sip trunks delete <trunk-id> [-f, --force] [--json]
```

With `--json`, `--force` is required and the command prints `{ "trunkId": "...", "deleted": true }`.

### sinch sip trunks acls

```sh
sinch sip trunks acls list <trunk-id>
sinch sip trunks acls add <trunk-id> <acl-id>
sinch sip trunks acls remove <trunk-id> <acl-id> [-f, --force] [--json]
```

With `--json`, `--force` is required and `acls remove` prints `{ "trunkId": "...", "aclId": "...", "removed": true }`.

### sinch sip trunks credential-lists update

```sh
sinch sip trunks credential-lists update <trunk-id> <cred-list-id...>
```

## sinch sip endpoints

Manage SIP endpoints (registered devices or user agents on a trunk).

```sh
sinch sip endpoints list <trunk-id> [options]
sinch sip endpoints get <endpoint-id>
sinch sip endpoints create <trunk-id> [options]
sinch sip endpoints update <endpoint-id> [options]
sinch sip endpoints delete <endpoint-id> [-f, --force]
```

All subcommands support `--json`. Create and update support `--non-interactive`. With `--json`, `delete` requires `--force` and prints `{ "endpointId": "...", "trunkId": "...", "deleted": true }`.

`create` and `update` options:

| Option | Description |
|  --- | --- |
| `-n, --name <name>` | Endpoint name (required on `create`) |
| `-a, --address <address>` | IP or hostname, without port (required on `create`) |
| `--port <number>` | SIP port |
| `-t, --transport <transport>` | `UDP`, `TCP` or `TLS` |
| `-p, --priority <number>` | Priority, lower = higher priority (required on `create`) |


## sinch sip acls

Manage Access Control Lists (IP allowlists for SIP traffic).

```sh
sinch sip acls list [options]
sinch sip acls get <acl-id>
sinch sip acls create [options]
sinch sip acls update <acl-id> [options]
sinch sip acls delete <acl-id> [-f, --force] [--json]
sinch sip acls trunks <acl-id> [-l, --limit <number>] [--json]
sinch sip acls ip-ranges list <acl-id> [-l, --limit <number>] [--json]
sinch sip acls ip-ranges add <acl-id> [options]
sinch sip acls ip-ranges update <acl-id> <ip-range-id> [options]
sinch sip acls ip-ranges delete <acl-id> <ip-range-id> [-f, --force] [--json]
```

`acls trunks` lists the trunks that use an ACL.

With `--json`, `acls delete` and `acls ip-ranges delete` require `--force`. `acls delete` prints `{ "aclId": "...", "deleted": true }`; `acls ip-ranges delete` prints `{ "aclId": "...", "ipRangeId": "...", "deleted": true }`.

`acls create` options:

| Option | Description |
|  --- | --- |
| `-n, --name <name>` | ACL name (required) |
| `-i, --ip <address>` | IP address for the first IP range (required) |
| `-r, --range <cidr>` | CIDR mask for that range, as a number (default `32`) |
| `--ip-description <text>` | Description for the IP range |
| `--enabled` / `--disabled` | Create the ACL enabled (default) or disabled |
| `--non-interactive` | Skip prompts, use defaults for missing options |
| `--json` | Output as JSON |


`acls update` takes `-n, --name <name>`, `--enabled` / `--disabled`, `--non-interactive` and `--json`.

`acls ip-ranges add` and `update` options:

| Option | Description |
|  --- | --- |
| `-d, --description <description>` | Description for the IP range |
| `-i, --ip <ip>` | Single IP address (e.g., `192.168.1.1`) |
| `-r, --range <cidr>` | CIDR range (e.g., `192.168.1.0/24`) |
| `--non-interactive` | Skip prompts |
| `--json` | Output as JSON |


`--ip` and `--range` cannot be combined. Note that `-r` is a number on `acls create` but a CIDR string on `ip-ranges`.

## sinch sip calls

View SIP call history and details.

```sh
sinch sip calls list [options]
sinch sip calls get <call-id>
```

| Option | Description |
|  --- | --- |
| `--trunk-id <id>` | Filter by trunk ID |
| `--from <number>` | Filter by calling phone number (partial match) |
| `--to <number>` | Filter by called phone number (partial match) |
| `--direction <direction>` | `INBOUND` or `OUTBOUND` |
| `--result <result>` | `COMPLETED`, `NO_ANSWER`, `CANCEL`, `BUSY` or `FAILED` |
| `--date <date>` | `YYYY-MM-DD`, `YYYY-MM` or `YYYY`. Defaults to the last 24 hours |
| `--page <number>` | Page number |
| `--page-size <number>` | Results per page (default 100, max 1000) |
| `--json` | Output as JSON |


`--from` and `--to` take phone numbers, not dates. Use `--date` to choose a period.

## sinch sip countries

Manage country permissions for dialing: see which countries can be dialed, and turn dialing to a country on or off.

```sh
sinch sip countries list [-l, --limit <number>] [--json]
sinch sip countries get <iso-code> [--json]
sinch sip countries enable <iso-code> [--json]
sinch sip countries disable <iso-code> [--json]
```

`<iso-code>` is an ISO country code such as `US` or `CA`, or `'*'`. Quote the `*` so your shell does not expand it.

## sinch sip credential-lists

Show which trunks use a SIP credential list. This is the only `credential-lists` subcommand: the CLI does not list, create or delete credential lists. To set the lists a trunk uses, run `sinch sip trunks credential-lists update` (above). It replaces the trunk's whole set with the IDs you pass, so include every list the trunk should keep.

```sh
sinch sip credential-lists trunks <credential-list-id> [-l, --limit <number>] [--json]
```