> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update outbound SIP identity

> Updates only the outbound identity policy for your own SIP trunk. Incoming routing, phone numbers and provider connections are preserved. Requires sip_trunks:write. Existing configurations keep phone_number until explicitly changed.



## OpenAPI

````yaml /api-reference/openapi.json patch /sip-trunks/{id}
openapi: 3.1.0
info:
  title: Famulor API
  version: 1.0.0
  description: >-
    REST API for Famulor. Authenticate with an API key (`fam_...`, created under
    **Settings → API Keys**) or an OAuth 2.0 access token (`fam_at_...`) as a
    Bearer token.


    Every response uses a consistent envelope: `{ "data": ... , "meta": { ... }
    }` on success and `{ "error": { "code", "message" } }` on failure. List
    endpoints paginate with `?limit=` (default 50, max 200) and `?offset=`;
    `meta.pagination.total` carries the total match count.


    REST operations require API Access through the workspace plan or a recurring
    add-on. Without it, regular operations return `403 api_access_required`. The
    invoice-payment and billing-portal operations remain available with a valid
    `billing:write` credential after a failed plan payment so an authorized
    owner, admin, or billing member can recover billing.


    The same customer-facing capabilities are available as MCP tools at
    `https://app.famulor.io/mcp` (Model Context Protocol, streamable HTTP) using
    the same credentials, scopes, and workspace access. MCP availability is
    controlled separately by Connect AI / MCP, not by API Access.
servers:
  - url: https://app.famulor.io/api/v1
    description: Hosted platform.
  - url: https://{domain}/api/v1
    description: White-label tenant domain — same paths, tenant branding.
    variables:
      domain:
        default: app.famulor.io
        description: Your white-label tenant domain.
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Self-inspection of the calling credential.
  - name: Migrations
    description: Preview and import data from supported legacy platforms.
  - name: Assistants
    description: Create and manage voice assistants.
  - name: Tools
    description: >-
      Reusable tools (HTTP APIs and external MCP servers) assistants can call
      mid-conversation.
  - name: Voices
    description: Browse the text-to-speech voice library.
  - name: Calls
    description: Start outbound calls and read call history, transcripts and recordings.
  - name: History
    description: Unified conversation history across calls, messaging and assistant emails.
  - name: Campaigns
    description: Outbound calling campaigns with a compliant power dialer.
  - name: Leads
    description: Manage Audience contacts across campaigns, channels and Call QA metrics.
  - name: Segments
    description: >-
      Saved, dynamic lead filters — reusable audience definitions used for
      Audience search and campaign lead assignment.
  - name: Suppression
    description: Cross-channel marketing opt-outs and active workspace suppression records.
  - name: Callbacks
    description: >-
      Scheduled callbacks booked by the Schedule callback tool across voice,
      chat, and email.
  - name: Phone Numbers
    description: Marketplace numbers and customer-provided numbers.
  - name: Famulor Loop
    description: >-
      Personal business-phone access, directory, presence, devices, and Loop
      call recents.
  - name: SIP Trunks
    description: Bring your own SIP provider and numbers.
  - name: Carrier Connections
    description: Connect a supported carrier account and import its existing phone numbers.
  - name: Knowledge Bases
    description: RAG knowledge bases and documents for assistants.
  - name: Settings
    description: Workspace-level settings such as caller-memory defaults.
  - name: Billing
    description: Balance and minutes ledger of the key owner.
  - name: Automations
    description: >-
      Native workspace automations — list, create, update, trigger. Plan gate:
      automation_platform.
  - name: Milian Missions
    description: Recurring jobs that Milian runs unattended on schedule.
  - name: Integrations
    description: >-
      Calendar integrations (Cal.com, Calendly, Acuity Scheduling, Google
      Calendar, Outlook, native booking engine). Assign them to assistants to
      provide availability and booking tools, plus provider-supported
      appointment lookup, cancellation, and rescheduling.
  - name: Bookings
    description: >-
      Native booking engine — event types with weekly availability, public
      booking pages at /book/{workspace}/{slug}, and the bookings they produce.
  - name: Dashboards
    description: >-
      Custom analytics dashboards, reusable widgets, and tenant-scoped
      performance analytics. Requires the custom_dashboards plan feature.
  - name: Catalog
    description: >-
      Read-only platform catalogs — available models, supported assistant
      languages, and prompt templates.
  - name: Simulations
    description: Assistant simulation tests (plan-gated).
  - name: Versions
    description: Assistant configuration version history.
  - name: Caller IDs
    description: Outbound caller ID verification.
  - name: Widgets
    description: Web widget connectors.
  - name: Messaging
    description: >-
      Telegram, Slack, and Messenger text bots linked to assistants (Chat SDK).
      Includes conversation delay, inactivity end, and conversation-ended
      webhooks.
  - name: QA
    description: Cohort AI Quality Assurance runs over call transcripts.
  - name: White Label
    description: >-
      Manage white-label customer accounts, defaults, credit transfers and
      customer plan offers. Each endpoint documents its required scope and
      workspace eligibility.
  - name: API Keys
    description: >-
      Self-service API keys for the calling workspace or a same-brand workspace
      where the credential's user is owner/admin. A key can only mint further
      keys with a scope subset of its own.
  - name: Workspaces
    description: >-
      List visible workspaces, create an additional workspace for the key owner,
      and mint a dedicated credential for a selected owner/admin workspace.
  - name: SMS
    description: Outbound SMS from workspace phone numbers.
paths:
  /sip-trunks/{id}:
    parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: SIP trunk ID.
    patch:
      tags:
        - SIP Trunks
      summary: Update outbound SIP identity
      description: >-
        Updates only the outbound identity policy for your own SIP trunk.
        Incoming routing, phone numbers and provider connections are preserved.
        Requires sip_trunks:write. Existing configurations keep phone_number
        until explicitly changed.
      operationId: updateSipTrunkIdentity
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              minProperties: 1
              properties:
                outbound_from_user_mode:
                  type: string
                  enum:
                    - phone_number
                    - auth_username
                  default: phone_number
                  description: >-
                    Outbound From user for your own SIP trunk. Phone number
                    preserves the existing behavior. SIP username uses the
                    authentication username and keeps the primary DID unchanged.
                    Not available on imported carrier connections.
                outbound_caller_id_header:
                  type: string
                  enum:
                    - from_display
                    - p_asserted_identity
                    - p_preferred_identity
                  default: from_display
                  description: >-
                    Used with SIP username identity. The primary international
                    DID is sent in the From display name and optionally the
                    selected identity header. Match the carrier caller ID
                    settings.
      responses:
        '200':
          description: The SIP trunk (sanitized).
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/SipTrunk'
              example:
                data:
                  id: st1b2c3d-0000-4000-8000-000000000050
                  name: My SIP provider
                  provider: custom
                  sip_address: sip.example-provider.com
                  auth_username: acme
                  numbers:
                    - '+4930123456'
                  metadata: {}
                  created_at: '2026-06-01T12:00:00Z'
                  updated_at: '2026-06-01T12:00:00Z'
        '400':
          description: Invalid identity settings or imported carrier connection
        '404':
          description: SIP trunk not found
      security:
        - bearerAuth: []
components:
  schemas:
    SipTrunk:
      type: object
      description: >-
        Customer-owned BYO/BYOC SIP trunk. Managed platform trunks, passwords,
        and internal trunk identifiers are never returned.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        provider:
          type: string
          enum:
            - twilio
            - custom
        sip_address:
          type:
            - string
            - 'null'
          description: Provider termination host (no `sip:` prefix, no port).
        auth_username:
          type:
            - string
            - 'null'
        inbound_auth_username:
          type:
            - string
            - 'null'
        numbers:
          type: array
          items:
            type: string
          description: >-
            Exactly one primary number on this trunk. DID: E.164. Extension:
            E.164 or national digits without country code; still used for exact
            inbound matching.
        trunk_kind:
          type: string
          enum:
            - did
            - extension
          description: >-
            `did` = one E.164 phone number. `extension` = one exact primary
            number whose outbound caller-ID format may be national; it is never
            wildcard inbound.
        credential_mode:
          type: string
          enum:
            - shared
            - separate
        outbound_auth_mode:
          type: string
          enum:
            - credentials
            - none
        transport:
          type: string
          enum:
            - auto
            - udp
            - tcp
            - tls
        calling_number_format:
          type: string
          enum:
            - e164_plus
            - e164_no_plus
            - national
          description: How the FROM number is formatted toward the carrier.
        secure_trunking:
          type: boolean
        media_encryption:
          type: string
          enum:
            - allow
            - require
            - disable
        outbound_headers:
          type: object
          additionalProperties:
            type: string
          description: Custom X-* headers on outbound INVITEs.
        inbound_headers:
          type: object
          additionalProperties:
            type: string
        headers_to_attributes:
          type: object
          additionalProperties:
            type: string
        outbound_headers_to_attributes:
          type: object
          additionalProperties:
            type: string
        include_headers:
          type: string
          enum:
            - none
            - x
            - all
        media_codecs:
          type: array
          items:
            type: string
        only_listed_codecs:
          type: boolean
        media_timeout_sec:
          type:
            - integer
            - 'null'
        ringing_timeout_sec:
          type:
            - integer
            - 'null'
        metadata:
          type: object
          additionalProperties: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        outbound_from_user_mode:
          type: string
          enum:
            - phone_number
            - auth_username
          default: phone_number
          description: >-
            Outbound From user for your own SIP trunk. Phone number preserves
            the existing behavior. SIP username uses the authentication username
            and keeps the primary DID unchanged. Not available on imported
            carrier connections.
        outbound_caller_id_header:
          type: string
          enum:
            - from_display
            - p_asserted_identity
            - p_preferred_identity
          default: from_display
          description: >-
            Used with SIP username identity. The primary international DID is
            sent in the From display name and optionally the selected identity
            header. Match the carrier caller ID settings.
      required:
        - id
        - name
        - provider
        - numbers
        - created_at
        - updated_at
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        API key (`fam_...`, created under **Settings → API Keys**) or an OAuth
        2.0 access token (`fam_at_...`). REST operations also require API Access
        for the credential's workspace. Keys can be restricted to scopes such as
        `assistants:read`, `calls:write`, `campaigns:write`, `automations:read`,
        `dashboards:read`, `dashboards:write`, `leads:write`, `segments:write`,
        `loop:read`, `loop:write`, `phone_numbers:write`, `sip_trunks:write`,
        `knowledge:write`, `voices:read`, `billing:read`, `billing:write`,
        `settings:write`, `platform:read`, `platform:write`; a `*:write` scope
        implies the matching `*:read`. Automation and dashboard endpoints also
        accept the legacy `calls:*` scope. Keys without scope restrictions have
        full access within the workspace's available capabilities.

````