Telnyx Programmable Fax Commands API

Programmable fax command operations

OpenAPI Specification

telnyx-programmable-fax-commands-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  contact:
    email: support@telnyx.com
  description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform.
  title: Telnyx Access Tokens Programmable Fax Commands API
  version: 2.0.0
  x-endpoint-cost: light
servers:
- description: Version 2.0.0 of the Telnyx API
  url: https://api.telnyx.com/v2
security:
- bearerAuth: []
tags:
- description: Programmable fax command operations
  name: Programmable Fax Commands
paths:
  /faxes:
    get:
      description: ''
      operationId: ListFaxes
      parameters:
      - description: 'Consolidated filter parameter (deepObject style). Originally: filter[created_at][gte], filter[created_at][gt], filter[created_at][lte], filter[created_at][lt], filter[direction][eq], filter[from][eq], filter[to][eq]'
        explode: true
        in: query
        name: filter
        schema:
          properties:
            created_at:
              description: Date range filtering operations for fax creation timestamp
              properties:
                gt:
                  description: ISO 8601 date time for filtering faxes created after that date
                  example: '2020-02-02T22:25:27.521992Z'
                  format: date-time
                  type: string
                gte:
                  description: ISO 8601 date time for filtering faxes created after or on that date
                  example: '2020-02-02T22:25:27.521992Z'
                  format: date-time
                  type: string
                lt:
                  description: ISO 8601 formatted date time for filtering faxes created before that date
                  example: '2020-02-02T22:25:27.521992Z'
                  format: date-time
                  type: string
                lte:
                  description: ISO 8601 formatted date time for filtering faxes created on or before that date
                  example: '2020-02-02T22:25:27.521992Z'
                  format: date-time
                  type: string
              type: object
            direction:
              description: Direction filtering operations
              properties:
                eq:
                  description: The direction, inbound or outbound, for filtering faxes sent from this account
                  example: inbound
                  type: string
              type: object
            from:
              description: From number filtering operations
              properties:
                eq:
                  description: The phone number, in E.164 format for filtering faxes sent from this number
                  example: '+13127367276'
                  type: string
              type: object
            to:
              description: To number filtering operations
              properties:
                eq:
                  description: The phone number, in E.164 format for filtering faxes sent to this number
                  example: '+13127367276'
                  type: string
              type: object
          type: object
        style: deepObject
      - description: 'Consolidated pagination parameter (deepObject style). Originally: page[size], page[number]'
        explode: true
        in: query
        name: page
        schema:
          properties:
            number:
              description: Number of the page to be retrieved
              example: 2
              type: integer
            size:
              description: Number of fax resources for the single page returned
              example: 2
              type: integer
          type: object
        style: deepObject
      responses:
        '200':
          $ref: '#/components/responses/ListFaxesResponse'
        '404':
          $ref: '#/components/responses/programmable-fax_NotFoundResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: View a list of faxes
      tags:
      - Programmable Fax Commands
      x-latency-category: background
    post:
      description: "Send a fax. Files have size limits and page count limit validations. If a file is bigger than 50MB or has more than 350 pages it will fail with `file_size_limit_exceeded` and `page_count_limit_exceeded` respectively. \n\n**Expected Webhooks:**\n\n- `fax.queued`\n- `fax.media.processed`\n- `fax.sending.started`\n- `fax.delivered`\n- `fax.failed`\n"
      operationId: SendFax
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendFaxRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SendFaxMultipartRequest'
        description: Send fax request
        required: true
      responses:
        '202':
          $ref: '#/components/responses/SendFaxResponse'
        '422':
          $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: Send a fax
      tags:
      - Programmable Fax Commands
      x-latency-category: responsive
  /faxes/{id}:
    delete:
      operationId: DeleteFax
      parameters:
      - description: The unique identifier of a fax.
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '204':
          description: The resource was deleted successfully.
        '404':
          $ref: '#/components/responses/programmable-fax_NotFoundResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: Delete a fax
      tags:
      - Programmable Fax Commands
      x-latency-category: responsive
    get:
      operationId: ViewFax
      parameters:
      - description: The unique identifier of a fax.
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          $ref: '#/components/responses/GetFaxResponse'
        '404':
          $ref: '#/components/responses/programmable-fax_NotFoundResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: View a fax
      tags:
      - Programmable Fax Commands
      x-latency-category: responsive
  /faxes/{id}/actions/cancel:
    post:
      description: 'Cancel the outbound fax that is in one of the following states: `queued`, `media.processed`, `originated` or `sending` '
      operationId: CancelFax
      parameters:
      - description: The unique identifier of a fax.
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '202':
          $ref: '#/components/responses/CancelFaxResponse'
        '404':
          $ref: '#/components/responses/programmable-fax_NotFoundResponse'
        '422':
          $ref: '#/components/responses/programmable-fax_UnprocessableEntityResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: Cancel a fax
      tags:
      - Programmable Fax Commands
      x-latency-category: responsive
  /faxes/{id}/actions/refresh:
    post:
      description: Refreshes the inbound fax's media_url when it has expired
      operationId: RefreshFax
      parameters:
      - description: The unique identifier of a fax.
        in: path
        name: id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          $ref: '#/components/responses/RefreshFaxResponse'
        '404':
          $ref: '#/components/responses/programmable-fax_NotFoundResponse'
        default:
          $ref: '#/components/responses/programmable-fax_GenericErrorResponse'
      summary: Refresh a fax
      tags:
      - Programmable Fax Commands
      x-latency-category: responsive
components:
  schemas:
    MediaUrl:
      description: The URL (or list of URLs) to the PDF used for the fax's media. media_url and media_name/contents can't be submitted together.
      example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
      type: string
    From:
      description: The phone number, in E.164 format, the fax will be sent from.
      example: '+13125790015'
      type: string
    StoreMedia:
      default: false
      description: Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.
      type: boolean
    Quality:
      default: high
      description: The quality of the fax. The `ultra` settings provides the highest quality available, but also present longer fax processing times. `ultra_light` is best suited for images, wihle `ultra_dark` is best suited for text.
      enum:
      - normal
      - high
      - very_high
      - ultra_light
      - ultra_dark
      example: high
      type: string
    To:
      description: The phone number, in E.164 format, the fax will be sent to or SIP URI
      example: '+13127367276'
      type: string
    ConnectionId:
      description: The ID of the connection used to send the fax.
      example: '234423'
      type: string
    programmable-fax_Error:
      properties:
        code:
          type: string
        detail:
          type: string
        meta:
          additionalProperties: true
          type: object
        source:
          properties:
            parameter:
              description: Indicates which query parameter caused the error.
              type: string
            pointer:
              description: JSON pointer (RFC6901) to the offending entity.
              type: string
          type: object
        title:
          type: string
      required:
      - code
      - title
      type: object
    SendFaxRequest:
      properties:
        black_threshold:
          default: 95
          description: The black threshold percentage for monochrome faxes. Only applicable if `monochrome` is set to `true`.
          maximum: 100
          minimum: 1
          type: integer
        client_state:
          description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
          example: aGF2ZSBhIG5pY2UgZGF5ID1d
          type: string
        connection_id:
          description: The connection ID to send the fax with.
          example: '234423'
          type: string
        from:
          $ref: '#/components/schemas/From'
        from_display_name:
          description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from` field.
          example: Company Name
          type: string
        media_name:
          $ref: '#/components/schemas/MediaName'
        media_url:
          $ref: '#/components/schemas/MediaUrl'
        monochrome:
          default: false
          description: The flag to enable monochrome, true black and white fax results.
          type: boolean
        preview_format:
          default: tiff
          description: The format for the preview file in case the `store_preview` is `true`.
          enum:
          - pdf
          - tiff
          type: string
        quality:
          $ref: '#/components/schemas/Quality'
        store_media:
          default: false
          description: Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.
          type: boolean
        store_preview:
          default: false
          description: Should fax preview be stored on temporary URL.
          type: boolean
        t38_enabled:
          default: true
          description: The flag to disable the T.38 protocol.
          type: boolean
        to:
          $ref: '#/components/schemas/To'
        webhook_url:
          description: Use this field to override the URL to which Telnyx will send subsequent webhooks for this fax.
          example: https://www.example.com/server-b/
          type: string
      required:
      - connection_id
      - from
      - to
      title: Send fax request
      type: object
    Direction:
      description: The direction of the fax.
      enum:
      - inbound
      - outbound
      example: outbound
      type: string
    StorePreview:
      default: false
      description: Should fax preview be stored on temporary URL.
      type: boolean
    Monochrome:
      default: false
      description: The flag to enable monochrome, true black and white fax results.
      type: boolean
    T38Enabled:
      default: true
      description: The flag to disable the T.38 protocol.
      type: boolean
    Id:
      description: Identifies the type of resource.
      example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
      format: uuid
      type: string
    Fax:
      example:
        client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
        connection_id: c-1
        created_at: '2020-05-05T09:59:12Z'
        direction: outbound
        from: '+123'
        id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
        media_url: http://www.example.com/fax.pdf
        preview_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b_preview.tiff?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51
        quality: high
        record_type: fax
        status: queued
        store_media: true
        stored_media_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51
        to: '+456'
        updated_at: '2020-05-05T09:59:12Z'
        webhook_failover_url: ''
        webhook_url: http://www.example.com/webhooks
      properties:
        client_state:
          description: State received from a command.
          example: aGF2ZSBhIG5pY2UgZGF5ID1d
          type: string
        connection_id:
          $ref: '#/components/schemas/ConnectionId'
        created_at:
          description: ISO 8601 timestamp when resource was created
          format: date-time
          type: string
        direction:
          $ref: '#/components/schemas/Direction'
        from:
          $ref: '#/components/schemas/From'
        from_display_name:
          description: The string used as the caller id name (SIP From Display Name) presented to the destination (`to` number).
          example: Company Name
          type: string
        id:
          $ref: '#/components/schemas/Id'
        media_name:
          $ref: '#/components/schemas/MediaName'
        media_url:
          $ref: '#/components/schemas/MediaUrl'
        preview_url:
          description: If `store_preview` was set to `true`, this is a link to temporary location. Link expires after 10 minutes.
          type: string
        quality:
          $ref: '#/components/schemas/Quality'
        record_type:
          description: Identifies the type of the resource.
          enum:
          - fax
          example: fax
          type: string
        status:
          description: Status of the fax
          enum:
          - queued
          - media.processed
          - originated
          - sending
          - delivered
          - failed
          - initiated
          - receiving
          - media.processing
          - received
          example: queued
          type: string
        store_media:
          description: Should fax media be stored on temporary URL. It does not support media_name.
          type: boolean
        stored_media_url:
          description: If store_media was set to true, this is a link to temporary location. Link expires after 10 minutes.
          type: string
        to:
          $ref: '#/components/schemas/To'
        updated_at:
          description: ISO 8601 timestamp when resource was updated
          format: date-time
          type: string
        webhook_failover_url:
          description: Optional failover URL that will receive fax webhooks if webhook_url doesn't return a 2XX response
          type: string
        webhook_url:
          description: URL that will receive fax webhooks
          type: string
      type: object
    PaginationMeta:
      properties:
        page_number:
          example: 2
          type: integer
        page_size:
          example: 25
          type: integer
        total_pages:
          example: 3
          type: integer
        total_results:
          example: 55
          type: integer
      type: object
    MediaName:
      description: The media_name used for the fax's media. Must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. media_name and media_url/contents can't be submitted together.
      example: my_media_uploaded_to_media_storage_api
      type: string
    SendFaxMultipartRequest:
      properties:
        connection_id:
          $ref: '#/components/schemas/ConnectionId'
        contents:
          description: The file you want to upload. The maximum allowed size is 20 MB. contents and media_name/media_url can't be submitted together.
          format: binary
          type: string
        from:
          $ref: '#/components/schemas/From'
        monochrome:
          $ref: '#/components/schemas/Monochrome'
        quality:
          $ref: '#/components/schemas/Quality'
        store_media:
          $ref: '#/components/schemas/StoreMedia'
        store_preview:
          $ref: '#/components/schemas/StorePreview'
        t38_enabled:
          $ref: '#/components/schemas/T38Enabled'
        to:
          $ref: '#/components/schemas/To'
      required:
      - connection_id
      - contents
      - from
      - to
      title: Send fax multipart request
      type: object
    programmable-fax_Errors:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/programmable-fax_Error'
          type: array
      type: object
  responses:
    CancelFaxResponse:
      content:
        application/json:
          schema:
            example:
              data:
                result: ok
            properties:
              data:
                properties:
                  result:
                    example: ok
                    type: string
                type: object
            title: Successful response upon accepting cancel fax command
            type: object
      description: Successful response upon accepting cancel fax command
    SendFaxResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/Fax'
            title: Send Fax Response
            type: object
      description: Send fax response
    programmable-fax_GenericErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/programmable-fax_Errors'
      description: Unexpected error
    ListFaxesResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                items:
                  $ref: '#/components/schemas/Fax'
                type: array
              meta:
                $ref: '#/components/schemas/PaginationMeta'
            title: List Faxes Response
            type: object
      description: List faxes response
    GetFaxResponse:
      content:
        application/json:
          schema:
            properties:
              data:
                $ref: '#/components/schemas/Fax'
            title: Get Fax Response
            type: object
      description: Get fax response
    RefreshFaxResponse:
      content:
        application/json:
          schema:
            example:
              data:
                result: ok
            properties:
              data:
                properties:
                  result:
                    example: ok
                    type: string
                type: object
            title: Refresh Fax Response
            type: object
      description: Refresh fax response
    programmable-fax_NotFoundResponse:
      content:
        application/json:
          example:
            errors:
            - code: '404'
              detail: The requested resource does not exist
              title: Not Found
          schema:
            $ref: '#/components/schemas/programmable-fax_Errors'
      description: The requested resource does not exist
    programmable-fax_UnprocessableEntityResponse:
      content:
        application/json:
          example:
            errors:
            - code: '422'
              detail: The request parameters failed validation
              title: Unprocessable Entity
          schema:
            $ref: '#/components/schemas/programmable-fax_Errors'
      description: Unprocessable entity. The request was well-formed but contains semantic errors.
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http
    branded-calling_bearerAuth:
      description: API key passed as a Bearer token in the Authorization header
      scheme: bearer
      type: http
    oauthClientAuth:
      description: OAuth 2.0 authentication for Telnyx API and MCP integrations
      flows:
        authorizationCode:
          authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
          refreshUrl: https://api.telnyx.com/v2/oauth/token
          scopes:
            admin: Administrative access to Telnyx resources
          tokenUrl: https://api.telnyx.com/v2/oauth/token
        clientCredentials:
          scopes:
            admin: Administrative access to Telnyx resources
          tokenUrl: https://api.telnyx.com/v2/oauth/token
      type: oauth2
    outbound-voice-profiles_bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http
    pronunciation-dicts_bearerAuth:
      description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
      scheme: bearer
      type: http
    stored-payment-transactions_bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http