# Get recording download URL

> GET https://api.nabrah.ai/api/ext/call/get-download-link/{call_id}

Group: Calls. Page: https://www.nabrah.ai/en/docs/api-reference/calls/get-recording-download-url

Generate a temporary signed URL to download a call's audio recording. The returned URL is valid for 15 minutes and points directly to the recording file. Returns 404 if the call does not exist in your project or has no recording (for example, a call that never connected). Use this instead of reading the recording_file field on the call record, which is an internal reference and not directly downloadable.

## Response

- **url**: A signed, time-limited download link for the recording. Fetch or stream it within 15 minutes; after expiry, call this endpoint again to mint a fresh URL. Fields: `url`.

## Where the call_id comes from

- **Search or make-call**: Use calls[].id from POST /api/ext/call/search, or a value from call_ids[] returned by POST /api/ext/call/make-call.

Recordings only exist for calls that produced audio; expect a 404 for queued, ringing, or failed-to-connect calls.

## Authorization

- `X-API-Key` (string, header, required): your workspace API key.

## Path parameters

- `call_id` (string, required): UUID of the call whose recording you want to download. Obtain from POST /api/ext/call/search (calls[].id) or the call_ids[] of a make-call response. Must belong to the API key's project and have a recording.

## Response

### 200 Successful Response

Content type: `application/json`

```json
{
  "url": "string"
}
```

### 422 Validation Error

Content type: `application/json`

```json
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}
```

## Request examples

### cURL

```bash
curl --request GET \
  --url 'https://api.nabrah.ai/api/ext/call/get-download-link/<call_id>' \
  --header 'X-API-Key: <your-api-key>'
```

### Python

```python
import requests

url = "https://api.nabrah.ai/api/ext/call/get-download-link/<call_id>"
headers = {"X-API-Key": "<your-api-key>"}

response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
```

### JavaScript

```javascript
const response = await fetch("https://api.nabrah.ai/api/ext/call/get-download-link/<call_id>", {
  method: "GET",
  headers: { "X-API-Key": "<your-api-key>" },
});

const data = await response.json();
console.log(data);
```

### Go

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.nabrah.ai/api/ext/call/get-download-link/<call_id>", nil)
	req.Header.Set("X-API-Key", "<your-api-key>")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
```
