Looking for the broader Akamai _abck flow? See /docs/akamai. SecCPT is the proof-of-work step on top.

Resolving Akamai SecCPT 428 Challenges

Akamai SecCPT is the proof-of-work challenge served on high-security operations such as login or checkout. When triggered, the server returns HTTP 428 with a challenge payload (often base64 or hex) in the response. MeshPrivacy computes the proof and returns a valid sec_cpt token to retry the original request.

Service Schema

FieldTypeRequiredDescription
challengestringYesChallenge payload (base64/hex) from sec-cpt headers
urlstringNoTarget URL
script_urlstringNoSecCPT script URL
challenge_dataobjectNoJSON with nonce, difficulty, token, count, timestamp
proxy_configstringNoProxy in http://user:pass@ip:port format
user_agentstringNoCustom user agent

Service ID: sec_cpt · Status: Stable

Where to find the challenge

When the server returns 428, look for headers prefixed with sec-cpt (e.g. sec-cpt-challenge) or a x-akamai-sitekey-style payload in the body. Pass the raw value as challenge. If the server returns parsed nonce/difficulty/token JSON instead, also pass it as challenge_data.

Integration Example

sec-cpt.js
// Submit Akamai SecCPT task to MeshPrivacy
const response = await fetch('https://api.meshprivacy.com/v1/tasks/submit', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY },
  body: JSON.stringify({
    service: 'sec_cpt',
    challenge: '<base64-or-hex-payload-from-sec-cpt-headers>',  // required
    url: 'https://target-site.com/',                            // optional
    script_url: 'https://target-site.com/akam/sec-cpt.js',      // optional
    challenge_data: {                                           // optional - challenge JSON
      nonce: '...',
      difficulty: 16,
      token: '...',
      count: 1,
      timestamp: 1715500000
    },
    proxy_config: 'http://user:pass@ip:port',                   // optional
    user_agent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...'  // optional
  })
});
const { task_id } = await response.json();

const result = await fetch(`https://api.meshprivacy.com/v1/tasks/result/${task_id}`, {
  headers: { 'X-API-Key': API_KEY }
});
const { sec_cpt_token, cookies } = await result.json();
// Send sec_cpt_token in retry of the original request

FAQ

Approximately 5 minutes. The token must be replayed against the original request before expiry.

Related Services