Famulor SIP Trunks API

Eigene SIP-Trunks anbinden und verwalten.

GitHub OpenAPI

Operations 4

POST /user/phone-numbers/sip-trunks Create SIP Trunk #
GET /user/phone-numbers/sip-trunks List SIP Trunks #
GET /user/phone-numbers/sip-trunks/{id} Get SIP Trunk #
PUT /user/phone-numbers/sip-trunks/{id} Update SIP Trunk #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/famulor-io:famulor-io-sip-trunks-api"
All apis
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.

Get an API 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 Specification

famulor-io-sip-trunks-api-openapi.yml Raw ↑
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