- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I follow up on this doc to generate tokens via API but I didn't receive any response from the server.
https://docs.appdynamics.com/appd/4.5.x/en/extend-appdynamics/appdynamics-apis/api-clients#APIClient...
the curl like below:
curl -X POST -H "Content-Type: application/vnd.appd.cntrl+protobuf;v=1" "https://(accountName).saas.appdynamics.com/controller/api/oauth/access_token" -d 'grant_type=client_credentials&client_id=(username)@(accountName)&client_secret=(clientsecret)'
Please help me!
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Tran.Vinh, I spoke to our engineer again, and his last suggestion was to make sure your client secret was correct as well, even if that means generating a new one. If that doesn't work, please go to https://help.appdynamics.com/hc/en-us/requests and file a ticket, so our customer support team will look into it. I'd also make sure that the client name and account name don't have any trailing spaces. I hope regenerating a client secret helps, but if not, I'm sorry I couldn't help you.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi @Tran.Vinh , @sunil.vanmullem
Can you offer any help to Clarence based on your experience with this?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Tran.Vinh , the engineer wants to confirm that you are using the correct parameters for the `client_id` parameter. Can you verify that `Waverley%20Software%20Inc` is your account name and that `readyapi` is your API client name? Since you are not getting an HTTP 500 error, in other words, it doesn't appear to be a syntax issue, that the authorization 401 error might be caused by incorrect credentials---at least that's what we're trying to determine.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Joe.Catera
I attached the image of the account name and client_name in some pictures below. Please help me check on the issue 401
Thanks
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Tran.Vinh, I spoke to our engineer again, and his last suggestion was to make sure your client secret was correct as well, even if that means generating a new one. If that doesn't work, please go to https://help.appdynamics.com/hc/en-us/requests and file a ticket, so our customer support team will look into it. I'd also make sure that the client name and account name don't have any trailing spaces. I hope regenerating a client secret helps, but if not, I'm sorry I couldn't help you.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Joe.Catera
It worked well after I got support from the customer support team.
Thank you so much.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I know this is an older post, but we are experiencing the same issue, and are using the same curl statement parameters. What did the support team do to correct the issue for you?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
With the latest release of the Controller, there is a specific Content-Type you need to use, not the protobuf one like always 🙂
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm having the same issue and it started happening a few days ago. The CURL command from the docs still throws 401.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Update your Content-Type to this and it will work again, it is mentioned in the release notes of the last Controller Update -
{"Content-Type": "application/x-www-form-urlencoded"}
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As I said, the CURL command from the docs doesn't work. It already has a content-type header: https://docs.appdynamics.com/appd/24.x/24.12/en/extend-cisco-appdynamics/cisco-appdynamics-apis/api-...
Not even mentioning there's two different commands in the example, one with basic auth added. I've tried all combinations of my username, domain, API client and still getting 401.
$ curl -i -X POST -H "Content-Type: application/x-www-form-urlencoded" "https://mothership2019052316285110.saas.appdynamics.com/controller/api/oauth/access_token" \
-d 'grant_type=client_credentials&client_id=EnterpriseTest@mothership2019052316285110&client_secret=<secret>'
HTTP/1.1 401 Unauthorized
Content-Type: text/html; charset=UTF-8
Content-Length: 204
Connection: keep-alive
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
cache-control: must-revalidate,no-cache,no-store
last-modified: Tue, 28 Jan 2025 08:17:18 GMT
accept-ranges: bytes
x-envoy-upstream-service-time: 13
date: Mon, 03 Feb 2025 22:38:47 GMT
server: istio-envoy
x-envoy-decorator-operation: pdx-p-con-437-svc.pdx-p-con-437.svc.cluster.local:8079/*
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Unauthorized</title>
</head>
<body>
HTTP Error 401 Unauthorized
<p/>
This request requires HTTP authentication
</body>
</html>%
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, is this a production instance or a trial?
I just used your exact curl command, and updated with my values and it works. Don't see an issue with the Command.
I believe there is a limitation on using the API if using a trial, but if it is not a trial, you need to contact AppD Support to have a look at your controller to see what the issue is.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No it's not a trial. But it was working correctly so why would AppD devs ship out a breaking change without notifying us ? We haven't touched the controller in months
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Tran.vinh, if you would like another example of how to get a token using an API secret, i'm doing the following on my rapport application: (https://github.com/open768/appdinc/blob/main/auth.php its in php, but hopefully you get the gist)
the querystring i use is
$oHttp->request_payload =
"grant_type=client_credentials&" .
"client_id=$app@$account&" .
"client_secret=$api_secret";
with extra headers:
$oHttp->extra_headers = ["Content-Type" => "application/vnd.appd.cntrl+protobuf;v=1"];
then do a GET request to the API for your controller "/api/oauth/access_token"
this returns the access token to use for the API.
HTH 🙂
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Tran.Vinh ,
You're using docs that are four years old. The request header has changed since 4.5 (the latest docs are 23.x), so the request should be the following:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" "https://<controller address>/controller/api/oauth/access_token" -d 'grant_type=client_credentials&client_id=<apiClientName>@<accountName>&client_secret=<clientSecret>'
See https://docs.appdynamics.com/appd/23.x/latest/en/extend-appdynamics/appdynamics-apis/api-clients.
The request header is now the following:
Content-Type: application/x-www-form-urlencoded"
I've been told that you should be able to use the Controller REST APIs with a trial license, BTW.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Joe.Catera
I tried sending a request flow your latest doc but I still have a new issue with 401 unauthorized
curl -i -X POST -H "Content-Type: application/x-www-form-urlencoded" -u "readyapi:683dfd51-60ea-4224-adc2-557e8d2212a0" "https://walker202302080517089.saas.appdynamics.com/controller/api/oauth/access_token" -d 'grant_type=client_credentials&client_id=readyapi@Waverley%20Software%20Inc&client_secret=683dfd51-60ea-4224-adc2-557e8d2212a0'
Could you help me check and correct if my syntax invalid
Thanks
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Tran.Vinh ,
I'm not seeing anything wrong with your command syntax but am getting an "HTTP 401 Unauthorized" error. I'm asking one of our engineers to take a look to see if your command syntax is correct or if it's a credential issue. I'll get back to you next week with his response.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Joe.Catera
Do you have any update?
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Tran.Vinh , I asked an engineer to help in a support ticket, but I haven't heard back, so I wrote to the engineer directly. Sorry about the delay.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi @Tran.Vinh,
I was asked to pass this along.
Can you please run this command with "curl -i" or verbose? It would be interesting to know if the server considers it a bad request or unauthorized.
- Mark as New
- Bookmark Message
- Subscribe to Message
- Mute Message
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
this is the result. I saw an internal server error with error code 500
