FreePBX Install & Call API

Job ID: 40586227

Budget: €250 – €750 EUR

Project Overview

We are looking for an experienced FreePBX / Asterisk developer to install, configure, and develop a complete REST API for automating telephone bridge calls.

We will provide:

SSH access to a Linux server.
SIP trunk credentials.
Access to a remote server where call recordings will be stored.

The final solution must be production-ready, stable, secure, and well documented.

Phase 1 – Installation & Configuration

The developer will:

Install and configure FreePBX (preferred) or Asterisk if there is a clear technical advantage.
Configure one or more SIP trunks.
Our SIP provider allows multiple DDI (Caller IDs) on the same SIP trunk.
The system must support multiple SIP trunks simultaneously.
Configure automatic call recording.
Secure and optimize the PBX for production use.
Deliver a fully working and tested system.
Phase 2 – REST API Development

A REST API must be developed to control the PBX.

Main Feature – Bridge Calls

The API must allow creating a bridge call.

Each request will include:

Phone Number A
Phone Number B
SIP trunk to use
Optional Caller ID (DDI) to display
Expected Call Flow
The PBX calls Number A.
Wait until A answers.
Once A answers, immediately call Number B.
While B is ringing, A must hear the ringing tone.
When B answers, both parties are connected.
If either party hangs up, the call ends correctly.
Call States

The API must report all call states, including (but not limited to):

Call created
Calling A
A answered
A busy
A rejected
A did not answer
Calling B
B answered
B busy
B rejected
B did not answer
Bridge established
Call in progress
Call finished
Call cancelled
SIP trunk error
System error

The API should return clear status and error codes.

Each bridge call must generate a unique Call ID that can later be used to query its status.

Webhooks

A webhook-based event system is preferred.

The system should notify events such as:

Call created
Calling A
A answered
A hung up
Calling B
B answered
B hung up
Call connected
Call finished
Call duration
End reason
Errors
Whitelist Management

Only Phone Number A is required to belong to a whitelist.

Phone Number B can be any destination number.

The API must allow:

Create whitelist number
Update whitelist number
Delete whitelist number
Enable/disable whitelist number
Get whitelist number
List whitelist numbers

Each whitelist entry must include at least:

Phone number
Name
Reference
Optional notes/comments
Active / Inactive status
Call Recordings

Every call must be recorded.

Recordings must automatically be uploaded to a remote server provided by us.

Any reliable solution is acceptable, for example:

FTP
SFTP
SCP
Or another robust transfer method.

The API must allow retrieving the call recording history for a whitelist phone number.

By sending a whitelist phone number, the API should return:

Recording list
Date
Time
Duration
Call status
URL (or equivalent) to download or stream the recording
Configuration

The API should allow configuring values such as:

Maximum time waiting for A to answer
Maximum time waiting for B to answer
Maximum call duration
Retry configuration (optional)
Other useful PBX settings
Multi-Project Support

The platform must support multiple independent projects.

Each project must have its own completely isolated configuration, including:

API Key
Project name
Webhook URL
Whitelist
Allowed IP addresses
SIP trunks
Allowed Caller IDs (DDIs)
Call recordings
Call history
Configuration settings
Logs

The goal is to host multiple customers on the same server while keeping all data completely isolated.

Security

The API must include:

API Key authentication.
HTTPS support.
IP whitelist protection for every API Key.
Each project must be able to maintain its own list of allowed IP addresses.
Permission validation on every request.
Access logs.
Activity logs.
Error logs.
Protection against unauthorized access.
Additional API Features

The API should also provide:

Query current call status using the Call ID.
Cancel a bridge call before it is connected.
Retrieve complete call history with filters such as:
Date range
Number A
Number B
Project
Status
Duration
Documentation

The project must include complete documentation:

Installation guide
Configuration guide
REST API documentation
Webhook documentation
OpenAPI / Swagger documentation (preferred)
Postman collection or cURL examples
Preferred Technologies

Experience with the following will be highly valued:

FreePBX
Asterisk
ARI
AMI
SIP
Linux
REST APIs
Docker (optional but appreciated)
Important

We are looking for clean, well-structured, maintainable code that is easy to extend in the future.

Suggestions for improving the architecture are welcome.

Preferred Candidate

We highly value developers with proven experience in FreePBX/Asterisk projects.

Being able to communicate in Spanish is a strong advantage, as it will make communication faster and more efficient throughout the project.
Related categories: PHP Python Linux Node.js Docker API Development SIP REST API