> For a complete documentation index, fetch https://docs.voximplant.ai/llms.txt # CreateSipRegistration POST https://api.voximplant.com/platform_api/CreateSipRegistration Creates a new SIP registration (the platform registers as a user on a 3rd party SIP server).There are two modes of SIP registration:Persistent registration, when the platform registers on a 3rd party SIP server as a user and the registration lasts until deleted (or there are network/technical issues with it — see the corresponding callback)Non-persistent registration (set `is_persistent` to false) which is initiated only when the specificed user (with `user_id` or `user_name`) logs in via one of Voximplant SDKs. As soon the user logs off, the registration goes offline. This mode helps to implement SIP softphone-like apps using Voximplant’s SDKs.Please note that when you create a SIP registration, we reserve the subscription fee and taxes for the upcoming month. Read more in the Billing page.Allowed roles: `Owner`, `Admin`, `Accountant`.**Example request:** Create SIP registration. Reference: https://docs.voximplant.ai/api-reference/management-api/reference/sip-registration/create-sip-registration ## Authentication - `Authorization` header (bearer token, required) — Voximplant Management API uses signed JWT tokens generated from your service-account private key. Pass the token in the `Authorization` header as a Bearer value: ``` Authorization: Bearer $VOXIMPLANT_TOKEN ``` See [Authorization](/api-reference/management-api/authorization) for ready-to-copy snippets in bash, Python, Node.js and Go that turn your `credentials.json` into a token. ## Request ### Query parameters - `sip_username` (string, required) — The user name - `proxy` (string, required) — The SIP proxy - `auth_user` (string, optional) — The SIP authentications user - `outbound_proxy` (string, optional) — The outgoing SIP proxy - `password` (string, optional) — The SIP password - `is_persistent` (boolean, optional, default: true) — Whether SIP registration is persistent. Set false to activate it only on the user login - `application_id` (integer, optional) — The application ID which a new SIP registration is to be bound to. Can be used instead of the **application_name** parameter - `application_name` (string, optional) — The application name which a new SIP registration is to be bound to. Can be used instead of the **application_id** parameter - `rule_id` (integer, optional) — The rule ID which a new SIP registration is to be bound to. Can be used instead of the **rule_name** parameter - `rule_name` (string, optional) — The rule name which a new SIP registration is to be bound to. Can be used instead of the **rule_id** parameter - `user_id` (integer, optional) — The user ID which a new SIP registration is to be bound to. Can be used instead of the **user_name** parameter - `user_name` (string, optional) — The user name which a new SIP registration is to be bound to. Can be used instead of the **user_id** parameter ## Response ### 200 Successful response - `result` (integer, optional) — Returns 1 if the request has been completed successfully - `sip_registration_id` (integer, optional) — The sip registration id - `account_info` (ShortAccountInfoType, optional) — The current account state - `error` (CreateSipRegistrationPostResponsesContentApplicationJsonSchemaError, optional) ## Types ### ShortAccountInfoType The short account info. - `account_id` (integer, optional) — The account's ID - `frozen` (boolean, optional) — Whether account is blocked by Voximplant admins or not - `balance` (double, optional) — The account's money - `currency` (string, optional) — The currency code (USD, RUR, EUR...) ### CreateSipRegistrationPostResponsesContentApplicationJsonSchemaError - `msg` (string, optional) - `code` (integer, optional) - `details` (CreateSipRegistrationPostResponsesContentApplicationJsonSchemaErrorDetails, optional) ### CreateSipRegistrationPostResponsesContentApplicationJsonSchemaErrorDetails - `required_money` (double, optional) ## Examples ### Success **Response** ```json { "result": 1, "sip_registration_id": 1 } ``` **SDK Code** ```python Success import requests url = "https://api.voximplant.com/platform_api/CreateSipRegistration" querystring = {"sip_username":"sip_username","proxy":"proxy"} headers = {"Authorization": "Bearer "} response = requests.post(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Success const url = 'https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy'; const options = {method: 'POST', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Success package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Success require 'uri' require 'net/http' url = URI("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java Success import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy") .header("Authorization", "Bearer ") .asString(); ``` ```php Success request('POST', 'https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp Success using RestSharp; var client = new RestClient("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift Success import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Insufficient money to add a new SIP registration **Response** ```json { "result": 1, "sip_registration_id": 1 } ``` **SDK Code** ```python Insufficient money to add a new SIP registration import requests url = "https://api.voximplant.com/platform_api/CreateSipRegistration" querystring = {"sip_username":"sip_username","proxy":"proxy"} headers = {"Authorization": "Bearer "} response = requests.post(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript Insufficient money to add a new SIP registration const url = 'https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy'; const options = {method: 'POST', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Insufficient money to add a new SIP registration package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Insufficient money to add a new SIP registration require 'uri' require 'net/http' url = URI("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java Insufficient money to add a new SIP registration import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy") .header("Authorization", "Bearer ") .asString(); ``` ```php Insufficient money to add a new SIP registration request('POST', 'https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp Insufficient money to add a new SIP registration using RestSharp; var client = new RestClient("https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift Insufficient money to add a new SIP registration import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.voximplant.com/platform_api/CreateSipRegistration?sip_username=sip_username&proxy=proxy")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```