---
title: numbers.extension_invalid
description: An internal extension must be exactly four digits.
summary: >-
  Returned when an internal extension is not exactly four digits. Fixed length
  is what lets a handset dial without pausing, and keeps an extension from being
  confused with a phone number.
date: 2026-08-14T00:00:00.000Z
type: error
---


## Summary

`numbers.extension_invalid` means the supplied extension is not exactly four digits. `1001` is valid; `100`, `10001` and `10a1` are not.

## Cause

Extensions are fixed at four digits rather than allowed a range, and the reason is dialling rather than storage.

With a variable length, `10` is a prefix of `1001`. A handset cannot then tell whether you have finished dialling, so it waits out an inter-digit timeout before placing every internal call. At a fixed length the fourth digit *is* the end of the number and the phone dials immediately.

Four digits also cannot be confused with a real number. A locally-dialled number here is ten digits and an E.164 carries a `+`, so nothing has to guess whether a string of digits meant a colleague or the outside world.

Nothing is written or provisioned when this is returned — a bad extension is a typo, not a partial failure to unwind.

## Resolution

Send exactly four digits, or omit the field entirely. An extension is optional: a credential used only for programmatic dialling does not need one, and a device without one can still be reached from outside and can still call out.

```bash
curl -X PATCH "https://api.sautikit.com/v1/numbers/{id}/sip-credentials/{cred_id}" \
  -H "Authorization: Bearer $SAUTIKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"extension": "1001"}'
```

Pass an empty string to remove an extension.

## Related

- [`numbers.extension_taken`](/developers/errors/numbers.extension_taken) — another credential in this workspace already holds it.
