---
title: "Restart ICE on a WebRTC leg"
method: POST
path: "/legs/{id}/ice-restart"
tags: ["WebRTC"]
---

# Restart ICE on a WebRTC leg

`POST /legs/{id}/ice-restart`

## Request

- Base URL: `http://localhost:8080/v1`
- URL: `http://localhost:8080/v1/legs/{id}/ice-restart`
- Auth: none declared

Applies a new SDP offer carrying fresh ICE credentials (browser `restartIce()`) to the existing leg and returns the answer. The leg id, media session and room membership are kept. Trickle the new candidates through `/legs/{id}/ice-candidates` after the answer arrives.

## Request body

- WebRTCICERestartRequest
  - `sdp` string, required

## Response `200`

SDP answer

- WebRTCOfferResult
  - `leg_id` string, required
  - `sdp` string, required

## Other responses

- `400`: Invalid JSON, invalid SDP offer, offer does not change ICE credentials, or leg is not a WebRTC leg
- `404`: Leg not found
- `500`: Failed to create answer

## Changes

- **2026-10-09** `0f6e0019d7aa`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/voiceblender/apis/voiceblender-api/changes/legs/:id/ice-restart/post.md)

---

[API](https://skmtc.dev/voiceblender/apis/voiceblender-api.md) - [All operations](https://skmtc.dev/voiceblender/apis/voiceblender-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voiceblender/apis/voiceblender-api/revisions/1c24fcf8873c?raw)
