I’ve had an account for a couple of years but just had a recent outage (issue on my side) where my device was no longer registered. So I’d like to set up monitoring for my registration status. I saw on the Main Menu of the VoIP.ms Home page that there is a SOAP/REST API. I downloaded the WSDL set up password, IP address and enabled API on my account. I tried calling getRegistrationStatus using Postman, but I got a 500 Server Error “Function ‘getRegistrationStatusRequest’ doesn’t exist”. So my questions are, is this API current? Is there any additional/updated documentation, other than the sample code on the Main menu, that shows how to use the API?
You should probably open a support ticket and ask VoIP.ms support team directly.
When I was working on MMSGate2, I originally tried to use the SOAP interface. I found some issues with the interface and missing parts of WSDL missing. I did open a ticket, but it is considered beta and response is very slow. In fact, one SOAP ticket I submitted 13 months ago is still listed as pending. I recommend just use REST/JSON. It might look like this:
curl “https://voip.ms/api/v1/rest.php?api_username=$APIID&api_password=$APIPW&method=getRegistrationStatus”
Thanks for the reply. I did open a ticket, just to see what they say. I tried using the REST endpoint and after I changed the POST to GET, I got a response. Although the response was 'Invalid credentials". I changed the password to remove any special characters, I tried using my VoIP.ms username (email address) and I tried using my SIP Username (6-digit number), and still get invalid credentials. I’m not sure what they want. Any suggestions?
The ID is the email address you logon to https://voip.ms/. However, the password is different. It is the password you set at https://voip.ms/m/api.php. If there are any special characters in the password, be sure to encode them, as in ‘+’ becomes %2B. You can use https://www.urlencoder.org/.
+1 to @RVgo4it on the password, and one detail that confirms it: VoIP.ms returns a different status (ip_not_enabled) when the credentials are good but your source IP isn’t on the allowed list. So invalid_credentials specifically rules out the allowlist and points at the username/password pair. The URL-encoding tip is worth taking seriously too; an unencoded + or & in the API password fails in a way that looks identical to a wrong password.
Two things that will bite you right after that:
getRegistrationStatusneeds anaccountparameter naming the sub-account, e.g.&account=123456_myata. Without it you get a different error, so don’t read that one as the credentials problem all over again.- The allowed-IP field on that same API settings page accepts a hostname, not just a literal IP. Since you’ll be polling from home, put a dynamic-DNS name in there once and it keeps working when your address changes.
One caveat for whatever you build on top: register_next comes back with no timezone offset (e.g. 2026-09-18T14:44:11), so don’t assume UTC when you compare it against now(). It appears to be Eastern. That one cost me a wrong answer earlier today.
For the monitoring itself: we build an (unofficial) MCP server that wraps the same REST API, so the check can just be asked in plain language instead of scripted. Against my own account:
Same getRegistrationStatus call underneath; it just saves writing the polling and the parsing. It’s at voipms-mcp.ecliptical.io if that’s useful. We’re not affiliated with VoIP.ms.
I think the combination of changing the password and switching to use the login username and immediately doing another API call is what bit me. It’s now working. I appreciate the help.
The API does appear to be current, but getRegistrationStatusRequest suggests you may be calling the SOAP method incorrectly. VoIP.ms still documents getRegistrationStatus() in its API examples, and its current status page shows the REST API as operational. I’d compare your Postman SOAP request against the downloaded class.voipms.php example, especially the SOAP action and request structure.
