Famulor SIP Trunks API
Eigene SIP-Trunks anbinden und verwalten.
Eigene SIP-Trunks anbinden und verwalten.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/famulor-io:famulor-io-sip-trunks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Famulor SIP Trunks API
summary: REST API für AI-Assistenten, Anrufe, Konversationen, Leads und omnichannel Kundenkommunikation.
description: 'Die Famulor Produkt-API unter `https://app.famulor.de/api`. Damit steuerst du
AI-Assistenten, startest und liest Anrufe, verwaltest Leads und Kampagnen,
versendest SMS und WhatsApp-Nachrichten, pflegst Wissensdatenbanken und
automatisierst Prozesse.
## Authentifizierung
Alle Endpunkte erwarten einen API-Key als Bearer-Token:
```
Authorization: Bearer YOUR_API_KEY
```
Den Key erstellst du in deinem Account unter im
Bereich API-Keys. Der Key wird nur einmal angezeigt.
## Webhooks
Famulor sendet Ereignisse (Post-Call, Conversation Ended, Read Receipts) an
deine URL. Die Payloads stehen im Abschnitt `webhooks` dieser Spec.
Diese Datei wird aus der offiziellen Dokumentation generiert:'
version: 1.0.0
contact:
name: Famulor Support
email: sales@famulor.io
url: https://www.famulor.io/support
license:
name: Proprietary
url: https://www.famulor.io/terms
termsOfService: https://www.famulor.io/terms
servers:
- url: https://app.famulor.de/api
description: Production
security:
- BearerAuth: []
tags:
- name: SIP Trunks
description: Eigene SIP-Trunks anbinden und verwalten.
paths:
/user/phone-numbers/sip-trunks:
post:
tags:
- SIP Trunks
summary: Create SIP Trunk
operationId: createSIPTrunk
description: 'Create a new SIP trunk with credentials, address, and proxy settings
Docs'
externalDocs:
description: Create SIP Trunk
url: https://docs.famulor.io/api-v1/sip-trunks/create
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sip_trunk_type:
type: string
description: 'The type of SIP trunk: `extension` for a SIP extension, or `number` for a phone number (DID). This determines the expected format of the `phone_number` field.'
phone_number:
type: string
description: The SIP extension (1-15 characters, e.g. `1000`) when `sip_trunk_type` is `extension`, or a phone number in E.164 format (e.g. `+14155551234`) when `sip_trunk_type` is `number`.
nickname:
type: string
description: A short, human-friendly label for the trunk (e.g. "Provider X — Main"). Maximum 50 characters.
sip_username:
type: string
description: Username for SIP authentication (3-128 characters)
sip_password:
type: string
description: Password for SIP authentication (minimum 3 characters)
sip_address:
type: string
description: The SIP server address without port (e.g. `sip.provider.com`)
sip_calling_format:
type: string
description: 'The outbound calling number format:
* `+e164` - International with `+` prefix (e.g. `+12025550123`)
* `e164` - International without `+` prefix (e.g. `12025550123`)
* `national` - National format without country code (e.g. `0741926265`)'
inbound_authorization_type:
type: string
description: 'How inbound calls are authenticated:
* `auth` - Uses the same SIP username and password configured for outbound
* `ip` - Whitelists specific IP addresses (requires `allowed_inbound_ips`)'
allowed_inbound_ips:
type: array
description: Array of IP addresses allowed to send inbound calls. **Required** when `inbound_authorization_type` is `ip`. Must contain at least one valid IP address.
items: {}
country_code:
type: string
description: ISO 3166-2 country code where the SIP trunk is located (e.g. `US`, `GB`, `DE`). When `sip_trunk_type` is `number`, the country is auto-detected from the phone number if possible.
outbound_proxy:
type: boolean
description: 'Route outbound calls through a fixed IP address. Default: `false`. Only enable this if your SIP provider requires IP-based authentication for outbound traffic.'
required:
- sip_trunk_type
- phone_number
- sip_username
- sip_password
- sip_address
- sip_calling_format
- inbound_authorization_type
- country_code
responses:
'201':
description: Created
content:
application/json:
examples:
extension-with-password-auth:
summary: Extension with password auth
value:
message: SIP trunk created successfully.
data:
id: 42
phone_number: '1000'
nickname: Provider X — Main
sip_username: myuser
sip_address: sip.provider.com
sip_calling_format: +e164
inbound_authorization_type: auth
allowed_inbound_ips: null
outbound_proxy: false
country_code: US
inbound_trunk_id: ST_xxxxxxxxxxxx
outbound_trunk_id: ST_yyyyyyyyyyyy
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T10:00:00.000000Z'
phone-number-did-with-ip-auth:
summary: Phone number (DID) with IP auth
value:
message: SIP trunk created successfully.
data:
id: 43
phone_number: '+14155551234'
nickname: null
sip_username: trunk_user
sip_address: sip.provider.com
sip_calling_format: e164
inbound_authorization_type: ip
allowed_inbound_ips:
- 203.0.113.10
- 198.51.100.20
outbound_proxy: true
country_code: US
inbound_trunk_id: ST_xxxxxxxxxxxx
outbound_trunk_id: ST_yyyyyyyyyyyy
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T10:00:00.000000Z'
schema:
type: object
properties:
message:
type: string
description: Success message
data:
type: object
description: The created SIP trunk object (same fields as [Get SIP trunk](/en/api-reference/sip-trunks/get))
additionalProperties: true
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'409':
description: Duplicate
content:
application/json:
example:
error: A SIP trunk with the same phone number, username, and address already exists.
'422':
description: Validation Error
content:
application/json:
example:
message: The given data was invalid.
errors:
sip_address:
- SIP server address is required.
sip_calling_format:
- 'SIP calling format must be one of: +e164, e164, national.'
'500':
description: Provisioning Error
content:
application/json:
example:
error: Failed to create SIP trunk. Please try again or contact support.
get:
tags:
- SIP Trunks
summary: List SIP Trunks
operationId: listSIPTrunks
description: 'Get all SIP trunks owned by the authenticated user
Docs'
externalDocs:
description: List SIP Trunks
url: https://docs.famulor.io/api-v1/sip-trunks/list
responses:
'200':
description: Response
content:
application/json:
example:
data:
- id: 42
phone_number: '1000'
nickname: Provider X — Main
sip_username: myuser
sip_address: sip.provider.com
sip_calling_format: +e164
inbound_authorization_type: auth
allowed_inbound_ips: null
outbound_proxy: false
country_code: US
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T10:00:00.000000Z'
- id: 43
phone_number: '+14155551234'
nickname: null
sip_username: trunk_user
sip_address: sip.provider.com
sip_calling_format: e164
inbound_authorization_type: ip
allowed_inbound_ips:
- 203.0.113.10
- 198.51.100.20
outbound_proxy: true
country_code: US
created_at: '2026-03-31T11:00:00.000000Z'
updated_at: '2026-03-31T11:00:00.000000Z'
schema:
type: object
properties:
data:
type: array
description: Array of SIP trunk objects
items:
type: object
properties:
id:
type: integer
description: The unique identifier of the SIP trunk
phone_number:
type: string
description: The SIP extension or phone number (DID) in E.164 format
nickname:
type:
- string
- 'null'
description: A short, human-friendly label for the trunk (or `null` if not set)
sip_username:
type: string
description: The username used for SIP authentication
sip_address:
type: string
description: The SIP server address
sip_calling_format:
type: string
description: 'The outbound calling number format: `+e164`, `e164`, or `national`'
inbound_authorization_type:
type: string
description: 'The inbound authorization method: `auth` (username/password) or `ip` (IP whitelist)'
allowed_inbound_ips:
type:
- array
- 'null'
description: Array of whitelisted IP addresses for inbound calls (only when `inbound_authorization_type` is `ip`)
items: {}
outbound_proxy:
type: boolean
description: Whether outbound calls use a fixed proxy IP address
country_code:
type: string
description: The ISO 3166-2 country code where the SIP trunk is located
created_at:
type: string
description: ISO 8601 timestamp of when the SIP trunk was created
updated_at:
type: string
description: ISO 8601 timestamp of when the SIP trunk was last updated
additionalProperties: true
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/user/phone-numbers/sip-trunks/{id}:
get:
tags:
- SIP Trunks
summary: Get SIP Trunk
operationId: getSIPTrunk
description: 'Retrieve full configuration of a single SIP trunk in Famulor by ID via API. Inspect credentials, routing and assigned numbers for your AI voice telephony.
Docs'
externalDocs:
description: Get SIP Trunk
url: https://docs.famulor.io/api-v1/sip-trunks/get
parameters:
- name: id
in: path
required: true
description: The unique identifier of the SIP trunk
schema:
type: integer
responses:
'200':
description: Response
content:
application/json:
example:
data:
id: 42
phone_number: '1000'
nickname: Provider X — Main
sip_username: myuser
sip_address: sip.provider.com
sip_calling_format: +e164
inbound_authorization_type: auth
allowed_inbound_ips: null
outbound_proxy: false
country_code: US
inbound_trunk_id: ST_xxxxxxxxxxxx
outbound_trunk_id: ST_yyyyyyyyyyyy
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T10:00:00.000000Z'
schema:
type: object
properties:
data:
type: object
description: The SIP trunk object
properties:
id:
type: integer
description: The unique identifier of the SIP trunk
phone_number:
type: string
description: The SIP extension or phone number (DID) in E.164 format
nickname:
type: string
description: A short, human-friendly label for the trunk (or `null` if not set)
sip_username:
type: string
description: The username used for SIP authentication
sip_address:
type: string
description: The SIP server address
sip_calling_format:
type: string
description: 'The outbound calling number format: `+e164`, `e164`, or `national`'
inbound_authorization_type:
type: string
description: 'The inbound authorization method: `auth` or `ip`'
allowed_inbound_ips:
type:
- array
- 'null'
description: Array of whitelisted IP addresses (only when `inbound_authorization_type` is `ip`)
items: {}
outbound_proxy:
type: boolean
description: Whether outbound calls use a fixed proxy IP address
country_code:
type: string
description: The ISO 3166-2 country code
inbound_trunk_id:
type: string
description: Internal identifier for the inbound voice trunk (useful for debugging)
outbound_trunk_id:
type: string
description: Internal identifier for the outbound voice trunk (useful for debugging)
created_at:
type: string
description: ISO 8601 timestamp
updated_at:
type: string
description: ISO 8601 timestamp
additionalProperties: true
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Not Found
content:
application/json:
example:
error: SIP trunk not found.
'422':
$ref: '#/components/responses/ValidationError'
put:
tags:
- SIP Trunks
summary: Update SIP Trunk
operationId: updateSIPTrunk
description: 'Update an existing SIP trunk configuration in Famulor via API. Change credentials, routing rules and assigned phone numbers for your AI voice telephony.
Docs'
externalDocs:
description: Update SIP Trunk
url: https://docs.famulor.io/api-v1/sip-trunks/update
parameters:
- name: id
in: path
required: true
description: The unique identifier of the SIP trunk to update
schema:
type: integer
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
phone_number:
type: string
description: The SIP extension or phone number (1-15 characters)
nickname:
type: string
description: A short, human-friendly label for the trunk. Maximum 50 characters. Send `null` to clear it.
sip_username:
type: string
description: Username for SIP authentication (3-128 characters)
sip_password:
type: string
description: Password for SIP authentication (minimum 3 characters)
sip_address:
type: string
description: The SIP server address without port
sip_calling_format:
type: string
description: 'The outbound calling number format: `+e164`, `e164`, or `national`'
inbound_authorization_type:
type: string
description: 'How inbound calls are authenticated: `auth` or `ip`. When switching to `ip`, you must also provide `allowed_inbound_ips`. When switching to `auth`, any existing IP whitelist is cleared.'
allowed_inbound_ips:
type: array
description: Array of IP addresses allowed for inbound calls. **Required** when `inbound_authorization_type` is set to `ip`.
items: {}
country_code:
type: string
description: ISO 3166-2 country code
outbound_proxy:
type: boolean
description: Route outbound calls through a fixed IP address
responses:
'200':
description: OK
content:
application/json:
examples:
updated-credentials:
summary: Updated credentials
value:
message: SIP trunk updated successfully.
data:
id: 42
phone_number: '1000'
nickname: Provider X — Main
sip_username: new_username
sip_address: sip.provider.com
sip_calling_format: +e164
inbound_authorization_type: auth
allowed_inbound_ips: null
outbound_proxy: false
country_code: US
inbound_trunk_id: ST_newtrunkid1
outbound_trunk_id: ST_newtrunkid2
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T12:00:00.000000Z'
switched-to-ip-auth:
summary: Switched to IP auth
value:
message: SIP trunk updated successfully.
data:
id: 42
phone_number: '1000'
nickname: Provider X — Main
sip_username: myuser
sip_address: sip.provider.com
sip_calling_format: +e164
inbound_authorization_type: ip
allowed_inbound_ips:
- 203.0.113.10
outbound_proxy: false
country_code: US
inbound_trunk_id: ST_newtrunkid1
outbound_trunk_id: ST_yyyyyyyyyyyy
created_at: '2026-03-31T10:00:00.000000Z'
updated_at: '2026-03-31T12:00:00.000000Z'
schema:
type: object
properties:
message:
type: string
description: Success message
data:
type: object
description: The updated SIP trunk object (same fields as [Get SIP trunk](/en/api-reference/sip-trunks/get))
additionalProperties: true
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Not Found
content:
application/json:
example:
error: SIP trunk not found.
'422':
description: Validation Error
content:
application/json:
example:
message: The given data was invalid.
errors:
allowed_inbound_ips:
- At least one allowed IP address is required when authorization type is "ip".
'500':
description: Provisioning Error
content:
application/json:
example:
error: Failed to update SIP trunk. Please try again or contact support.
components:
responses:
ValidationError:
description: Die Anfrage ist inhaltlich ungültig.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
example:
message: The given data was invalid.
errors:
phone_number:
- The phone number field is required.
Unauthorized:
description: Fehlender oder ungültiger API-Key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
message: Unauthenticated.
schemas:
ValidationError:
type: object
properties:
message:
type: string
errors:
type: object
description: Feldname → Liste der Fehlermeldungen.
additionalProperties:
type: array
items:
type: string
Error:
type: object
properties:
message:
type: string
description: Menschenlesbare Fehlermeldung.
error:
type: string
description: Fehlerkennung, sofern gesetzt.
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: 'API-Key als Bearer-Token: `Authorization: Bearer YOUR_API_KEY`. Key erstellen unter https://app.famulor.de.'
externalDocs:
description: Famulor API-Dokumentation
url: https://docs.famulor.io/api-v1/introduction