NAV
cURL

Carrier API

This documentation is intended for carriers as defined in the carrier documentation. The API documentation for Somleng's Open Source implementation of Twilio's REST API is available here.

The Carrier API is intended for carriers who need to automate provisioning of carrier resources (e.g. Accounts) rather that using the dashboard. This API is written according to the JSON API Specification. We recommend using a JSON API Client for consuming this API.

Authentication

This API uses Bearer authentication. You must include your API key in the Authorization header for all requests. Your API key is available on the Carrier Dashboard.

Webhooks

Somleng uses webhooks to notify your application when an event happens in your account. Somleng signs the webhook events it sends to your endpoint by including a signature in each event's Authorization header. This allows you to verify that the events were sent by Somleng, not by a third party.

All requests are signed using JSON Web Token (JWT) Bearer authentication, according to the HS256 (HMAC-SHA256) algorithm.

You should verify the events that Somleng sends to your Webhook endpoints. On the right is an example in Ruby ---->

JWT.decode(
  request.headers["Authorization"].sub("Bearer ", ""),
  "[your-webhook-signing-secret]",
  true,
  algorithm: "HS256",
  verify_iss: true,
  iss: "Somleng"
)

Accounts

Create an account

Request

curl "https://api.somleng.org/carrier/v1/accounts" -d '{
  "data": {
    "type": "account",
    "attributes": {
      "name": "Rocket Rides",
      "default_tts_voice": "Basic.Kal",
      "billing_enabled": true,
      "billing_mode": "prepaid",
      "metadata": {
        "foo": "bar"
      }
    }
  }
}' -X POST \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer 2ubTaXXWxsotePZSxjUCe3r_HJRs_kylUEPxu_2-h84"

Endpoint

POST https://api.somleng.org/carrier/v1/accounts

POST https://api.somleng.org/carrier/v1/accounts

Parameters

{
  "data": {
    "type": "account",
    "attributes": {
      "name": "Rocket Rides",
      "default_tts_voice": "Basic.Kal",
      "billing_enabled": true,
      "billing_mode": "prepaid",
      "metadata": {
        "foo": "bar"
      }
    }
  }
}
Name Description
data[attributes][name] required A friendly name which identifies the account
data[attributes][billing_enabled] Enable billing for the account. Defaults to false.
data[attributes][billing_mode] The billing mode for the account. Only prepaid is supported at this time.
data[attributes][tts_voice] The default TTS voice identifier. Defaults to: Basic.Kal
data[attributes][metadata] Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

Response


201 Created
{
  "data": {
    "id": "85609e7c-fdd0-4859-87a2-bb63477254bc",
    "type": "account",
    "attributes": {
      "created_at": "2026-10-17T13:20:01Z",
      "updated_at": "2026-10-17T13:20:01Z",
      "name": "Rocket Rides",
      "metadata": {
        "foo": "bar"
      },
      "status": "enabled",
      "type": "carrier_managed",
      "billing_enabled": true,
      "billing_mode": "prepaid",
      "auth_token": "CdbUoRbDBhpglA694Q2CmWqxQH1lV105JMd7rDxGCks",
      "default_tts_voice": "Basic.Kal"
    }
  }
}

Delete an account

Request

curl "https://api.somleng.org/carrier/v1/accounts/95a618e6-08c1-4624-9c7b-958d1fbecb21" -d '' -X DELETE \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer QtClRoKN17NRKd0930SpQ764-UrDi1hmk5oz35G9CFM"

Endpoint

DELETE https://api.somleng.org/carrier/v1/accounts/:id

DELETE https://api.somleng.org/carrier/v1/accounts/95a618e6-08c1-4624-9c7b-958d1fbecb21

Parameters

None known.

Response


204 No Content

List all accounts

Request

curl "https://api.somleng.org/carrier/v1/accounts" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer EgOeCfONAOPm2kYFRL_2oew0oZN_iMvBgqwi_XbEXfE"

Endpoint

GET https://api.somleng.org/carrier/v1/accounts

GET https://api.somleng.org/carrier/v1/accounts

Parameters

None known.

Response


200 OK
{
  "data": [
    {
      "id": "a2e2bf55-a296-48c0-8fd5-383850903973",
      "type": "account",
      "attributes": {
        "created_at": "2026-10-17T13:20:01Z",
        "updated_at": "2026-10-17T13:20:01Z",
        "name": "Telco Net",
        "metadata": {},
        "status": "enabled",
        "type": "carrier_managed",
        "billing_enabled": false,
        "billing_mode": "prepaid",
        "auth_token": "42HJF_GPqjy2-Gfq-eMj9cntKUbWibmGKHnfciWv6QA",
        "default_tts_voice": "Basic.Kal"
      }
    },
    {
      "id": "12944948-e348-42af-acdc-35bf9053900b",
      "type": "account",
      "attributes": {
        "created_at": "2026-10-17T13:20:01Z",
        "updated_at": "2026-10-17T13:20:01Z",
        "name": "Rocket Rides",
        "metadata": {},
        "status": "enabled",
        "type": "customer_managed",
        "billing_enabled": false,
        "billing_mode": "prepaid",
        "default_tts_voice": "Basic.Kal"
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/accounts?page%5Bbefore%5D=a2e2bf55-a296-48c0-8fd5-383850903973",
    "next": null
  }
}

Retrieve an account

Request

curl "https://api.somleng.org/carrier/v1/accounts/ea95bf2e-4789-49f5-8365-4e34f28b1a7f" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer uuOYccDw9dTrG_fC86pji3mPi5qVLIB70IF5TRhPfZ4"

Endpoint

GET https://api.somleng.org/carrier/v1/accounts/:id

GET https://api.somleng.org/carrier/v1/accounts/ea95bf2e-4789-49f5-8365-4e34f28b1a7f

Parameters

Name Description
id required The id of the account to be retrieved.

Response


200 OK
{
  "data": {
    "id": "ea95bf2e-4789-49f5-8365-4e34f28b1a7f",
    "type": "account",
    "attributes": {
      "created_at": "2026-10-17T13:20:01Z",
      "updated_at": "2026-10-17T13:20:01Z",
      "name": "Rocket Rides",
      "metadata": {},
      "status": "enabled",
      "type": "carrier_managed",
      "billing_enabled": false,
      "billing_mode": "prepaid",
      "auth_token": "2cURbOO44K_iiKhWDS3rnzCfnIjzhauklqYfmcTBbi4",
      "default_tts_voice": "Basic.Kal"
    }
  }
}

Update an account

Request

curl "https://api.somleng.org/carrier/v1/accounts/5e25e8f0-0a5e-4d84-9f45-c828021f4d70" -d '{
  "data": {
    "attributes": {
      "status": null,
      "name": "Bob Cats",
      "status": "disabled",
      "billing_enabled": false,
      "default_tts_voice": "Basic.Kal",
      "metadata": {
        "bar": "foo"
      }
    },
    "type": "account",
    "id": "5e25e8f0-0a5e-4d84-9f45-c828021f4d70"
  }
}' -X PATCH \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer S-8MKj3kHcvXKDkipbQnwQA5NsAGyWzq2RDINqFlQUA"

Endpoint

PATCH https://api.somleng.org/carrier/v1/accounts/:id

PATCH https://api.somleng.org/carrier/v1/accounts/5e25e8f0-0a5e-4d84-9f45-c828021f4d70

Parameters

{
  "data": {
    "attributes": {
      "status": null,
      "name": "Bob Cats",
      "status": "disabled",
      "billing_enabled": false,
      "default_tts_voice": "Basic.Kal",
      "metadata": {
        "bar": "foo"
      }
    },
    "type": "account",
    "id": "5e25e8f0-0a5e-4d84-9f45-c828021f4d70"
  }
}
Name Description
data[attributes][status] Update the status of the account. One of either enabled or disabled.

Response


200 OK
{
  "data": {
    "id": "5e25e8f0-0a5e-4d84-9f45-c828021f4d70",
    "type": "account",
    "attributes": {
      "created_at": "2026-10-17T13:20:01Z",
      "updated_at": "2026-10-17T13:20:01Z",
      "name": "Bob Cats",
      "metadata": {
        "foo": "bar",
        "bar": "foo"
      },
      "status": "disabled",
      "type": "carrier_managed",
      "billing_enabled": false,
      "billing_mode": "prepaid",
      "auth_token": "WmoSY4zUaEf3zdNkD4ZCWNGL7ITPMcZyIYeqhu1ExiM",
      "default_tts_voice": "Basic.Kal"
    }
  }
}

Events

List all events

Types of events

This is a list of all the types of events we currently send. We may add more at any time, so in developing and maintaining your code, you should not assume that only these types exist.

You'll notice that these events follow a pattern: resource.event. Our goal is to design a consistent system that makes things easier to anticipate and code against.

Event
phone_call.completed
message.sent
message.delivered

Request

curl "https://api.somleng.org/carrier/v1/events" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer Z_WjHQRsRvKILGPg-SfVHSpWxyMbL1yneilLHI8shSY"

Endpoint

GET https://api.somleng.org/carrier/v1/events

GET https://api.somleng.org/carrier/v1/events

Parameters

None known.

Response


200 OK
{
  "data": [
    {
      "id": "63bad37c-f612-4189-b490-792fdcd8b0ed",
      "type": "event",
      "attributes": {
        "created_at": "2026-10-17T13:20:27Z",
        "updated_at": "2026-10-17T13:20:27Z",
        "type": "phone_call.completed",
        "details": {
          "data": {
            "id": "294800d4-2be8-4f11-bfe1-0e519a5120cf",
            "type": "phone_call",
            "attributes": {
              "to": "+85512334667",
              "from": "2442",
              "price": null,
              "status": "queued",
              "duration": null,
              "direction": "outbound-api",
              "created_at": "2026-10-17T13:20:27Z",
              "price_unit": null,
              "updated_at": "2026-10-17T13:20:27Z"
            },
            "relationships": {
              "account": {
                "data": {
                  "id": "27b90178-58a3-4e79-bd76-a4c6c8db6975",
                  "type": "account"
                }
              }
            }
          }
        }
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/events?page%5Bbefore%5D=63bad37c-f612-4189-b490-792fdcd8b0ed",
    "next": null
  }
}

Retrieve an Event

Request

curl "https://api.somleng.org/carrier/v1/events/cbaf31df-e75a-4e7a-bc28-a93c2d45da4e" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer F9YSZTr_hsXOy2NMOO-uQ-hotvnFfNvQtJWnJwXh61E"

Endpoint

GET https://api.somleng.org/carrier/v1/events/:id

GET https://api.somleng.org/carrier/v1/events/cbaf31df-e75a-4e7a-bc28-a93c2d45da4e

Parameters

None known.

Response


200 OK
{
  "data": {
    "id": "cbaf31df-e75a-4e7a-bc28-a93c2d45da4e",
    "type": "event",
    "attributes": {
      "created_at": "2026-10-17T13:20:27Z",
      "updated_at": "2026-10-17T13:20:27Z",
      "type": "phone_call.completed",
      "details": {
        "data": {
          "id": "042c48c0-d548-497d-8ecb-356c731a3934",
          "type": "phone_call",
          "attributes": {
            "to": "+85512334667",
            "from": "2442",
            "price": null,
            "status": "queued",
            "duration": null,
            "direction": "outbound-api",
            "created_at": "2026-10-17T13:20:27Z",
            "price_unit": null,
            "updated_at": "2026-10-17T13:20:27Z"
          },
          "relationships": {
            "account": {
              "data": {
                "id": "d010f7ff-452b-4bad-8815-3ca4d0dff0cf",
                "type": "account"
              }
            }
          }
        }
      }
    }
  }
}

Messages

List messages

Request

curl "https://api.somleng.org/carrier/v1/messages?filter[status]=sent&filter[from_date]=2021-11-01T00%3A00%3A00Z&filter[to_date]=2021-11-01T00%3A00%3A00Z&filter[account]=2b49d28d-92cc-4c94-9c33-400bc4b68653&filter[direction]=outbound-api" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer sixnMOIObtQG1KvL9XNqki4HRy4rbXA6cPj3eE-qzCQ"

Endpoint

GET https://api.somleng.org/carrier/v1/messages

GET https://api.somleng.org/carrier/v1/messages?filter[status]=sent&filter[from_date]=2021-11-01T00%3A00%3A00Z&filter[to_date]=2021-11-01T00%3A00%3A00Z&filter[account]=2b49d28d-92cc-4c94-9c33-400bc4b68653&filter[direction]=outbound-api

Parameters

{
  "filter": {
    "status": "sent",
    "from_date": "2021-11-01T00:00:00Z",
    "to_date": "2021-11-01T00:00:00Z",
    "account": "2b49d28d-92cc-4c94-9c33-400bc4b68653",
    "direction": "outbound-api"
  }
}
Name Description
filter[account] Return messages from the provided account-sid
filter[from_date] Return messages on or after the provided date/time in ISO 8601 format.
filter[to_date] Return messages on or before the provided date/time in ISO 8601 format.
filter[direction] One of inbound, outbound-api, outbound-call, outbound-reply, and outbound
filter[status] One of accepted, scheduled, queued, sending, sent, failed, received, canceled, and delivered

Response


200 OK
{
  "data": [
    {
      "id": "6ec53199-9816-4534-b877-4759e583aebf",
      "type": "message",
      "attributes": {
        "created_at": "2021-11-01T01:00:00Z",
        "updated_at": "2026-10-17T13:20:35Z",
        "to": "+85512334667",
        "from": "2442",
        "price_unit": null,
        "direction": "outbound-api",
        "status": "sent",
        "body": "Hello World",
        "price": null
      },
      "relationships": {
        "account": {
          "data": {
            "id": "2b49d28d-92cc-4c94-9c33-400bc4b68653",
            "type": "account"
          }
        }
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/messages?filter%5Baccount%5D=2b49d28d-92cc-4c94-9c33-400bc4b68653&filter%5Bdirection%5D=outbound-api&filter%5Bfrom_date%5D=2021-11-01T00%3A00%3A00Z&filter%5Bstatus%5D=sent&filter%5Bto_date%5D=2021-11-01T00%3A00%3A00Z&page%5Bbefore%5D=6ec53199-9816-4534-b877-4759e583aebf",
    "next": null
  }
}

Retrieve a message

Request

curl "https://api.somleng.org/carrier/v1/messages/f40b2ea4-33ab-4536-8e9b-3b59cee22071" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer bIAqvIllsbM0r6R39vJlqmAwhV77-QTZyn8cQq65BnI"

Endpoint

GET https://api.somleng.org/carrier/v1/messages/:id

GET https://api.somleng.org/carrier/v1/messages/f40b2ea4-33ab-4536-8e9b-3b59cee22071

Parameters

None known.

Response


200 OK
{
  "data": {
    "id": "f40b2ea4-33ab-4536-8e9b-3b59cee22071",
    "type": "message",
    "attributes": {
      "created_at": "2026-10-17T13:20:35Z",
      "updated_at": "2026-10-17T13:20:35Z",
      "to": "+85512334667",
      "from": "2442",
      "price_unit": null,
      "direction": "outbound-api",
      "status": "accepted",
      "body": "Hello World",
      "price": null
    },
    "relationships": {
      "account": {
        "data": {
          "id": "c099c050-db0d-4b74-abb9-6d19aa233928",
          "type": "account"
        }
      }
    }
  }
}

Update a message

Request

curl "https://api.somleng.org/carrier/v1/messages/99a64131-0421-4ad9-ab5c-629b26f2c550" -d '{
  "data": {
    "id": "99a64131-0421-4ad9-ab5c-629b26f2c550",
    "type": "message",
    "attributes": {
      "price": "-0.05"
    }
  }
}' -X PATCH \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer raWXIoH4ukxzyH8ifTTEyZRzFWQfulo0WhHAMQTgkxM"

Endpoint

PATCH https://api.somleng.org/carrier/v1/messages/:id

PATCH https://api.somleng.org/carrier/v1/messages/99a64131-0421-4ad9-ab5c-629b26f2c550

Parameters

{
  "data": {
    "id": "99a64131-0421-4ad9-ab5c-629b26f2c550",
    "type": "message",
    "attributes": {
      "price": "-0.05"
    }
  }
}
Name Description
data[attributes][price] The charge for this call in the account's billing currency

Response


200 OK
{
  "data": {
    "id": "99a64131-0421-4ad9-ab5c-629b26f2c550",
    "type": "message",
    "attributes": {
      "created_at": "2026-10-17T13:20:35Z",
      "updated_at": "2026-10-17T13:20:35Z",
      "to": "+85512334667",
      "from": "2442",
      "price_unit": "USD",
      "direction": "outbound-api",
      "status": "sent",
      "body": "Hello World",
      "price": "-0.05000"
    },
    "relationships": {
      "account": {
        "data": {
          "id": "17588b6c-42db-45ab-8488-ca23c3246122",
          "type": "account"
        }
      }
    }
  }
}

Phone Calls

List phone calls

Request

curl "https://api.somleng.org/carrier/v1/phone_calls?filter[status]=queued&filter[from_date]=2021-11-01T00%3A00%3A00Z&filter[to_date]=2021-11-01T00%3A00%3A00Z&filter[account]=cdcf20a0-013c-43bf-a733-01c002c3ab6f&filter[direction]=outbound-api" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer yazDZTKWYnEOSMHScCrsSFqEJ2KSJDThFnNfJ7JfA_I"

Endpoint

GET https://api.somleng.org/carrier/v1/phone_calls

GET https://api.somleng.org/carrier/v1/phone_calls?filter[status]=queued&filter[from_date]=2021-11-01T00%3A00%3A00Z&filter[to_date]=2021-11-01T00%3A00%3A00Z&filter[account]=cdcf20a0-013c-43bf-a733-01c002c3ab6f&filter[direction]=outbound-api

Parameters

{
  "filter": {
    "status": "queued",
    "from_date": "2021-11-01T00:00:00Z",
    "to_date": "2021-11-01T00:00:00Z",
    "account": "cdcf20a0-013c-43bf-a733-01c002c3ab6f",
    "direction": "outbound-api"
  }
}
Name Description
filter[account] Return phone calls from the provided account-sid
filter[from_date] Return phone calls on or after the provided date/time in ISO 8601 format.
filter[to_date] Return phone calls on or before the provided date/time in ISO 8601 format.
filter[direction] One of inbound, outbound-api, and outbound-dial
filter[status] One of queued, ringing, in-progress, busy, failed, no-answer, completed, and canceled

Response


200 OK
{
  "data": [
    {
      "id": "7e729f6a-bccb-4c4c-9574-b2c3821e0852",
      "type": "phone_call",
      "attributes": {
        "created_at": "2021-11-01T01:00:00Z",
        "updated_at": "2026-10-17T13:20:01Z",
        "to": "+85512334667",
        "from": "2442",
        "price_unit": null,
        "duration": null,
        "direction": "outbound-api",
        "status": "queued",
        "price": null
      },
      "relationships": {
        "account": {
          "data": {
            "id": "cdcf20a0-013c-43bf-a733-01c002c3ab6f",
            "type": "account"
          }
        }
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/phone_calls?filter%5Baccount%5D=cdcf20a0-013c-43bf-a733-01c002c3ab6f&filter%5Bdirection%5D=outbound-api&filter%5Bfrom_date%5D=2021-11-01T00%3A00%3A00Z&filter%5Bstatus%5D=queued&filter%5Bto_date%5D=2021-11-01T00%3A00%3A00Z&page%5Bbefore%5D=7e729f6a-bccb-4c4c-9574-b2c3821e0852",
    "next": null
  }
}

Retrieve a phone call

Request

curl "https://api.somleng.org/carrier/v1/phone_calls/a2c974f7-a971-4eea-a633-a07f9ed31e3b" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer R4aKLwqSvxhnprHjLZU-Ce-4vvXab94uHpgjINeXmDc"

Endpoint

GET https://api.somleng.org/carrier/v1/phone_calls/:id

GET https://api.somleng.org/carrier/v1/phone_calls/a2c974f7-a971-4eea-a633-a07f9ed31e3b

Parameters

None known.

Response


200 OK
{
  "data": {
    "id": "a2c974f7-a971-4eea-a633-a07f9ed31e3b",
    "type": "phone_call",
    "attributes": {
      "created_at": "2026-10-17T13:20:01Z",
      "updated_at": "2026-10-17T13:20:01Z",
      "to": "+85512334667",
      "from": "2442",
      "price_unit": null,
      "duration": null,
      "direction": "outbound-api",
      "status": "queued",
      "price": null
    },
    "relationships": {
      "account": {
        "data": {
          "id": "09df4e61-3919-4acb-9071-1de6859d84cd",
          "type": "account"
        }
      }
    }
  }
}

Update a phone call

Request

curl "https://api.somleng.org/carrier/v1/phone_calls/71d96827-9ac0-4d64-ba67-04c088d94482" -d '{
  "data": {
    "id": "71d96827-9ac0-4d64-ba67-04c088d94482",
    "type": "phone_call",
    "attributes": {
      "price": "-0.05"
    }
  }
}' -X PATCH \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer ILbVgI6XpAUjR9Y7MZZUsA7hK-ZOqdNderl3a9MnHRw"

Endpoint

PATCH https://api.somleng.org/carrier/v1/phone_calls/:id

PATCH https://api.somleng.org/carrier/v1/phone_calls/71d96827-9ac0-4d64-ba67-04c088d94482

Parameters

{
  "data": {
    "id": "71d96827-9ac0-4d64-ba67-04c088d94482",
    "type": "phone_call",
    "attributes": {
      "price": "-0.05"
    }
  }
}
Name Description
data[attributes][price] The charge for this call in the account's billing currency

Response


200 OK
{
  "data": {
    "id": "71d96827-9ac0-4d64-ba67-04c088d94482",
    "type": "phone_call",
    "attributes": {
      "created_at": "2026-10-17T13:20:01Z",
      "updated_at": "2026-10-17T13:20:01Z",
      "to": "+85512334667",
      "from": "2442",
      "price_unit": "USD",
      "duration": "5",
      "direction": "outbound-api",
      "status": "completed",
      "price": "-0.05000"
    },
    "relationships": {
      "account": {
        "data": {
          "id": "03fbe836-28d9-4bb6-abb5-c392b79ea0cb",
          "type": "account"
        }
      }
    }
  }
}

Phone Numbers

01. Create a phone number

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers" -d '{
  "data": {
    "type": "phone_number",
    "attributes": {
      "number": "1294",
      "type": "short_code",
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      }
    }
  }
}' -X POST \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer Y2Ux1epD02-YtiIVQfUIzWWrT4C36Nuzg1jcPzUSeDU"

Endpoint

POST https://api.somleng.org/carrier/v1/phone_numbers

POST https://api.somleng.org/carrier/v1/phone_numbers

Parameters

{
  "data": {
    "type": "phone_number",
    "attributes": {
      "number": "1294",
      "type": "short_code",
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      }
    }
  }
}
Name Description
data[attributes][number] required Phone number in E.164 format or shortcode.
data[attributes][type] required The type of the phone number. Must be one of short_code, local, mobile, toll_free.
data[attributes][visibility] The visibility of the phone number. Must be one of private, public, disabled. Defaults to public for phone numbers with a price and private for phone numbers without one
data[attributes][country] The ISO 3166-1 alpha-2 country code of the phone number. If not specified, it's automatically resolved from the number parameter, or defaults to the carrier's country code if unresolvable.
data[attributes][price] The price for the phone number in the billing currency of the carrier.
data[attributes][region] The state or province abbreviation of this phone number's location.
data[attributes][locality] The locality or city of this phone number's location.
data[attributes][lata] The LATA of this phone number. Applicable only to phone numbers from the US and Canada.
data[attributes][rate_center] The rate center of this phone number. Applicable only to phone numbers from the US and Canada.
data[attributes][latitude] The latitude of this phone number's location. Applicable only for phone numbers from the US and Canada.
data[attributes][longitude] The longitude of this phone number's location. Applicable only for phone numbers from the US and Canada.
data[attributes][metadata] Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

Response


201 Created
{
  "data": {
    "id": "16df3aa1-146d-4d6a-b75e-2af47786de1b",
    "type": "phone_number",
    "attributes": {
      "created_at": "2026-10-17T13:20:26Z",
      "updated_at": "2026-10-17T13:20:26Z",
      "number": "1294",
      "country": "KH",
      "visibility": "private",
      "type": "short_code",
      "locality": null,
      "rate_center": null,
      "lata": null,
      "latitude": null,
      "longitude": null,
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      },
      "currency": "KHR",
      "price": "0.00",
      "region": null
    }
  }
}

02. Update a phone number

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers/bde10225-aed8-408f-825e-6b4fa999f7d3" -d '{
  "data": {
    "type": "phone_number",
    "id": "bde10225-aed8-408f-825e-6b4fa999f7d3",
    "attributes": {
      "type": "mobile",
      "visibility": "public",
      "country": "US",
      "price": "1.15",
      "region": "AR",
      "locality": "Little Rock",
      "rate_center": "LITTLEROCK",
      "lata": "528",
      "latitude": "34.748463",
      "longitude": "-92.284434",
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      }
    }
  }
}' -X PATCH \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer KOAdKb12r2LXQznNf9tKrMEwOVLx5DwDko2LDtf-Q58"

Endpoint

PATCH https://api.somleng.org/carrier/v1/phone_numbers/:id

PATCH https://api.somleng.org/carrier/v1/phone_numbers/bde10225-aed8-408f-825e-6b4fa999f7d3

Parameters

{
  "data": {
    "type": "phone_number",
    "id": "bde10225-aed8-408f-825e-6b4fa999f7d3",
    "attributes": {
      "type": "mobile",
      "visibility": "public",
      "country": "US",
      "price": "1.15",
      "region": "AR",
      "locality": "Little Rock",
      "rate_center": "LITTLEROCK",
      "lata": "528",
      "latitude": "34.748463",
      "longitude": "-92.284434",
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      }
    }
  }
}
Name Description
data[attributes][type] The type of the phone number. Must be one of short_code, local, mobile, toll_free.
data[attributes][visibility] The visibility of the phone number. Must be one of private, public, disabled. Defaults to public for phone numbers with a price and private for phone numbers without one
data[attributes][country] The ISO 3166-1 alpha-2 country code of the phone number. If not specified, it's automatically resolved from the number parameter, or defaults to the carrier's country code if unresolvable.
data[attributes][price] The price for the phone number in the billing currency of the carrier.
data[attributes][region] The state or province abbreviation of this phone number's location.
data[attributes][locality] The locality or city of this phone number's location.
data[attributes][lata] The LATA of this phone number. Applicable only to phone numbers from the US and Canada.
data[attributes][rate_center] The rate center of this phone number. Applicable only to phone numbers from the US and Canada.
data[attributes][latitude] The latitude of this phone number's location. Applicable only for phone numbers from the US and Canada.
data[attributes][longitude] The longitude of this phone number's location. Applicable only for phone numbers from the US and Canada.
data[attributes][metadata] Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

Response


200 OK
{
  "data": {
    "id": "bde10225-aed8-408f-825e-6b4fa999f7d3",
    "type": "phone_number",
    "attributes": {
      "created_at": "2026-10-17T13:20:26Z",
      "updated_at": "2026-10-17T13:20:26Z",
      "number": "+15067020972",
      "country": "US",
      "visibility": "public",
      "type": "mobile",
      "locality": "Little Rock",
      "rate_center": "LITTLEROCK",
      "lata": "528",
      "latitude": "34.748463",
      "longitude": "-92.284434",
      "metadata": {
        "my_custom_field": "my_custom_field_value"
      },
      "currency": "CAD",
      "price": "1.15",
      "region": "AR"
    }
  }
}

03. Retrieve a phone number

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers/8a117ab3-3834-44e0-9658-f841b0303503" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer STETxRR0x6KZU_9a0ZT91PVQTZimuZq_uyZljiSQukc"

Endpoint

GET https://api.somleng.org/carrier/v1/phone_numbers/:id

GET https://api.somleng.org/carrier/v1/phone_numbers/8a117ab3-3834-44e0-9658-f841b0303503

Parameters

None known.

Response


200 OK
{
  "data": {
    "id": "8a117ab3-3834-44e0-9658-f841b0303503",
    "type": "phone_number",
    "attributes": {
      "created_at": "2026-10-17T13:20:26Z",
      "updated_at": "2026-10-17T13:20:26Z",
      "number": "+855972345783",
      "country": "KH",
      "visibility": "private",
      "type": "mobile",
      "locality": null,
      "rate_center": null,
      "lata": null,
      "latitude": null,
      "longitude": null,
      "metadata": {},
      "currency": "KHR",
      "price": "0.00",
      "region": null
    }
  }
}

04. List all phone numbers

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer ZkbGXV7Gnsf_2iNKPSTCROKg7QRPVc_o2Jmv5xZXFig"

Endpoint

GET https://api.somleng.org/carrier/v1/phone_numbers

GET https://api.somleng.org/carrier/v1/phone_numbers

Parameters

None known.

Response


200 OK
{
  "data": [
    {
      "id": "3d2d2fc6-5669-4152-9838-2c6f95a112d7",
      "type": "phone_number",
      "attributes": {
        "created_at": "2026-10-17T13:20:26Z",
        "updated_at": "2026-10-17T13:20:26Z",
        "number": "+855972345785",
        "country": "KH",
        "visibility": "private",
        "type": "mobile",
        "locality": null,
        "rate_center": null,
        "lata": null,
        "latitude": null,
        "longitude": null,
        "metadata": {},
        "currency": "KHR",
        "price": "0.00",
        "region": null
      }
    },
    {
      "id": "eff112bd-1ee5-47c9-91bb-d6901d691b48",
      "type": "phone_number",
      "attributes": {
        "created_at": "2026-10-17T13:20:26Z",
        "updated_at": "2026-10-17T13:20:26Z",
        "number": "+855972345784",
        "country": "KH",
        "visibility": "private",
        "type": "mobile",
        "locality": null,
        "rate_center": null,
        "lata": null,
        "latitude": null,
        "longitude": null,
        "metadata": {},
        "currency": "KHR",
        "price": "0.00",
        "region": null
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/phone_numbers?page%5Bbefore%5D=3d2d2fc6-5669-4152-9838-2c6f95a112d7",
    "next": null
  }
}

05. Delete a phone number

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers/d60eb7bd-144a-446f-aa3b-e97db2a89748" -d '' -X DELETE \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer NKAAsrQLED__ckKivLbLftt58jCByhO1nY_cYgZ4MeI"

Endpoint

DELETE https://api.somleng.org/carrier/v1/phone_numbers/:id

DELETE https://api.somleng.org/carrier/v1/phone_numbers/d60eb7bd-144a-446f-aa3b-e97db2a89748

Parameters

None known.

Response


204 No Content

06. Get number of available phone numbers per locality having a count less than 2

Request

curl "https://api.somleng.org/carrier/v1/phone_numbers/stats?filter[available]=true&filter[type]=local&group_by[]=country&group_by[]=region&group_by[]=locality&having[count][lt]=2" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer yJp6Nam4Pqzy3CquetQljeBpQSLcuHD_V6GmNqPiga8"

Endpoint

GET https://api.somleng.org/carrier/v1/phone_numbers/stats

GET https://api.somleng.org/carrier/v1/phone_numbers/stats?filter[available]=true&filter[type]=local&group_by[]=country&group_by[]=region&group_by[]=locality&having[count][lt]=2

Parameters

{
  "filter": {
    "available": "true",
    "type": "local"
  },
  "group_by": [
    "country",
    "region",
    "locality"
  ],
  "having": {
    "count": {
      "lt": "2"
    }
  }
}
Name Description
filter[available] required Return only available phone numbers. Must be true
filter[type] required The phone number type. Must be local
filter[country] The ISO country code. E.g. US
filter[region] The ISO region code. E.g. AR
filter[locality] The locality or city name. e.g. Little Rock
group_by required An array of fields to group by. Must be ['country', 'region', 'locality']
having[count][operator] One of eq, neq, gt, gteq, lt, lteq
having[count][value] The value of the count. Must be an integer greater than or equal to 0

Response


200 OK
{
  "data": [
    {
      "id": "2e02a6de3fa86617dec16e762a756a2fc82f7f474215485effa2577b1a869e64",
      "type": "aggregate_data",
      "attributes": {
        "statistic": {
          "country": "US",
          "region": "AL",
          "locality": "Birmingham",
          "value": 1
        }
      }
    },
    {
      "id": "dbcd7a4b79acfdbeb7bc78dfcded1098b8a5b0ca1cb63619ae65864b89162520",
      "type": "aggregate_data",
      "attributes": {
        "statistic": {
          "country": "US",
          "region": "AL",
          "locality": "Huntsville",
          "value": 1
        }
      }
    },
    {
      "id": "7bb81870f4f3d4a6756f30d8a4ecbf98c0da08ec74cae4af760843e07bee7ec6",
      "type": "aggregate_data",
      "attributes": {
        "statistic": {
          "country": "US",
          "region": "AL",
          "locality": "Tuscaloosa",
          "value": 1
        }
      }
    },
    {
      "id": "f0e41da727a633bc8890195abcfb907391e664682d2da4cbd0a14f5e520bb7f4",
      "type": "aggregate_data",
      "attributes": {
        "statistic": {
          "country": "US",
          "region": "AR",
          "locality": "Hot Springs",
          "value": 1
        }
      }
    },
    {
      "id": "79adb2a2fce5c6ba215fe5f27f532d4e7edbac4b6a5e09e1ef3a08084a904621",
      "type": "aggregate_data",
      "attributes": {
        "statistic": {
          "country": "US",
          "region": null,
          "locality": null,
          "value": 1
        }
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/phone_numbers/stats?filter%5Bavailable%5D=true&filter%5Btype%5D=local&group_by%5B%5D=country&group_by%5B%5D=region&group_by%5B%5D=locality&having%5Bcount%5D%5Blt%5D=2&page%5Bbefore%5D=2e02a6de3fa86617dec16e762a756a2fc82f7f474215485effa2577b1a869e64",
    "next": null
  }
}

TTS Events

List all TTS events

Request

curl "https://api.somleng.org/carrier/v1/tts_events?filter[from_date]=2026-10-16&filter[account]=601f4568-d137-47b4-8d24-22054fca13fe&filter[phone_call]=2c479635-091a-468f-b292-9f2bb45771d8" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer I2KpHltHhCZMofDURzwGzliib8mlgoecrrnZ38GnZII"

Endpoint

GET https://api.somleng.org/carrier/v1/tts_events

GET https://api.somleng.org/carrier/v1/tts_events?filter[from_date]=2026-10-16&filter[account]=601f4568-d137-47b4-8d24-22054fca13fe&filter[phone_call]=2c479635-091a-468f-b292-9f2bb45771d8

Parameters

{
  "filter": {
    "from_date": "2026-10-16",
    "account": "601f4568-d137-47b4-8d24-22054fca13fe",
    "phone_call": "2c479635-091a-468f-b292-9f2bb45771d8"
  }
}
Name Description
filter[account] Return TTS Events from the provided account SID
filter[phone_call] Return TTS Events from the provided phone call SID
filter[from_date] Return TTS events on or after the provided date/time in ISO 8601 format.
filter[to_date] Return TTS events on or before the provided date/time in ISO 8601 format.

Response


200 OK
{
  "data": [
    {
      "id": "324845f0-5a66-4811-be70-c2c80579017c",
      "type": "tts_event",
      "attributes": {
        "created_at": "2026-10-17T13:19:57Z",
        "updated_at": "2026-10-17T13:19:57Z",
        "voice": "Basic.Kal (Male, en-US)",
        "characters": 200
      },
      "relationships": {
        "account": {
          "data": {
            "id": "601f4568-d137-47b4-8d24-22054fca13fe",
            "type": "account"
          }
        },
        "phone_call": {
          "data": {
            "id": "2c479635-091a-468f-b292-9f2bb45771d8",
            "type": "phone_call"
          }
        }
      }
    },
    {
      "id": "66ce34a4-b0dc-4bfa-b0bc-9e821bf36200",
      "type": "tts_event",
      "attributes": {
        "created_at": "2026-10-17T13:19:57Z",
        "updated_at": "2026-10-17T13:19:57Z",
        "voice": "Basic.Kal (Male, en-US)",
        "characters": 100
      },
      "relationships": {
        "account": {
          "data": {
            "id": "601f4568-d137-47b4-8d24-22054fca13fe",
            "type": "account"
          }
        },
        "phone_call": {
          "data": {
            "id": "2c479635-091a-468f-b292-9f2bb45771d8",
            "type": "phone_call"
          }
        }
      }
    }
  ],
  "links": {
    "prev": "https://api.somleng.org/carrier/v1/tts_events?filter%5Baccount%5D=601f4568-d137-47b4-8d24-22054fca13fe&filter%5Bfrom_date%5D=2026-10-16&filter%5Bphone_call%5D=2c479635-091a-468f-b292-9f2bb45771d8&page%5Bbefore%5D=324845f0-5a66-4811-be70-c2c80579017c",
    "next": null
  }
}

Retrieve a TTS Event

Request

curl "https://api.somleng.org/carrier/v1/tts_events/2b8b2bf3-d929-476d-80a7-2f7442e1f5d7" \
    -H "Content-Type: application/vnd.api+json" \
    -H "Authorization: Bearer JeyGM0hGT-BWD5sfGe3Xbd0sdq4JMryR2mOHocjgzP0"

Endpoint

GET https://api.somleng.org/carrier/v1/tts_events/:id

GET https://api.somleng.org/carrier/v1/tts_events/2b8b2bf3-d929-476d-80a7-2f7442e1f5d7

Parameters

None known.

Response


200 OK
{
  "data": {
    "id": "2b8b2bf3-d929-476d-80a7-2f7442e1f5d7",
    "type": "tts_event",
    "attributes": {
      "created_at": "2026-10-17T13:19:57Z",
      "updated_at": "2026-10-17T13:19:57Z",
      "voice": "Basic.Kal (Male, en-US)",
      "characters": 100
    },
    "relationships": {
      "account": {
        "data": {
          "id": "7784e435-3b14-45ee-a54e-47daf270e8cf",
          "type": "account"
        }
      },
      "phone_call": {
        "data": {
          "id": "ccac2d53-3df7-439a-92c3-3d5265e07e4f",
          "type": "phone_call"
        }
      }
    }
  }
}