Freeclimb - the Ruby gem for the FreeClimb API

FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.

This SDK is automatically generated by the OpenAPI Generator project:

  • API version: 1.0.0
  • Package version: 4.5.2
  • Build package: org.openapitools.codegen.languages.RubyClientCodegen For more information, please visit


Add this to the Gemfile:

gem 'freeclimb', '~> 4.5.2'

and run from your terminal

bundle install

Install from Git

If the Ruby gem is hosted at a git repository: e.g. https://, then add the following in the Gemfile:

gem 'freeclimb', :git => 'https://'

Install from RubyGems

gem install freeclimb


bundle add freeclimb

Install/Build locally

To build the Ruby code into a gem:

gem build freeclimb.gemspec

Then either install the gem locally:

gem install ./freeclimb-4.5.2.gem

(for development, run gem install --dev ./freeclimb-4.5.2.gem to install the development dependencies)

Getting Started

Please follow the installation procedure and then run the following code:

# Load the gem
require 'freeclimb'

# Setup authorization
Freeclimb.configure do |config|
  # Configure HTTP basic authorization: fc
  config.username = 'ACCOUNT_ID'
  config.password = 'API_KEY'

api_instance =

buy_incoming_number_request ={phone_number: 'phone_number_example'}) # BuyIncomingNumberRequest | Incoming Number transaction details

  #Buy a Phone Number
  result = api_instance.buy_a_phone_number(buy_incoming_number_request)
  p result
rescue Freeclimb::ApiError => e
  puts "Exception when calling DefaultApi->buy_a_phone_number: #{e}"

Documentation for PerCL

The Performance Command Language (PerCL) defines a set of instructions, written in JSON format, that express telephony actions to be performed in response to an event on the FreeClimb platform. FreeClimb communicates with the application server when events associated with the application occur, so the webserver can instruct FreeClimb how to handle such events using PerCL scripts. PerCL commands are a part of the model schema and can be serialized into JSON like so:

require 'freeclimb'

say = "Hello, World")
play = "Example File")
get_digits = "Example Action URL", prompts: [say, play])
percl_script = [get_digits])
puts percl_script.to_json

Documentation for API Endpoints

All URIs are relative to

Class Method HTTP request Description
Freeclimb::DefaultApi buy_a_phone_number POST /Accounts/accountId/IncomingPhoneNumbers Buy a Phone Number
Freeclimb::DefaultApi create_a_conference POST /Accounts/accountId/Conferences Create a Conference
Freeclimb::DefaultApi create_a_queue POST /Accounts/accountId/Queues Create a Queue
Freeclimb::DefaultApi create_an_application POST /Accounts/accountId/Applications Create an application
Freeclimb::DefaultApi delete_a_recording DELETE /Accounts/accountId/Recordings/recordingId Delete a Recording
Freeclimb::DefaultApi delete_an_application DELETE /Accounts/accountId/Applications/applicationId Delete an application
Freeclimb::DefaultApi delete_an_incoming_number DELETE /Accounts/accountId/IncomingPhoneNumbers/phoneNumberId Delete an Incoming Number
Freeclimb::DefaultApi dequeue_a_member POST /Accounts/accountId/Queues/queueId/Members/callId Dequeue a Member
Freeclimb::DefaultApi dequeue_head_member POST /Accounts/accountId/Queues/queueId/Members/Front Dequeue Head Member
Freeclimb::DefaultApi download_a_recording_file GET /Accounts/accountId/Recordings/recordingId/Download Download a Recording File
Freeclimb::DefaultApi filter_logs POST /Accounts/accountId/Logs Filter Logs
Freeclimb::DefaultApi get_a_call GET /Accounts/accountId/Calls/callId Get a Call
Freeclimb::DefaultApi get_a_conference GET /Accounts/accountId/Conferences/conferenceId Get a Conference
Freeclimb::DefaultApi get_a_member GET /Accounts/accountId/Queues/queueId/Members/callId Get a Member
Freeclimb::DefaultApi get_a_participant GET /Accounts/accountId/Conferences/conferenceId/Participants/callId Get a Participant
Freeclimb::DefaultApi get_a_queue GET /Accounts/accountId/Queues/queueId Get a Queue
Freeclimb::DefaultApi get_a_recording GET /Accounts/accountId/Recordings/recordingId Get a Recording
Freeclimb::DefaultApi get_an_account GET /Accounts/accountId Get an Account
Freeclimb::DefaultApi get_an_application GET /Accounts/accountId/Applications/applicationId Get an Application
Freeclimb::DefaultApi get_an_incoming_number GET /Accounts/accountId/IncomingPhoneNumbers/phoneNumberId Get an Incoming Number
Freeclimb::DefaultApi get_an_sms_message GET /Accounts/accountId/Messages/messageId Get an SMS Message
Freeclimb::DefaultApi get_head_member GET /Accounts/accountId/Queues/queueId/Members/Front Get Head Member
Freeclimb::DefaultApi get_ten_dlc_sms_brand GET /Accounts/accountId/Messages/10DLC/Brands/brandId Get a 10DLC SMS Brand
Freeclimb::DefaultApi get_ten_dlc_sms_brands GET /Accounts/accountId/Messages/10DLC/Brands Get list of SMS 10DLC Brands
Freeclimb::DefaultApi get_ten_dlc_sms_campaign GET /Accounts/accountId/Messages/10DLC/Campaigns/campaignId Get a 10DLC SMS Campaign
Freeclimb::DefaultApi get_ten_dlc_sms_campaigns GET /Accounts/accountId/Messages/10DLC/Campaigns Get list of SMS 10DLC Campaigns
Freeclimb::DefaultApi get_ten_dlc_sms_partner_campaign GET /Accounts/accountId/Messages/10DLC/PartnerCampaigns/campaignId Get a 10DLC SMS Partner Campaign
Freeclimb::DefaultApi get_ten_dlc_sms_partner_campaigns GET /Accounts/accountId/Messages/10DLC/PartnerCampaigns Get list of SMS 10DLC Partner Campaigns
Freeclimb::DefaultApi list_active_queues GET /Accounts/accountId/Queues List Active Queues
Freeclimb::DefaultApi list_all_account_logs GET /Accounts/accountId/Logs List All Account Logs
Freeclimb::DefaultApi list_applications GET /Accounts/accountId/Applications List applications
Freeclimb::DefaultApi list_available_numbers GET /AvailablePhoneNumbers List available numbers
Freeclimb::DefaultApi list_call_logs GET /Accounts/accountId/Calls/callId/Logs List Call Logs
Freeclimb::DefaultApi list_call_recordings GET /Accounts/accountId/Calls/callId/Recordings List Call Recordings
Freeclimb::DefaultApi list_calls GET /Accounts/accountId/Calls List Calls
Freeclimb::DefaultApi list_conferences GET /Accounts/accountId/Conferences List Conferences
Freeclimb::DefaultApi list_incoming_numbers GET /Accounts/accountId/IncomingPhoneNumbers List Incoming Numbers
Freeclimb::DefaultApi list_members GET /Accounts/accountId/Queues/queueId/Members List Members
Freeclimb::DefaultApi list_participants GET /Accounts/accountId/Conferences/conferenceId/Participants List Participants
Freeclimb::DefaultApi list_recordings GET /Accounts/accountId/Recordings List Recordings
Freeclimb::DefaultApi list_sms_messages GET /Accounts/accountId/Messages List SMS Messages
Freeclimb::DefaultApi make_a_call POST /Accounts/accountId/Calls Make a Call
Freeclimb::DefaultApi remove_a_participant DELETE /Accounts/accountId/Conferences/conferenceId/Participants/callId Remove a Participant
Freeclimb::DefaultApi send_an_sms_message POST /Accounts/accountId/Messages Send an SMS Message
Freeclimb::DefaultApi stream_a_recording_file GET /Accounts/accountId/Recordings/recordingId/Stream Stream a Recording File
Freeclimb::DefaultApi update_a_conference POST /Accounts/accountId/Conferences/conferenceId Update a Conference
Freeclimb::DefaultApi update_a_live_call POST /Accounts/accountId/Calls/callId Update a Live Call
Freeclimb::DefaultApi update_a_participant POST /Accounts/accountId/Conferences/conferenceId/Participants/callId Update a Participant
Freeclimb::DefaultApi update_a_queue POST /Accounts/accountId/Queues/queueId Update a Queue
Freeclimb::DefaultApi update_an_account POST /Accounts/accountId Manage an account
Freeclimb::DefaultApi update_an_application POST /Accounts/accountId/Applications/applicationId Update an application
Freeclimb::DefaultApi update_an_incoming_number POST /Accounts/accountId/IncomingPhoneNumbers/phoneNumberId Update an Incoming Number

Documentation for Models

Documentation for Authorization


  • Type: HTTP basic authentication

Documentation for verifying request signature

  • To verify the signature request, we will need to use the verifySignatureRequest method within the Request Verifier class

Freeclimb::RequestVerifier.verify_request_signature(requestBody, requestHeader, signingSecret, tolerance)

This is a method that you can call directly from the request verifier class, it will throw exceptions depending on whether all parts of the request signature is valid otherwise it will throw a specific error message depending on which request signature part is causing issues

This method requires a requestBody of type string, a requestHeader of type string, a signingSecret of type string, and a tolerance value of type int

Example code down below

  class RequestVerifier
    def verify_request_signature_example()
        request_header = "t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8"
        signing_secret = "sigsec_ead6d3b6904196c60835d039e91b3341c77a7793"
        tolerance = (5 * 60)
        request_body =  "{\"accountId\":\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\",\"callId\":\"CAccb0b00506553cda09b51c5477f672a49e0b2213\",\"callStatus\":\"ringing\",\"conferenceId\":null,\"direction\":\"inbound\",\"from\":\"+13121000109\",\"parentCallId\":null,\"queueId\":null,\"requestType\":\"inboundCall\",\"to\":\"+13121000096\"}"
        Freeclimb::RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance)

Getting Help

If you are experiencing difficulties, contact support.