How can I work with AMI via cURL?

I have an asterisk server with AMI web enabled on port 8088, prefix asterisk. So my rawman url would be http://myserver:8088/asterisk/rawman

I just tried to login and ping with 2 urls http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin http://myserver:8088/asterisk/rawman?action=ping

It works when I enter 2 above urls into the web browsers, but it does not when I use cURL from terminal.

Result from Terminal: curl 'http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin' Response: Success Message: Authentication accepted

curl 'http://myserver:8088/asterisk/rawman?action=ping' Response: Error Message: Permission denied

Error from Asterisk CLI: (X.X.X.X is my LAN ip address)

HTTP Connect attempt from 'X.X.X.X' unable to authenticate

So I can not execute any further command like the way I did when dealing with AJAM. If anybody have an idea, please help me out, thank you. Best Regards Loi Dang

With your first request in browser you pass through authentication process and Asterisk respond with a cookie that your browser keeps and uses in further requests. You should see it in AMI response Set-Cookie header.

However that doesn't happen when you use cURL, it doesn't save the cookie for you. You should explicitly tell cURL to use the cookie in the request. Refer to cURL manual to find details


You can provide digest authentication for every single request with the alternate a* commands. For instance your ping action will look like this:

curl -v --digest -u admin:admin http://myserver:8088/asterisk/arawman?action=ping

Alice can use the ami-launch-index value to determine which portion of the user data is applicable to a particular instance. She connects to one of the instances, and retrieves the ami-launch-index for that instance to ensure it is one of the replicants:

Hate to answer my own question, but I post this for someone else who would get into this trouble

Reference to in short:

Store the cookiejar when login:

curl -c ./cookie-file -v http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin

Use the cookiejar with ping or other commands:

curl -b ./cookie-file -v http://myserver:8088/asterisk/rawman?action=ping

It should work.

Loi Dang

All the examples in the Zendesk REST API docs use cURL, a lightweight, command-line tool for making HTTP requests without a web browser. cURL lets you try out various API requests in a command-line interface such as the command prompt in Windows or Terminal in macOS. You don't need to build a working web application just to try out the APIs.

curl -c /path/to/cookiefile http://yourhost/ to write to a cookie file and start engine and to use cookie you can use

curl -b /path/to/cookiefile http://yourhost/** its works for me

We are using a few older instances to run our server at work, and since they are already in sunset mode we dont really want to update the AMIs. However we now need curl that is able to use TLS 1.2 and that means 7.34 or later. yum lists 7.27 as the latest on our instance, coming from amzn-updates repo. What are our options to update curl on

3 How can I work with AMI via cURL? Jan 8 '16. 2 Build DAHDI for Beablebone Black Mar 13 '15. 2 How can I work with AMI via cURL? Jan 6 '16.

To check whether the Curl package is installed on your system, open up your console, type curl, and press enter. If you have curl installed, the system will print curl: try 'curl --help' or 'curl --manual' for more information. Otherwise, you will see something like curl command not found.

In this article I will explain how curl can be used to make HTTP requests. What is cURL. cURL is basically used to transfer data using Internet Protocols for the given URL. Curl is a Client side program. In the name cURL, c stands for Client and URL indicates curl works with URL’s. The curl project has a curl command line and also a libcurl