> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# Send a Fax

POST https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/Faxes
Content-Type: application/x-www-form-urlencoded

Send a fax.

#### Permissions

The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Fax_.

[Learn more about API scopes](/docs/platform/your-signalwire-api-space).

Reference: https://signalwire.com/docs/compatibility-api/rest/faxes/send-fax

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: compatibility
  version: 1.0.0
paths:
  /Accounts/{AccountSid}/Faxes:
    post:
      operationId: send-fax
      summary: Send a Fax
      description: >-
        Send a fax.


        #### Permissions


        The API token used to authenticate must have the following scope(s)
        enabled to make a successful request: _Fax_.


        [Learn more about API scopes](/docs/platform/your-signalwire-api-space).
      tags:
        - subpackage_faxes
      parameters:
        - name: AccountSid
          in: path
          description: The Project ID that uniquely identifies the Account.
          required: true
          schema:
            $ref: '#/components/schemas/uuid'
        - name: Authorization
          in: header
          description: >-
            SignalWire Basic Authentication using Project ID and API Token.


            The client sends HTTP requests with the Authorization header
            containing

            the word Basic followed by a space and a base64-encoded string of
            project_id:token.

            The project ID will be used as the username and the API token as the
            password.


            Example:

            ```

            Authorization: Basic base64(project_id:token)

            ```
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FaxResponse'
        '400':
          description: >-
            The request was invalid or cannot be processed. Check the error
            details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '401':
          description: Authentication failed. Please verify your credentials and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
        '422':
          description: >-
            The request could not be processed due to validation errors. Check
            the error details for more information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendFaxRequest'
servers:
  - url: https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01
    description: SignalWire Compatibility API
components:
  schemas:
    uuid:
      type: string
      format: uuid
      description: Universal Unique Identifier.
      title: uuid
    SendFaxRequestQuality:
      type: string
      enum:
        - standard
        - fine
        - superfine
      default: fine
      description: The quality of the fax. Default is 'fine'.
      title: SendFaxRequestQuality
    SendFaxRequestStatusCallbackMethod:
      type: string
      enum:
        - GET
        - POST
      default: POST
      description: The HTTP method to use for status callback requests. Default is 'POST'.
      title: SendFaxRequestStatusCallbackMethod
    SendFaxRequestStoreMedia:
      type: string
      enum:
        - 'true'
        - 'false'
      default: 'true'
      description: Whether to store the fax media. Default is 'true'.
      title: SendFaxRequestStoreMedia
    SendFaxRequest:
      type: object
      properties:
        MediaUrl:
          type: string
          description: The URL hosting the fax media to send.
        To:
          type: string
          description: >-
            The phone number, in E.164 format, or SIP URI the fax will be sent
            to.
        From:
          type: string
          description: >-
            The phone number, in E.164 format, or client identifier the fax will
            be sent from.
        Quality:
          $ref: '#/components/schemas/SendFaxRequestQuality'
          default: fine
          description: The quality of the fax. Default is 'fine'.
        StatusCallback:
          type: string
          description: >-
            The URL to send status callback requests to when the fax status
            changes.
        StatusCallbackMethod:
          $ref: '#/components/schemas/SendFaxRequestStatusCallbackMethod'
          default: POST
          description: >-
            The HTTP method to use for status callback requests. Default is
            'POST'.
        StatusCallbackEvent:
          type: array
          items:
            type: string
          description: >-
            The events that trigger status callback requests. Valid values:
            'initiated', 'ringing', 'answered', 'completed',
            'ringing_forwarded', 'ringing_queued'. Default is ['completed'].
        StoreMedia:
          $ref: '#/components/schemas/SendFaxRequestStoreMedia'
          default: 'true'
          description: Whether to store the fax media. Default is 'true'.
        Ttl:
          type: integer
          default: 60
          description: >-
            Time to live in minutes for the fax. Must be between 5 and 300.
            Default is 60.
        SipAuthUsername:
          type: string
          description: The username for SIP authentication.
        SipAuthPassword:
          type: string
          description: The password for SIP authentication.
      required:
        - MediaUrl
        - To
        - From
      description: Request body for sending a fax.
      title: SendFaxRequest
    FaxDirection:
      type: string
      enum:
        - inbound
        - outbound
      description: Fax direction.
      title: FaxDirection
    FaxQuality:
      type: string
      enum:
        - standard
        - fine
        - superfine
      description: Fax quality.
      title: FaxQuality
    FaxStatus:
      type: string
      enum:
        - queued
        - processing
        - sending
        - delivered
        - receiving
        - received
        - no-answer
        - busy
        - failed
        - canceled
      description: Fax status.
      title: FaxStatus
    FaxLinks:
      type: object
      properties:
        media:
          type: string
          description: Media associated with this fax.
      required:
        - media
      description: Fax links.
      title: FaxLinks
    FaxResponse:
      type: object
      properties:
        account_sid:
          type: string
          description: The unique identifier for the account this fax is associated with.
        api_version:
          type: string
          description: The version of the SignalWire API.
        date_created:
          type: string
          description: The date and time, in ISO 8601 format, the fax was created.
        date_updated:
          type: string
          description: The date and time, in ISO 8601 format, the fax was updated.
        direction:
          $ref: '#/components/schemas/FaxDirection'
          description: The direction of the fax.
        from:
          type: string
          description: The phone number, in E.164 format, the fax was sent from.
        media_url:
          type:
            - string
            - 'null'
          description: The URL hosting the received media, or null if not available.
        media_sid:
          type: string
          description: >-
            The unique identifier for the media instance associated with the fax
            instance.
        num_pages:
          type:
            - string
            - 'null'
          description: >-
            The number of pages in the fax document, or null if not yet
            determined.
        price:
          type:
            - string
            - 'null'
          description: The cost of the fax, or null if not yet calculated.
        price_unit:
          type: string
          description: The currency, in ISO 4217 format, of the price.
        quality:
          $ref: '#/components/schemas/FaxQuality'
          description: The quality of the fax.
        sid:
          type: string
          description: The unique identifier of the fax.
        status:
          $ref: '#/components/schemas/FaxStatus'
          description: The status of the fax.
        to:
          type: string
          description: The phone number, in E.164 format, the fax was sent to.
        duration:
          type: integer
          description: The time, in seconds, it took to deliver a fax.
        links:
          $ref: '#/components/schemas/FaxLinks'
          description: The URL links for resources associated with the fax.
        url:
          type: string
          description: The URL of this resource.
        error_code:
          type:
            - string
            - 'null'
          description: Error code for this resource, or null if no error.
        error_message:
          type:
            - string
            - 'null'
          description: The description of this error, or null if no error.
      required:
        - account_sid
        - api_version
        - date_created
        - date_updated
        - direction
        - from
        - media_url
        - media_sid
        - num_pages
        - price
        - price_unit
        - quality
        - sid
        - status
        - to
        - duration
        - links
        - url
        - error_code
        - error_message
      description: Response containing a single fax.
      title: FaxResponse
    CompatibilityErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: Error code.
        message:
          type: string
          description: Error message.
        more_info:
          type: string
          description: URL for more information about the error.
        status:
          type: integer
          description: HTTP status code.
      required:
        - code
        - message
        - more_info
        - status
      description: Error response model.
      title: CompatibilityErrorResponse
  securitySchemes:
    SignalWireBasicAuth:
      type: http
      scheme: basic
      description: >-
        SignalWire Basic Authentication using Project ID and API Token.


        The client sends HTTP requests with the Authorization header containing

        the word Basic followed by a space and a base64-encoded string of
        project_id:token.

        The project ID will be used as the username and the API token as the
        password.


        Example:

        ```

        Authorization: Basic base64(project_id:token)

        ```

```

## Examples



**Request**

```json
{
  "MediaUrl": "https://example.com/fax.pdf",
  "To": "+13104456789",
  "From": "+13103383454"
}
```

**Response**

```json
{
  "account_sid": "b3877c40-da60-4998-90ad-b792e98472ac",
  "api_version": "v1",
  "date_created": "2018-11-26T20:00:00Z",
  "date_updated": "2018-11-27T20:00:00Z",
  "direction": "inbound",
  "from": "+13103383454",
  "media_url": "https://example.com/fax.pdf",
  "media_sid": "b3877c40-da60-4998-90ad-b792e98472me",
  "num_pages": "3",
  "price": "-0.005",
  "price_unit": "USD",
  "quality": "standard",
  "sid": "b3877c40-da60-4998-90ad-b792e98472fx",
  "status": "queued",
  "to": "+13104456789",
  "duration": 5000,
  "links": {
    "media": "/fax/v1/Faxes/b3877c40-da60-4998-90ad-b792e98472fx/Media"
  },
  "url": "/fax/v1/Faxes/b3877c40-da60-4998-90ad-b792e98472fx",
  "error_code": null,
  "error_message": null
}
```

**SDK Code**

```python
import requests

url = "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes"

payload = ""
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}

response = requests.post(url, data=payload, headers=headers, auth=("<project_id>", "<api_token>"))

print(response.json())
```

```javascript
const url = 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes';
const credentials = btoa("<project_id>:<api_token>");

const options = {
  method: 'POST',
  headers: {
    Authorization: `Basic ${credentials}`,
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: new URLSearchParams('')
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes"

	req, _ := http.NewRequest("POST", url, nil)

	req.SetBasicAuth("<project_id>", "<api_token>")
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.basic_auth("<project_id>", "<api_token>")
request["Content-Type"] = 'application/x-www-form-urlencoded'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes")
  .basicAuth("<project_id>", "<api_token>")
  .header("Content-Type", "application/x-www-form-urlencoded")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes', [
  'form_params' => null,
  'headers' => [
    'Content-Type' => 'application/x-www-form-urlencoded',
  ],
    'auth' => ['<project_id>', '<api_token>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes");
client.Authenticator = new HttpBasicAuthenticator("<project_id>", "<api_token>");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<project_id>:<api_token>".utf8).base64EncodedString()

let headers = [
  "Authorization": "Basic \(credentials)",
  "Content-Type": "application/x-www-form-urlencoded"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/Faxes")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```