Getting the "Invalid ApiKey for given resource" error

We are getting the 401 Unauthorized response code with the below error:

{"fault":
   {
    "faultstring":"Invalid ApiKey for given resource",
    "detail":
       {
          "errorcode":"oauth.v2.InvalidApiKeyForGivenResource"
       }
   }
}

The curl command used is as follows:

curl -X GET "https://myorg-test.apigee.net/v1/profit_centers?page=2&size=25" -H "accept: application/json" -H "bypass-cache: false" -H "ApiKey: <API-Key>"

I have confirmed that the APIKey is correct.

Solved Solved
0 1 10.5K
1 ACCEPTED SOLUTION

1. Checked the base path of the API and found that it was "/v1/profit_centers"

2. Next looked into the VerifyAPIKey policy and confirmed that the ApiKey was accepted as a header.

<APIKey ref="request.header.ApiKey"/>

3. Checked the API Product associated with the specific API Proxy and found the following issues:

Issue #1

The API Product allow the requests only for the "dev" environment. But the calls were made to "test" environment.


Solution:

Modified the API Product to allow the API calls for "test" environment.

Issue #2

The Resource Path in the API Product was incorrectly set as follows:

"/v1/profit_centers**" 

Please note the Resource Path applies to the path suffix after the base path. Since the basepath of the API Proxy is "/v1/profit_centers", we don't need to include in the Resource Path.

Solution:

Modify the Resource Path to include what you want to allow in the path after the base path.

For ex:
We could set the Resource Path as "/", this will allow the base path /v1/profit_centers followed by anything like the ones shown below in your URL

/v1/profit_centers
/v1/profit_centers/
/v1/profit_centers/1 

For more details on how to set the Resource Path, refer to the below link

https://docs.apigee.com/developer-services/content/create-api-products#configuring-the-behavior-of-a...

After making the above modifications, the API started giving successful results.

View solution in original post

1 REPLY 1

1. Checked the base path of the API and found that it was "/v1/profit_centers"

2. Next looked into the VerifyAPIKey policy and confirmed that the ApiKey was accepted as a header.

<APIKey ref="request.header.ApiKey"/>

3. Checked the API Product associated with the specific API Proxy and found the following issues:

Issue #1

The API Product allow the requests only for the "dev" environment. But the calls were made to "test" environment.


Solution:

Modified the API Product to allow the API calls for "test" environment.

Issue #2

The Resource Path in the API Product was incorrectly set as follows:

"/v1/profit_centers**" 

Please note the Resource Path applies to the path suffix after the base path. Since the basepath of the API Proxy is "/v1/profit_centers", we don't need to include in the Resource Path.

Solution:

Modify the Resource Path to include what you want to allow in the path after the base path.

For ex:
We could set the Resource Path as "/", this will allow the base path /v1/profit_centers followed by anything like the ones shown below in your URL

/v1/profit_centers
/v1/profit_centers/
/v1/profit_centers/1 

For more details on how to set the Resource Path, refer to the below link

https://docs.apigee.com/developer-services/content/create-api-products#configuring-the-behavior-of-a...

After making the above modifications, the API started giving successful results.