46elks Phone Numbers API
Allocate, configure, and deallocate virtual phone numbers. POST to /numbers to rent a number and set sms_url / voice_start handlers, GET /numbers to list, and POST or DELETE /numbers/{id} to reconfigure or release a number.
Allocate, configure, and deallocate virtual phone numbers. POST to /numbers to rent a number and set sms_url / voice_start handlers, GET /numbers to list, and POST or DELETE /numbers/{id} to reconfigure or release a number.
openapi: 3.0.3
info:
title: 46elks API
version: a1
description: >-
A faithful, representative OpenAPI description of the 46elks CPaaS REST API.
46elks exposes a simple HTTP API for SMS, MMS, voice calls, phone number
provisioning, and media. All requests use HTTP Basic authentication with an
API username and API password issued in the 46elks dashboard. Request bodies
are sent as application/x-www-form-urlencoded and responses are JSON.
contact:
name: 46elks
url: https://46elks.com/docs
license:
name: Proprietary
url: https://46elks.com/terms
servers:
- url: https://api.46elks.com/a1
description: 46elks production API (version a1)
security:
- basicAuth: []
tags:
- name: SMS
description: Send and receive text messages.
- name: MMS
description: Send and receive picture messages.
- name: Calls
description: Make and receive programmable voice calls.
- name: Numbers
description: Allocate and manage virtual phone numbers.
- name: Media
description: Access recordings and MMS images.
paths:
/sms:
post:
tags:
- SMS
operationId: sendSms
summary: Send an SMS
description: >-
Send a text message to one or more mobile phones. The sender may be an
alphanumeric sender ID (up to 11 characters) or an E.164 number you own.
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SmsRequest'
responses:
'200':
description: SMS accepted for delivery.
content:
application/json:
schema:
$ref: '#/components/schemas/Sms'
'401':
$ref: '#/components/responses/Unauthorized'
get:
tags:
- SMS
operationId: listSms
summary: List sent and received SMS
parameters:
- name: start
in: query
schema:
type: string
format: date-time
- name: end
in: query
schema:
type: string
format: date-time
- name: limit
in: query
schema:
type: integer
responses:
'200':
description: A paged list of SMS objects.
content:
application/json:
schema:
$ref: '#/components/schemas/SmsList'
/sms/{id}:
get:
tags:
- SMS
operationId: getSms
summary: Retrieve a single SMS
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: A single SMS object.
content:
application/json:
schema:
$ref: '#/components/schemas/Sms'
/mms:
post:
tags:
- MMS
operationId: sendMms
summary: Send an MMS
description: Send a picture message to a mobile phone.
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/MmsRequest'
responses:
'200':
description: MMS accepted for delivery.
content:
application/json:
schema:
$ref: '#/components/schemas/Mms'
get:
tags:
- MMS
operationId: listMms
summary: List sent and received MMS
responses:
'200':
description: A paged list of MMS objects.
content:
application/json:
schema:
$ref: '#/components/schemas/MmsList'
/mms/{id}:
get:
tags:
- MMS
operationId: getMms
summary: Retrieve a single MMS
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: A single MMS object.
content:
application/json:
schema:
$ref: '#/components/schemas/Mms'
/calls:
post:
tags:
- Calls
operationId: makeCall
summary: Make a voice call
description: >-
Place an outbound call. voice_start is either a URL that returns the
first call action or an inline JSON call-action object.
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CallRequest'
responses:
'200':
description: Call initiated.
content:
application/json:
schema:
$ref: '#/components/schemas/Call'
get:
tags:
- Calls
operationId: listCalls
summary: List calls
responses:
'200':
description: A paged list of call objects.
content:
application/json:
schema:
$ref: '#/components/schemas/CallList'
/calls/{id}:
get:
tags:
- Calls
operationId: getCall
summary: Retrieve a single call
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: A single call object.
content:
application/json:
schema:
$ref: '#/components/schemas/Call'
/numbers:
post:
tags:
- Numbers
operationId: allocateNumber
summary: Allocate a phone number
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/NumberRequest'
responses:
'200':
description: Number allocated.
content:
application/json:
schema:
$ref: '#/components/schemas/Number'
get:
tags:
- Numbers
operationId: listNumbers
summary: List allocated phone numbers
responses:
'200':
description: A list of number objects.
content:
application/json:
schema:
$ref: '#/components/schemas/NumberList'
/numbers/{id}:
post:
tags:
- Numbers
operationId: updateNumber
summary: Reconfigure a phone number
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/NumberRequest'
responses:
'200':
description: Number updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Number'
delete:
tags:
- Numbers
operationId: deallocateNumber
summary: Deallocate a phone number
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Number released.
/recordings:
get:
tags:
- Media
operationId: listRecordings
summary: List call recordings
responses:
'200':
description: A list of recording objects.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Recording'
/images:
get:
tags:
- Media
operationId: listImages
summary: List MMS images
responses:
'200':
description: A list of image objects.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Image'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
HTTP Basic authentication using your 46elks API username and API
password from the dashboard.
responses:
Unauthorized:
description: Missing or invalid API credentials.
schemas:
SmsRequest:
type: object
required:
- from
- to
- message
properties:
from:
type: string
description: Alphanumeric sender ID (max 11 chars) or E.164 number.
example: Elks
to:
type: string
description: Recipient number in E.164 format.
example: '+46700000000'
message:
type: string
example: Hello from 46elks!
dryrun:
type: string
enum:
- 'yes'
description: Validate without sending.
flashsms:
type: string
enum:
- 'yes'
description: Send as a flash SMS shown immediately, not stored.
whendelivered:
type: string
format: uri
description: Webhook URL notified with the delivery status.
dontlog:
type: string
enum:
- message
description: Do not store the message text in history.
Sms:
type: object
properties:
id:
type: string
example: s123abc456def
from:
type: string
to:
type: string
message:
type: string
status:
type: string
enum:
- created
- sent
- delivered
- failed
direction:
type: string
enum:
- outgoing
- incoming
cost:
type: integer
description: Cost in 10,000ths of the account currency.
parts:
type: integer
created:
type: string
format: date-time
SmsList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Sms'
MmsRequest:
type: object
required:
- from
- to
properties:
from:
type: string
to:
type: string
message:
type: string
image:
type: string
description: Base64 image data or a hosted image URL.
Mms:
type: object
properties:
id:
type: string
from:
type: string
to:
type: string
message:
type: string
status:
type: string
created:
type: string
format: date-time
MmsList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Mms'
CallRequest:
type: object
required:
- from
- to
- voice_start
properties:
from:
type: string
example: '+46700000000'
to:
type: string
example: '+46766861004'
voice_start:
description: >-
First call action - a URL returning a call action, or an inline
call-action JSON object (connect, play, ivr, record, hangup).
oneOf:
- type: string
format: uri
- $ref: '#/components/schemas/CallAction'
whenhangup:
type: string
format: uri
description: Webhook URL notified when the call ends.
timeout:
type: integer
description: Seconds to wait before abandoning an unanswered call.
CallAction:
type: object
description: >-
A 46elks call action returned by voice_start or a webhook. Exactly one
of connect, play, ivr, record, or hangup is typically present.
properties:
connect:
type: string
description: E.164 number or SIP address (sip:...) to connect the call to.
play:
type: string
format: uri
description: URL of an audio file to play to the caller.
ivr:
type: string
format: uri
description: Audio prompt for an interactive voice menu; digits post back.
next:
type: string
format: uri
description: URL to fetch the next action from.
record:
type: string
description: Enable recording of the caller's response.
hangup:
type: string
description: Terminate the call.
Call:
type: object
properties:
id:
type: string
from:
type: string
to:
type: string
state:
type: string
enum:
- ongoing
- success
- busy
- failed
direction:
type: string
created:
type: string
format: date-time
CallList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Call'
NumberRequest:
type: object
properties:
country:
type: string
description: ISO country code for the number to allocate (e.g. se, gb, us).
example: se
sms_url:
type: string
format: uri
description: Webhook URL for inbound SMS to this number.
voice_start:
type: string
format: uri
description: Webhook URL for inbound calls to this number.
active:
type: string
enum:
- 'yes'
- 'no'
Number:
type: object
properties:
id:
type: string
example: nadaf5cd3c86dd7f0c805823647d15b1e
number:
type: string
example: '+46766861004'
country:
type: string
capabilities:
type: array
items:
type: string
enum:
- sms
- mms
- voice
active:
type: string
sms_url:
type: string
voice_start:
type: string
cost:
type: integer
NumberList:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Number'
Recording:
type: object
properties:
id:
type: string
callid:
type: string
created:
type: string
format: date-time
wav:
type: string
format: uri
mp3:
type: string
format: uri
Image:
type: object
properties:
id:
type: string
mmsid:
type: string
created:
type: string
format: date-time
url:
type: string
format: uri