Deploy Akamai Integration using Property Manager API
Deploy the Fingerprint Akamai Proxy Integration using Akamai Property Manager API PATCH body method.
Before you start: Read the general Akamai guide
This document only covers deploying the Fingerprint Akamai proxy integration using the Akamai Property Manager API (PAPI). It assumes you have already read the general Akamai guide and completed the following steps:
- Step 1: You have issued a proxy secret in the Fingerprint Dashboard (
FPJS_PROXY_SECRET
).- Step 2: You have defined the path variables for the integration (
FPJS_INTEGRATION_PATH
,FPJS_AGENT_PATH
,FPJS_RESULT_PATH
)If you want to use Terraform instead of PAPI to install the integration, see Deploy Akamai proxy integration using Terraform.
Limitations
This integration is exclusively supported for customers on the Enterprise Plan. Other customers are encouraged to use Custom subdomain setup or Cloudflare Proxy Integration.
Prerequisites
This deployment guide assumes you already have a working Akamai property and are familiar with the Akamai Control Panel. It uses Postman to make the HTTP requests, but feel free to adjust the instructions to use your preferred HTTP client.
Step 3: Authenticate with EdgeGrid
- Follow the Akamai documentation to Create EdgeGrid authentication credentials. You should end up downloading a credentials text file containing the values used below.
- Inside Postman, use the values from the credentials file to configure the EdgeGrid authentication for your HTTP requests:
- Go to the Authorization tab.
- Set the Type to
Akamai EdgeGrid
. - Set
Access Token
,Client Token
, andClient Secret
to the values from the credentials file. - Set the base URL of the request according to the
host
value from the credentials file, e.g.https://akab-xxxxxxxx.luna.akamaiapis.net
.
Note: If your HTTP client does not support EdgeGrid authentication, you can use the same values to manually create the EdgeGrid authentication header. See the EdgeGrid Protocol Specification for more details.
Step 4: Clone the Akamai integration repository
- Clone the repository:
git clone [email protected]:fingerprintjs/fingerprint-pro-akamai-proxy-integration.git
- Install dependencies using PNPM:
pnpm install
Step 5: Generate Patch Body
Use the build
npm command to generate the integration's property rules for your Akamai property. Use the values from previous steps to configure the command:
integration-path
,agent-path
, andresult-path
should be short, unique strings — avoid usingfpjs
or other recognizable words.proxy-secret
can be created in Fingerprint Dashboard → API Keys.
pnpm build --type patchBody \
--integration-path <FPJS_INTEGRATION_PATH> \
--agent-path <FPJS_AGENT_PATH> \
--result-path <FPJS_RESULT> \
--proxy-secret <FPJS_PROXY_SECRET>
The output will be saved to dist/patch-body/body.json
.
Step 6: Deploy using Property Manager API
Use the following sequence of PAPI requests to collect the necessary data and deploy the integration.
baseURL
is created from thehost
value from the credentials file, e.g.https://akab-xxxxxxxx.luna.akamaiapis.net
.- Authenticate all requests using EdgeGrid credentials as described in Step 3.
Step 6.1: Get your Contract ID
GET https://{baseURL}/papi/v1/contracts
Sample Response:
{
"accountId": "act_A-CCT5678",
"contracts": {
"items": [
{
"contractId": "ctr_C-0N7RAC71",
"contractTypeName": "DIRECT_CUSTOMER"
}
]
}
}
Save the contractId
to use in later requests.
Step 6.2: Get your Group ID
GET https://{baseURL}/papi/v1/groups
Sample Response:
{
"accountId": "act_A-CCT3456",
"accountName": "Internet Company",
"groups": {
"items": [
{
"contractIds": ["ctr_C-0N7RAC71"],
"groupId": "grp_32145",
"groupName": "Example.com-1-1TJZH5"
}
]
}
}
Save the groupId
associated with your contractId
to use in later requests.
Step 6.3: Get your Property ID
GET https://{baseURL}/papi/v1/properties?contractId=ctr_C-0N7RAC71&groupId=grp_32145
Sample Response:
{
"properties": {
"items": [
{
"accountId": "act_A-CCT9012",
"assetId": "aid_101",
"contractId": "ctr_C-0N7RAC7",
"groupId": "grp_54321",
"latestVersion": 2,
"propertyId": "prp_175780",
"propertyName": "example.com"
}
]
}
}
Find the property you want to deploy the integration to. Save its propertyId
and latestVersion
to use in later requests.
Step 6.4: Get your Property Versions (optional but recommended)
To make changes to your property, you first need to clone one of its versions. To decide which version to clone, you can get the list of all versions for your property.
GET https://{baseURL}/papi/v1/properties/{propertyId}/versions?contractId=ctr_C-0N7RAC71&groupId=grp_32145
Sample Response:
{
"accountId": "act_A-CCT7890",
"assetId": "aid_101",
"contractId": "ctr_C-0N7RAC71",
"groupId": "grp_54321",
"propertyId": "prp_173136",
"propertyName": "981.catalog.jsmith.net",
"versions": {
"items": [
{
"propertyVersion": 2,
"note": "updated caching",
"productionStatus": "INACTIVE",
"stagingStatus": "ACTIVE"
},
{
"propertyVersion": 1,
"note": "initial version",
"productionStatus": "ACTIVE",
"stagingStatus": "INACTIVE"
}
]
}
}
Step 6.5: Clone the current version of your property
POST https://{baseURL}/papi/v1/properties/{propertyId}/versions?contractId=ctr_C-0N7RAC71&groupId=grp_32145
Request Body:
{
"createFromVersion": <Your property version to clone here>
}
Sample Response:
{
"versionLink": "/papi/v0/properties/prp_173136/versions/2?contractId=ctr_C-0N7RAC71&groupId=grp_15225"
}
Step 6.6: Remove existing Fingerprint artifacts (if needed)
If your Akamai property already has the Fingerprint proxy integration installed, manually remove the Fingerprint artifacts before updating the integration. Otherwise, some artifacts will be duplicated and the integration will not work.
- Navigate to Akamai Control Center → Properties.
- Find the cloned property version.
- Click Edit to begin editing rules.
- Navigate to the Variables section and remove all variables that start with
PMUSER_FPJS_
. - Scroll to the bottom of the rule tree and delete the rule named Fingerprint.
- Click Save to confirm the cleanup.
Step 6.7: Patch the new version with Fingerprint integration rules
Finally, send a PATCH request to update your property's rule tree with the Fingerprint integration rules:
PATCH https://{baseURL}/papi/v1/properties/{propertyId}/versions/{newVersion}/rules?contractId=ctr_C-0N7RAC71&groupId=grp_32145
- Request body: Copy-paste the content of the
dist/patch-body/body.json
file you created in Step 5. - Content-type: header
application/json-patch+json
Sample Response:
{
"accountId": "act_A-CCT1234",
"contractId": "ctr_K-0N7RAK71",
"etag": "a9dfe78cf93090516bde891d009eaf57",
"groupId": "grp_12345",
"propertyId": "prp_173136",
"propertyName": "mytestproperty.com",
"propertyVersion": 3,
"ruleFormat": "v2015-08-08",
"rules": {
"name": "default",
"behaviors": [],
"children": []
}
}
Step 6.8: Activate the Patched Version
POST https://{baseURL}/papi/v1/properties/{propertyId}/activations?contractId=ctr_C-0N7RAC71&groupId=grp_32145
- Request body:
{ "propertyVersion": <Your cloned property version to activate>, "network": "PRODUCTION", "notifyEmails": ["<your email address to notify about activation status>"], "acknowledgeAllWarnings": true, "activationType": "ACTIVATE" }
Sample Response:
{
"activationLink": "/papi/v0/properties/prp_173136/activations/atv_67037?contractId=ctr_K-0N7RAK7&groupId=grp_15225"
}
This will directly activate the version in
PRODUCTION
. If you want to deploy to staging first, change thenetwork
value toSTAGING
.
Troubleshooting API requests
If you encounter an error, check the following:
Issue | Resolution |
---|---|
403 Unauthorized | Ensure your EdgeGrid credentials are correct and Postman is configured properly. |
409 Conflict | You are trying to patch an already active version. Clone a new version first. |
400 Bad Request | Check that your patch body is valid JSON and that Content-Type is set correctly. |
Activation status unknown | Use the Akamai Control Center to monitor activations. The Property Manager API does not support progress polling. |
Step 7: Configure the Fingerprint client agent
Please see the main Akamai proxy integration guide to Configure the client agent on your website or mobile application.
Updated about 9 hours ago