> Tychron Atlas API & Provisioning Reference — chapter 16 of 35 as Markdown. Web version: https://docs.tychron.com/api-reference/call-data-webhooks/
> Source: https://docs.tychron.com/api-reference/ · Updated 2026-08-12 · Generated from the Atlas OpenAPI spec (https://api.atlas.tychron.online/api/v1/openapi is the live contract; this file is a dated snapshot of it).
> Source revision: atlas_api_reference_2026-08-12.md · sha256 482ebd3b014af053 · sanitize gate v1 clean · reconciled with OpenAPI 2026.8.25-p01 (spec sha256 cc049ef38c71cd6e) on 2026-09-05 · content last modified 2026-09-09 · newer definition under review since 2026-09-09 (not yet reconciled)
> Scope: the Atlas platform API only. The SMS, MMS, CNAM, LRN and MCL services are separate APIs with their own specifications: https://docs.tychron.com/openapi/
> Machine index: https://docs.tychron.com/llms.txt

# Call Data Webhooks

## Schema

A Call Data Webhook is a registered endpoint where CDRs should be sent once billed by the system.

Prior to July 6, 2026, this would ONLY send SMS and MMS CDRs.

Bulk Dip Tasks can be configured to send their generated CDRs with a `enable_cdr_export` flag.

LRN, CNAM and MRL can similarly be enabled with the same flag: `enable_cdr_export` on the request.


__Type__ Object

| Name                  | Type                                   | Description                              |
| --------------------- | -------------------------------------- | ---------------------------------------- |
| `auth_identity`       | String                                 | [Desc. `auth_identity`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-225)       |
| `auth_method`         | Enum(`NONE`, `BASIC`, `BEARER`):String | [Desc. `auth_method`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-226)         |
| `auth_name`           | String                                 | [Desc. `auth_name`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-227)           |
| `auth_secret`         | String                                 | [Desc. `auth_secret`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-228)         |
| `custom_headers`      | Array:[SubObject](https://docs.tychron.com/api-reference/call-data-webhooks/#type-229)           | [Desc. `custom_headers`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-230)      |
| `custom_query_params` | Array:[SubObject](https://docs.tychron.com/api-reference/call-data-webhooks/#type-231)           | [Desc. `custom_query_params`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-232) |
| `data`                | String                                 | [Desc. `data`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-233)                |
| `id`                  | String(format:ulid)                    | [Desc. `id`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-234)                  |
| `inserted_at`         | String(format:date-time)               | An ISO8601 formatted timestamp           |
| `name`                | String(1..255)                         | [Desc. `name`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-235)                |
| `notes`               | String(0..65535)                       | [Desc. `notes`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-236)               |
| `protocol`            | Enum(`NONE`, `HTTP`, `SFTP`):String    | [Desc. `protocol`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-237)            |
| `updated_at`          | String(format:date-time)               | An ISO8601 formatted timestamp           |

#### Desc. `auth_identity` {#desc-225}

Acts a the username in an authorization pair, only applicable if the auth method is `BASIC`.

#### Desc. `auth_method` {#desc-226}

Depending on the protocol, this will affect the authorization behaviour.

* `NONE` - no authorization is provided if not required, otherwise placeholder values will be used
* `BASIC` - the `auth_identity` acts as the username while the `auth_secret` acts as the password
  * With `HTTP` - an `Authorization: Basic <BASE64-VALUE>` header will be set
  * With `SFTP` - the session will be authenticated using the `auth_identity` and `auth_secret`
* `BEARER` - the `auth_identity` is ignored and only the `auth_secret` is used verbatim
  * With `HTTP` - an `Authorization: Bearer <VALUE>` header will be set
  * with `SFTP` - the username will be a placeholder value and the password will be set

#### Desc. `auth_name` {#desc-227}

Reserved for other protocols that may require additional auth information.

#### Desc. `auth_secret` {#desc-228}

Acts as the password in an authorization pair, if using `BEARER`, it will be the verbatim token.

#### SubObject {#type-229}

Sub-Schema

__Type__ Object

| Name    | Type   | Description |
| ------- | ------ | ----------- |
| `key`   | String |             |
| `value` | String |             |





#### Desc. `custom_headers` {#desc-230}

A list of custom header values that should be sent on the `HTTP` request.

Headers are currently unused if the protocol is not `HTTP`.

#### SubObject {#type-231}

Sub-Schema

__Type__ Object

| Name    | Type   | Description |
| ------- | ------ | ----------- |
| `key`   | String |             |
| `value` | String |             |





#### Desc. `custom_query_params` {#desc-232}

A list of custom query parameters that should be sent on the `HTTP` request.

These are currently unused if the protocol is not `HTTP`.

#### Desc. `data` {#desc-233}

Depending on the protocol, this will contain the url or address of the endpoint.

For HTTP, it will be an http url, as for SFTP, it will be the hostname and optionally the port.

* `HTTP` - (e.g. "http://example.com/path/to/upload")
* `SFTP` - (e.g. "sftp://sftp.example.com/path/to/upload")

#### Desc. `id` {#desc-234}

Another format for UUID, used primarily for tasks, requests and messages.

#### Desc. `name` {#desc-235}

A display name for the call data webhook, used purely for identifying it.

#### Desc. `notes` {#desc-236}

Any notes or details about the call data webhook.

#### Desc. `protocol` {#desc-237}

The transport protocol which should be used to send

* `NONE` - Effectively a no-op.
* `HTTP` - Send CDRs over HTTP.
* `SFTP` - Upload CDRs over SFTP.



__Example__

```json
{
  "auth_identity": "string",
  "auth_method": "NONE",
  "auth_name": "string",
  "auth_secret": "string",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "custom_query_params": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "data": "string",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "CDR Webhook us-east",
  "notes": "string",
  "protocol": "NONE",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}
```


## Summary

CallDataWebhooks are an experimental feature for delivering your CallData or CDR records in realtime to a specified endpoint.

At the moment only SMS and MMS CDRs are supported.

## API

### Create Call Data Webhook

```http
POST /api/v1/call_data_webhooks HTTP/1.1
```

Create a new CDR Webhook.

You are limited to one cdr webhook record per-account.


#### Request application/json

```http
POST /api/v1/call_data_webhooks HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 482
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}
```

#### Response 201

##### application/json

```http
HTTP/1.1 201
Content-Type: application/json
Content-Length: 621
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}
```
#### Response 403

##### application/json

```http
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
```

```json
{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}
```
#### Response 422

##### application/json

```http
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
```

```json
{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}
```


### Update Call Data Webhook

```http
POST /api/v1/call_data_webhooks HTTP/1.1
```

Create a new CDR Webhook.

You are limited to one cdr webhook record per-account.


#### Request application/json

```http
POST /api/v1/call_data_webhooks HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 482
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}
```

#### Response 201

##### application/json

```http
HTTP/1.1 201
Content-Type: application/json
Content-Length: 621
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}
```
#### Response 403

##### application/json

```http
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
```

```json
{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}
```
#### Response 422

##### application/json

```http
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
```

```json
{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}
```


### Delete Call Data Webhook

```http
POST /api/v1/call_data_webhooks HTTP/1.1
```

Create a new CDR Webhook.

You are limited to one cdr webhook record per-account.


#### Request application/json

```http
POST /api/v1/call_data_webhooks HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 482
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}
```

#### Response 201

##### application/json

```http
HTTP/1.1 201
Content-Type: application/json
Content-Length: 621
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}
```
#### Response 403

##### application/json

```http
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
```

```json
{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}
```
#### Response 422

##### application/json

```http
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
```

```json
{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}
```


### List Call Data Webhooks

```http
POST /api/v1/call_data_webhooks HTTP/1.1
```

Create a new CDR Webhook.

You are limited to one cdr webhook record per-account.


#### Request application/json

```http
POST /api/v1/call_data_webhooks HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 482
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}
```

#### Response 201

##### application/json

```http
HTTP/1.1 201
Content-Type: application/json
Content-Length: 621
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}
```
#### Response 403

##### application/json

```http
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
```

```json
{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}
```
#### Response 422

##### application/json

```http
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
```

```json
{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}
```


### Get Call Data Webhook

```http
POST /api/v1/call_data_webhooks HTTP/1.1
```

Create a new CDR Webhook.

You are limited to one cdr webhook record per-account.


#### Request application/json

```http
POST /api/v1/call_data_webhooks HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 482
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}
```

#### Response 201

##### application/json

```http
HTTP/1.1 201
Content-Type: application/json
Content-Length: 621
```

```json
{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}
```
#### Response 403

##### application/json

```http
HTTP/1.1 403
Content-Type: application/json
Content-Length: 312
```

```json
{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}
```
#### Response 422

##### application/json

```http
HTTP/1.1 422
Content-Type: application/json
Content-Length: 241
```

```json
{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}
```


## Webhook

As this feature is a delivery configuration, it will forward or upload the respective CDR to the configured endpoint.

In both the HTTP and SFTP protocols, a standard CDR response is sent or uploaded.

The choice to use the same CDR format is to simplify implementation, as the structure should be familiar.

### HTTP

#### Request

```http
POST http://example.com/configured/path HTTP/1.1
Content-Type: application/json
```

A single call data record

__Type__ Object

| Name            | Type                                       | Description                        |
| --------------- | ------------------------------------------ | ---------------------------------- |
| `fees`          | Array:[CDRFee](https://docs.tychron.com/api-reference/schemas/#schema-cdrfee)             |                                    |
| `host_number`   | String                                     | [Desc. `host_number`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-238)   |
| `id`            | String(format:ulid)                        | [Desc. `id`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-239)            |
| `inserted_at`   | String(format:date-time)                   | An ISO8601 formatted timestamp     |
| `item_count`    | Integer                                    | [Desc. `item_count`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-240)    |
| `item_id`       | String                                     | [Desc. `item_id`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-241)       |
| `remote_number` | String                                     | [Desc. `remote_number`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-242) |
| `sell_rate`     | String(format:decimal)                     | [Desc. `sell_rate`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-243)     |
| `status`        | [Enum](https://docs.tychron.com/api-reference/call-data-webhooks/#enum-244):String                   | Main status of the CDR             |
| `subtype`       | [Enum](https://docs.tychron.com/api-reference/call-data-webhooks/#enum-245):String                   | [Desc. `subtype`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-246)       |
| `surcharges`    | Array:[CDRSurcharge](https://docs.tychron.com/api-reference/schemas/#schema-cdrsurcharge) |                                    |
| `total`         | String(format:decimal)                     | [Desc. `total`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-247)         |
| `type`          | [Enum](https://docs.tychron.com/api-reference/call-data-webhooks/#enum-248):String                   | [Desc. `type`](https://docs.tychron.com/api-reference/call-data-webhooks/#desc-249)          |
| `updated_at`    | String(format:date-time)                   | An ISO8601 formatted timestamp     |

#### Desc. `host_number` {#desc-238}

Depending on the CDR type, this can be an actual phone number or some other value

#### Desc. `id` {#desc-239}

Another format for UUID, used primarily for tasks, requests and messages.

#### Desc. `item_count` {#desc-240}

How many items does this CDR actually represent

#### Desc. `item_id` {#desc-241}

Depending on the CDR type, this will be the id of another record

#### Desc. `remote_number` {#desc-242}

Depending on the CDR type, this can be an actual phone number or some other value

#### Desc. `sell_rate` {#desc-243}

The base rate (no fees or surcharges), already includes the count

#### Enum Values status {#enum-244}

Allowed values

* `UNKNOWN`
* `OK`
* `MISS`
* `ERROR`
* `REFUND`
* `NO_ANSWER`
* `BUSY`
* `CANCELLED`
* `CHANNEL_UNAVAILABLE`
* `CONGESTION`
* `TEMP_FAILURE`

#### Enum Values subtype {#enum-245}

Allowed values

* `NONE`
* `LRN`
* `LRNE`
* `MESSAGING_CARRIER_LOOKUP`
* `CNAM`
* `TTS`
* `OUTBOUND`
* `INBOUND`
* `TERMINATION`
* `SIP_IAX`
* `DID_RCF`
* `DID_VOIP`
* `CALLBACK`
* `DID`
* `CHARGE`
* `PREPAYMENT`
* `TAX`
* `PAYMENT`
* `ADJUSTMENT`
* `DID_REGISTRY`
* `DID_REGISTRY_NRC`
* `DID_REGISTRY_A_MRC`
* `DEDICATED_ESPID`
* `DEDICATED_ESPID_NRC`
* `DEDICATED_ESPID_A_MRC`
* `DID_TIER`
* `DID_TIER_NRC`
* `DID_TIER_A_MRC`
* `CSP_BRAND`
* `CSP_BRAND_A_MRC`
* `CSP_BRAND_VETTING`
* `CSP_CAMPAIGN`
* `CSP_CAMPAIGN_MRC`
* `CSP_CAMPAIGN_A_MRC`

#### Desc. `subtype` {#desc-246}

Further refines the CDR type, depending on what the

#### Desc. `total` {#desc-247}

The total amount charged (sell_rate+fees+surcharges)

#### Enum Values type {#enum-248}

Allowed values

* `API`
* `MMS`
* `SMS`
* `VOICE`
* `BALANCE`
* `MISC`

#### Desc. `type` {#desc-249}

The main category that the CDR belongs to.



__Example__

```json
{
  "fees": [
    {
      "cost": "0.000100",
      "name": "extra_cheese"
    }
  ],
  "host_number": "12003004000",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "item_count": 1,
  "item_id": "01FCYT490ZK2NYF0BFYRFFAJZ8",
  "remote_number": "12003004001",
  "sell_rate": "0.000900",
  "status": "UNKNOWN",
  "subtype": "NONE",
  "surcharges": [
    {
      "cost": "0.000100",
      "name": "ACME Corp"
    }
  ],
  "total": "0.000900",
  "type": "API",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}
```


#### Response

Any 2xx status is accepted, but it's recommended to send a 204 status back once received.

Any other status will trigger a redelivery of the event.

```http
HTTP/1.1 204 No Content
```

### SFTP

There is no real example for SFTP, however a file in the form `cdr-ID.json` will be uploaded at the path, where ID is replaced with the ID of the CDR.

The format is the same as the HTTP Request CDR format.

---

Previous chapter: https://docs.tychron.com/api-reference/bulk-dip-tasks.md  
Next chapter: https://docs.tychron.com/api-reference/secret-keys.md  
Complete reference in one file: https://docs.tychron.com/llms-full.txt
