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

# Update Call Filter

> Modify an existing call filter without deleting and recreating it.

**Prerequisites:**
- Bearer token — `POST /v1.0/oauth2/tokens`
- An existing `CallFilterId` (`CFID-`) — find one with `GET /v1.0/subscribers/call-filter`

**What this does:** Replaces the configuration of the specified filter. Use this to change modes (e.g., `BLACKLIST` → `WHITELIST`), update allowed/blocked number lists, toggle transcription, change keyword alerts, or adjust restrictions like blocking unknown or international numbers. Note: the Update endpoint only accepts `WHITELIST` and `BLACKLIST` modes — age presets must be set on creation.

**Next steps:**
- Verify the change — `GET /v1.0/subscribers/call-filter`
- Pause without deleting — use `POST /v1.0/subscribers/call-filter/update` with `EnableTranscription` off and an empty rules set, or delete the filter
- Permanently remove — `POST /v1.0/subscribers/call-filter/delete`



## OpenAPI

````yaml /api-reference/openapi.json post /v1.0/subscribers/call-filter/update
openapi: 3.0.3
info:
  title: mPaaS Core APIs
  version: 1.0.8
  description: >-
    The Telegent mPaaS (Mobile Platform as a Service) API gives you full
    programmatic control over mobile phone numbers, messaging, voice routing,
    subscribers, and account management. Use these APIs to provision MVNO and
    IoT numbers, send and receive SMS/MMS, configure intelligent call routing,
    manage subscriber accounts, and apply AI Guardian controls. All requests
    require a Bearer token obtained from the Authentication endpoint. For
    support, visit https://support.telegent.com/support/home
  contact:
    name: Support
    email: support@telegent.com
  termsOfService: https://telegent.com/terms
  license:
    name: Use under LICX
    url: https://telegent.com/license
servers:
  - url: https://api.telegent.com/v1.0
security:
  - BearerAuth: []
tags:
  - name: OAuth2
  - name: AI Guardian
  - name: Accounts
  - name: Distributors
  - name: Message
  - name: Numbers
  - name: Voicemail
  - name: Packages
  - name: Products
  - name: Schedules
  - name: Services
  - name: Sims
  - name: Subscribers
  - name: Subscriptions
  - name: Voice
  - name: Workgroups
paths:
  /v1.0/subscribers/call-filter/update:
    post:
      tags:
        - Subscribers
      summary: Update Call Filter
      description: >-
        Modify an existing call filter without deleting and recreating it.


        **Prerequisites:**

        - Bearer token — `POST /v1.0/oauth2/tokens`

        - An existing `CallFilterId` (`CFID-`) — find one with `GET
        /v1.0/subscribers/call-filter`


        **What this does:** Replaces the configuration of the specified filter.
        Use this to change modes (e.g., `BLACKLIST` → `WHITELIST`), update
        allowed/blocked number lists, toggle transcription, change keyword
        alerts, or adjust restrictions like blocking unknown or international
        numbers. Note: the Update endpoint only accepts `WHITELIST` and
        `BLACKLIST` modes — age presets must be set on creation.


        **Next steps:**

        - Verify the change — `GET /v1.0/subscribers/call-filter`

        - Pause without deleting — use `POST
        /v1.0/subscribers/call-filter/update` with `EnableTranscription` off and
        an empty rules set, or delete the filter

        - Permanently remove — `POST /v1.0/subscribers/call-filter/delete`
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - FilterId
              properties:
                FilterId:
                  type: string
                  description: >-
                    The Call Filter ID you want to update. Format: `CFID-`
                    followed by a UUID.
                  example: CFID-05c3d6d2-21c2-4fab-8c7c-12746cad1499
                SubscriberId:
                  type: string
                  description: >-
                    Telegent Subscriber ID. Format: `TSUID-` followed by a UUID.
                    Create one via `POST /v1.0/subscribers/create` or look up
                    existing IDs with `GET /v1.0/subscribers/get`.
                Phone:
                  type: string
                  description: >-
                    Phone number this filter applies to. Use E.164 format (e.g.,
                    `+15555555555`). Required even when `SubscriberId` is
                    provided.
                FilterMode:
                  type: string
                  enum:
                    - WHITELIST
                    - BLACKLIST
                  description: >-
                    Controls how the call filter behaves. `WHITELIST`: only
                    allowed numbers can call — everyone else is blocked.
                    `BLACKLIST`: blocked numbers are rejected, all others ring
                    through.
                AllowedNumbers:
                  type: array
                  items:
                    type: string
                  description: >-
                    Phone numbers (E.164 format) allowed to call this
                    subscriber. In `WHITELIST` mode, only these numbers can ring
                    through.
                BlockedNumbers:
                  type: array
                  items:
                    type: string
                  description: >-
                    Phone numbers (E.164 format) blocked from calling this
                    subscriber. Calls are rejected or silently dropped.
                EnableTranscription:
                  type: boolean
                  description: >-
                    If `true`, calls are transcribed in real time and analyzed
                    against the keyword rules. Required for any keyword-based
                    call filtering or alerts to work.
                KeywordFilter:
                  type: string
                  description: >-
                    Stringified JSON defining keyword rules. Structure:
                    `{"CustomKeywords":[...],"SystemKeywords":{"Profanity":[...],"Violence":[...]},"SeverityMap":{"keyword":"HIGH|MEDIUM|LOW"}}`.
                    `CustomKeywords` are user-added words; `SystemKeywords` are
                    platform-provided categories; `SeverityMap` assigns a risk
                    level to each term.
                TranscriptionAction:
                  type: string
                  enum:
                    - WARNING
                    - TERMINATE
                    - NOTIFY
                  description: >-
                    What happens when a flagged keyword is detected during live
                    transcription. `WARNING`: play `WarningMessage` to the
                    caller but allow the call to continue. `TERMINATE`: end the
                    call immediately. `NOTIFY`: alert `NotificationPhones`
                    without interrupting the call.
                WarningMessage:
                  type: string
                  description: >-
                    Text-to-speech message played to the caller when
                    `TranscriptionAction` is set to `WARNING`. Keep it short and
                    clear.
                NotificationPhones:
                  type: array
                  items:
                    type: string
                  description: >-
                    Phone numbers (E.164 format) that receive an alert when this
                    filter triggers. Typically used for a guardian's phone to be
                    notified about activity on a child's account.
                ApplyToOutbound:
                  type: boolean
                  description: If `true`, filtering applies to calls the subscriber places.
                ApplyToInbound:
                  type: boolean
                  description: >-
                    If `true`, filtering applies to calls the subscriber
                    receives.
                BlockUnknownNumbers:
                  type: boolean
                  description: >-
                    If `true`, calls from any number not on the allowed list are
                    blocked or sent to voicemail.
                BlockInternational:
                  type: boolean
                  description: >-
                    If `true`, calls to or from numbers outside the subscriber's
                    country code are blocked.
                RecordFlaggedCalls:
                  type: boolean
                  description: >-
                    If `true`, any call flagged by keyword detection or other
                    rules is recorded for later review.
      responses:
        '200':
          description: Call Filter Updated
          content:
            application/json:
              schema:
                type: object
              examples:
                example:
                  value:
                    FilterId: CFID-05c3d6d2-21c2-4fab-8c7c-12746cad1499
                    SubscriberId: TSUID-C7AB61E0-9AD9-4512-ACA8-EDA284131441
                    Phone: '+1234567891'
                    FilterMode: WHITELIST
                    AllowedNumbers:
                      - '+1111111111'
                      - '+2222222222'
                    BlockedNumbers:
                      - '+3333333333'
                    EnableTranscription: true
                    TranscriptionAction: WARNING
                    WarningMessage: This call may be terminated
                    NotificationPhones:
                      - '+9999999999'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest_Result'
              example:
                StatusCode: 400
                Message: >-
                  Bad request: one or more required fields are missing or
                  contain an invalid value.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized_Result'
              example:
                StatusCode: 401
                Message: >-
                  Unauthorized: Bearer token is missing, expired, or invalid.
                  Re-authenticate via POST /v1.0/oauth2/tokens.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden_Result'
              example:
                StatusCode: 403
                Message: >-
                  Forbidden: your token does not have permission to access this
                  resource. Check the ApiEndpoint scope.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound_Result'
              example:
                StatusCode: 404
                Message: >-
                  Not found: the requested resource does not exist or belongs to
                  a different account.
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodNotAllowed_Result'
              example:
                StatusCode: 405
                Message: >-
                  Method not allowed: verify the HTTP method required for this
                  endpoint.
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestTimeout_Result'
              example:
                StatusCode: 408
                Message: >-
                  Request timeout: the server did not receive a complete request
                  within the allowed time. Retry with exponential backoff.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests_Result'
              example:
                StatusCode: 429
                Message: >-
                  Too many requests: rate limit exceeded. Slow your request
                  cadence and retry after a short delay.
        '500':
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError_Result'
              example:
                StatusCode: 500
                Message: >-
                  Internal server error: an unexpected error occurred. If the
                  problem persists contact support@telegent.com.
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable_Result'
              example:
                StatusCode: 503
                Message: >-
                  Service unavailable: the API is temporarily unavailable. Retry
                  after a short delay.
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayTimeout_Result'
              example:
                StatusCode: 504
                Message: >-
                  Gateway timeout: an upstream service did not respond in time.
                  Retry with exponential backoff.
      x-codeSamples:
        - lang: JSON
          source: |-
            {
              "FilterId": "CFID-05c3d6d2-21c2-4fab-8c7c-12746cad1499",
              "SubscriberId": "SID-C7AB61E0-9AD9-4512-ACA8-EDA284131441",
              "Phone": "+1234567891",
              "FilterMode": "WHITELIST",
              "AllowedNumbers": ["+1111111111", "+2222222222"],
              "BlockedNumbers": ["+3333333333"],
              "EnableTranscription": true,
              "KeywordFilter": "{\"CustomKeywords\":[\"inappropriate\",\"banned\"],\"SystemKeywords\":{\"Profanity\":[\"word1\",\"word2\"],\"Violence\":[\"threat1\"]},\"SeverityMap\":{\"Word1\":\"HIGH\",\"Inappropriate\":\"MEDIUM\"}}",
              "TranscriptionAction": "WARNING",
              "WarningMessage": "This call may be terminated",
              "NotificationPhones": ["+9999999999"]
            }
        - lang: cURL
          source: >-
            curl -X POST
            https://api.telegent.com/v1.0/subscribers/call-filter/update \
              -H 'Authorization: Bearer YOUR_TOKEN' \
              -H 'Content-Type: application/json' \
              -d '{
                "FilterId": "CFID-05c3d6d2-21c2-4fab-8c7c-12746cad1499",
                "SubscriberId": "SID-C7AB61E0-9AD9-4512-ACA8-EDA284131441",
                "Phone": "+1234567891",
                "FilterMode": "WHITELIST",
                "AllowedNumbers": ["+1111111111", "+2222222222"],
                "BlockedNumbers": ["+3333333333"],
                "EnableTranscription": true,
                "TranscriptionAction": "WARNING",
                "WarningMessage": "This call may be terminated",
                "NotificationPhones": ["+9999999999"]
              }'
components:
  schemas:
    BadRequest_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 400
        Message:
          type: string
          nullable: true
          example: >-
            Bad request: one or more required fields are missing or contain an
            invalid value.
      additionalProperties: false
      example:
        StatusCode: 400
        Message: >-
          Bad request: one or more required fields are missing or contain an
          invalid value.
    Unauthorized_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 401
        Message:
          type: string
          nullable: true
          example: 'Unauthorized: Bearer token is missing, expired, or invalid.'
      additionalProperties: false
      example:
        StatusCode: 401
        Message: 'Unauthorized: Bearer token is missing, expired, or invalid.'
    Forbidden_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 403
        Message:
          type: string
          nullable: true
          example: >-
            Forbidden: your token does not have permission to access this
            resource.
      additionalProperties: false
      example:
        StatusCode: 403
        Message: >-
          Forbidden: your token does not have permission to access this
          resource.
    NotFound_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 404
        Message:
          type: string
          nullable: true
          example: >-
            Not found: the requested resource does not exist or belongs to a
            different account.
      additionalProperties: false
      example:
        StatusCode: 404
        Message: >-
          Not found: the requested resource does not exist or belongs to a
          different account.
    MethodNotAllowed_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 405
        Message:
          type: string
          nullable: true
          example: >-
            Method not allowed: verify the HTTP method required for this
            endpoint.
      additionalProperties: false
      example:
        StatusCode: 405
        Message: 'Method not allowed: verify the HTTP method required for this endpoint.'
    RequestTimeout_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 408
        Message:
          type: string
          nullable: true
          example: >-
            Request timeout: the server did not receive a complete request in
            time.
      additionalProperties: false
      example:
        StatusCode: 408
        Message: >-
          Request timeout: the server did not receive a complete request in
          time.
    TooManyRequests_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 429
        Message:
          type: string
          nullable: true
          example: >-
            Too many requests: rate limit exceeded. Slow your request cadence
            and retry.
      additionalProperties: false
      example:
        StatusCode: 429
        Message: >-
          Too many requests: rate limit exceeded. Slow your request cadence and
          retry.
    InternalServerError_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 500
        Message:
          type: string
          nullable: true
          example: 'Internal server error: an unexpected error occurred.'
      additionalProperties: false
      example:
        StatusCode: 500
        Message: 'Internal server error: an unexpected error occurred.'
    ServiceUnavailable_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 503
        Message:
          type: string
          nullable: true
          example: 'Service unavailable: the API is temporarily unavailable.'
      additionalProperties: false
      example:
        StatusCode: 503
        Message: 'Service unavailable: the API is temporarily unavailable.'
    GatewayTimeout_Result:
      required:
        - StatusCode
      type: object
      properties:
        StatusCode:
          type: integer
          format: int32
          example: 504
        Message:
          type: string
          nullable: true
          example: 'Gateway timeout: an upstream service did not respond in time.'
      additionalProperties: false
      example:
        StatusCode: 504
        Message: 'Gateway timeout: an upstream service did not respond in time.'

````