# UDP Usage

Send UDP traffic to remote devices from the User Console or API.

With **Remote Command**, you can use the Soracom API to send UDP data to a device that uses an IoT SIM.

> [!NOTE]
>
> UDP does not guarantee data delivery or provide a built-in way to confirm it. To verify receipt of UDP data, you must implement your own confirmation method on the device, such as sending an acknowledgment message to the [Unified Endpoint](https://docs.soracom.io/en/services/unified-endpoint) when data is received.

> [!WARNING]
>
> Ensure your device is configured to accept incoming UDP data before using this feature.

## Programmatic Usage

### Soracom API

To access the Soracom API, first use the [**auth**](https://docs.soracom.io/en/api#!/Auth/auth) API to obtain an API Key and Token. Refer to the [**API Usage Guide**](https://docs.soracom.io/en/developers/soracom-api) for instructions on how to use the API Key and Token in API requests.

Then, use the [sendDownlinkUdp](https://docs.soracom.io/en/api#!/Sim/sendDownlinkUdp) API to send UDP data to a device that has an IoT SIM:

**Global**

```bash
curl -X POST \
  -H 'X-Soracom-API-Key: <MY-API-KEY>' \
  -H 'X-Soracom-Token: <MY-TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payload": "FFFFFF",
        "payloadEncoding": "hex",
        "port": 5005
      }' \
  https://g.api.soracom.io/v1/sims/<SIM_ID>/downlink/udp
```

**Japan**

```bash
curl -X POST \
  -H 'X-Soracom-API-Key: <MY-API-KEY>' \
  -H 'X-Soracom-Token: <MY-TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
        "payload": "FFFFFF",
        "payloadEncoding": "hex",
        "port": 5005
      }' \
  https://jp.api.soracom.io/v1/sims/<SIM_ID>/downlink/udp
```

### Soracom CLI

To use the Soracom CLI, you must first configure it to authenticate with your account information, authorization key, or SAM user credentials.

Run the following command to send a UDP data to a device that has an IoT SIM:

**Global**

```bash
body='{
        "payload": "FFFFFF",
        "payloadEncoding": "hex",
        "port": 5005
      }'
soracom sims downlink-udp --sim-id <SIM_ID> --body ${body} --coverage-type g
```

**Japan**

```bash
body='{
        "payload": "FFFFFF",
        "payloadEncoding": "hex",
        "port": 5005
      }'
soracom sims downlink-udp --sim-id <SIM_ID> --body ${body} --coverage-type jp
```
