QareShield API

Fraud protection for creator campaign networks. Verify identity, confirm engagement, and gate payouts — across Instagram, TikTok, YouTube, and Twitter/X.

Base URL: https://api.qareshield.qamply.net/v1  ·  All requests require Authorization: Bearer <API_KEY>

Quick start

Get your first fraud score in under 5 minutes. Register for a free API key →

const res = await fetch('https://api.qareshield.qamply.net/v1/user/risk-score', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer fg_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    user_id:       'creator_8821',
    platform:      'instagram',
    social_handle: '@thecreator',
    ip_address:    '203.0.113.42',
    device_id:     'fp_a8f3bc9d1e',
    checks: ['identity', 'ip_reputation', 'velocity'],
  }),
});
const { score, verdict, signals } = await res.json();
// → score: 82, verdict: "block", signals: [...]

Authentication

All API requests require a Bearer token in the Authorization header. Keys come in two forms:

PrefixEnvironmentNotes
fg_test_...SandboxReturns simulated data. Safe to use in development.
fg_live_...ProductionReal checks. Counts against your monthly quota.
Live keys are shown once at creation and cannot be retrieved. Store them in environment variables — never commit them to source control.

POST /user/risk-score Free+
Returns a composite fraud risk score (0–100) for a user. Combines signals from IP intelligence, device fingerprinting, social profile analysis, and behavioral velocity. The primary endpoint for real time fraud decisions.

Request body

ParameterTypeRequiredDescription
user_idstringrequiredYour internal ID for the user being checked
platformstringrequiredinstagram tiktok youtube twitter
ip_addressstringoptionalIPv4 or IPv6. Enables IP reputation + VPN detection
device_idstringoptionalFingerprintJS visitor ID. Enables device + multi-account detection
social_handlestringoptionalCreator's platform handle. Enables profile quality checks
campaign_idstringoptionalUsed for velocity checks across actions in same campaign
checksstring[]optionalSubset to run: identity ip_reputation device velocity. Default: all

Response

Verdict values
approve — score < 35 review — score 35–70 block — score > 70
200 OK
{
  "request_id": "req_9xLpQ2mK7nT",
  "score": 82,
  "verdict": "block",
  "confidence": 0.94,
  "recommendation": "Block action. Hold payout. Request re-verification.",
  "signals": [
    { "id": "vpn_detected", "severity": "high", "weight": 0.35 },
    { "id": "bot_click_pattern", "severity": "high", "weight": 0.38 }
  ],
  "latency_ms": 64
}
POST /identity/verify Free (basic) · Pro (liveness+ID)
Multi-layer identity verification. Free tier covers social profile, device, IP, and geo. Pro+ adds liveness detection and government ID document matching.

Request body

ParameterTypeRequiredDescription
user_idstringrequiredYour internal user ID
platformstringrequiredSocial platform
social_handlestringrequiredCreator's handle on the platform
ip_addressstringoptionalUser's IP address
device_idstringoptionalFingerprintJS visitor ID
selfie_base64stringPro+Base64 encoded selfie image for liveness check
id_doc_base64stringPro+Base64 encoded government ID document
claimed_countrystringoptionalISO 3166-1 alpha-2 country code for geo-consistency check
POST /engagement/verify Pro+
Verify a creator actually performed a specific campaign action. Uses direct platform API confirmation where OAuth tokens are provided, combined with timing analysis and velocity checks.

Request body

ParameterTypeRequiredDescription
user_idstringrequiredYour internal user ID
platformstringrequiredSocial platform
campaign_idstringrequiredYour campaign ID
action_typestringrequiredlike share follow view comment post retweet
target_content_idstringrequiredThe post/video/account ID the action was performed on
access_tokenstringoptionalCreator's OAuth token. Enables direct API confirmation (strongest signal)
submission_timestampnumberoptionalUnix ms when creator claimed to complete the action
task_start_timestampnumberoptionalUnix ms when the task was assigned. Used for timing analysis
POST /payout/gate Pro+
Call this endpoint immediately before releasing any payout. Runs a full fraud check and returns a gate decision. High value payouts and crypto payouts automatically go to review regardless of score.

Request body

ParameterTypeRequiredDescription
user_idstringrequiredCreator receiving the payout
platformstringrequiredSocial platform
campaign_idstringrequiredCampaign the payout relates to
payout_amountnumberrequiredAmount in major currency units (e.g. 49.99 for $49.99)
currencystringrequiredUSD NGN GBP EUR USDT BTC
payout_methodstringrequiredpaystack paypal btc usdt bank

Error codes

HTTPError codeMeaning
400validation_errorMissing or invalid request body field
401missing_api_keyNo Authorization header provided
401invalid_api_keyKey not found, revoked, or wrong format
403tier_restrictionEndpoint requires a higher plan
429rate_limit_exceededToo many requests per second
429monthly_quota_exceededMonthly call limit reached
500internal_errorSomething went wrong on our end

Rate limits

PlanMonthly callsPer secondOverage
Free1,0002 req/sBlocked
Pro50,00050 req/s$0.004/call
ScaleUnlimited500 req/sIncluded

Remaining quota is returned on every response in the X-RateLimit-Remaining-Month header.


Guide — creator onboarding flow

The recommended integration pattern when a creator joins your platform for the first time:

recommended flow
// Step 1 — Collect device fingerprint on the frontend
// Install: npm install @fingerprintjs/fingerprintjs
const fp = await FingerprintJS.load();
const { visitorId } = await fp.get();

// Step 2 — Send to your backend, which calls QareShield
const identity = await qareshield.post('/identity/verify', {
  user_id:       creator.id,
  platform:      creator.platform,
  social_handle: creator.handle,
  ip_address:    req.ip,
  device_id:     visitorId,
  claimed_country: creator.country,
});

// Step 3 — Route based on result
if (identity.result === 'verified') {
  // Activate account
} else if (identity.result === 'review') {
  // Queue for manual review, restrict to low-value campaigns
} else {
  // Reject onboarding, show reason flags
}

QareShield by Qamply · hello@qamply.net · qareshield.qamply.net