Home
Providers
Sift
Sift
Sift is a digital trust and safety platform that uses machine learning to detect and prevent online fraud and abuse - payment fraud, account takeover, account abuse, content abuse, and promotion abuse. Applications stream user events to the Sift Events API, retrieve real-time risk Sift Scores (0-100) per abuse type, and act on them through the Decisions API, automated Workflows, verification (OTP), and PSP merchant risk management. Sift exposes a documented public REST API over HTTPS at https://api.sift.com with API-key authentication.
Sift publishes 7 APIs on the APIs.io network, including Events API, Score API, Decisions API, and 4 more. Tagged areas include Fraud Detection, Fraud Prevention, Risk, Trust and Safety, and Machine Learning.
Sift’s developer surface includes authentication, documentation, engineering blog, and 8 more developer resources.
7 APIs
0 Features
Fraud Detection Fraud Prevention Risk Trust and Safety Machine Learning Payment Fraud Account Takeover Chargebacks Digital Trust
On this page
Rating
APIs 7
Collections 1
Plans 1
Rate Limits 1
FinOps 1
Resources 11
apis.yml
37 Operational Transparency
Composite quality — 39.2/100 · thin
Contract Quality
15.5 / 25
Developer Ergonomics
4.3 / 20
Commercial Clarity
7.9 / 20
Operational Transparency
4.8 / 13
Agent readiness — 48/100 · agent ready
Machine-Readable Contract
18 / 18
Agentic Access Contract
15 / 15
MCP Server
0 / 12
Machine-Readable Auth
10 / 10
Idempotency
0 / 9
Stable Error Semantics
0 / 8
Request/Response Examples
0 / 7
Rate-Limit Signaling
7 / 7
Typed Event Surface
0 / 6
Agent Skills
0 / 5
Well-Known Catalog
0 / 4
Consent & Bot Identity
0 / 3
Streams user activity - account creation, logins, orders, transactions, content, chargebacks, and more - to Sift's machine learning models via POST /v205/events. Supports both r...
Retrieves a user's real-time Sift Score (0-100, higher is riskier) per abuse type - payment_abuse, account_abuse, account_takeover, content_abuse, and promotion_abuse - along wi...
Applies and retrieves decisions (accept, watch, block) against Sift entities - users, orders, sessions, and content - scoped to an account. Decisions record the outcome of manua...
Retrieves the status and results of a Sift Workflow run by run_id, including the decisions a workflow applied to an entity. Workflows automate scoring, routing, and decisioning ...
Legacy API for labeling a user as good or bad for a given abuse type to train Sift's models via POST and DELETE /v205/users/{user_id}/labels. Sift recommends the Decisions API f...
Step-up verification for high-risk actions. Sends, resends, and checks one-time passcodes (OTP) via POST /v1/verification/send, /resend, and /check to confirm a user's identity ...
For payment service providers and marketplaces - create, update, list, and retrieve sub-merchant profiles under an account so Sift can monitor merchant onboarding and transactio...
Documentation 1
Reference material describing how the API behaves
Agent Surfaces 1
MCP servers, agent skills, and machine-readable catalogs
Build 1
SDKs, sample code, and the tooling you integrate with
Access & Security 2
Authentication, authorization, and security posture
Operate 1
Status, limits, changes, and where to get help
Commercial 2
Pricing, plans, and the legal terms of use
Company 3
The organization behind the API
Source (apis.yml)
opencollection: 1.0.0
info:
name: Sift API
version: '2026-07-12'
description: Sift digital trust and safety REST APIs - Events, Score, Decisions, Workflows, Labels (legacy), Verification
(OTP), and PSP Merchant Management. Base URL https://api.sift.com. Authenticate with your Sift REST API key via HTTP Basic
auth (key as username, empty password); ingestion APIs also accept the key as $api_key in the body. Account-scoped APIs
require your numeric Account ID. MODELED by API Evangelist from developers.sift.com and the official Sift client libraries.
request:
auth:
type: basic
username: '{{apiKey}}'
password: ''
items:
- info:
name: Events
type: folder
items:
- info:
name: Send an event
type: http
http:
method: POST
url: https://api.sift.com/v205/events?return_score=true&abuse_types=payment_abuse
params:
- name: return_score
value: 'true'
type: query
description: Return the Sift Score inline.
- name: abuse_types
value: payment_abuse
type: query
description: Abuse types to score against.
body:
type: json
data: "{\n \"$type\": \"$create_order\",\n \"$api_key\": \"{{apiKey}}\",\n \"$user_id\": \"billy_jones_301\",\n\
\ \"$order_id\": \"ORDER-28168441\",\n \"$amount\": 115940000,\n \"$currency_code\": \"USD\"\n}"
docs: Records a user event so Sift can update its models. Reserved event types are prefixed with $.
- info:
name: Score
type: folder
items:
- info:
name: Get a user's Sift Score
type: http
http:
method: GET
url: https://api.sift.com/v205/score/:user_id?abuse_types=payment_abuse,account_takeover
params:
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: abuse_types
value: payment_abuse,account_takeover
type: query
description: Abuse types to return.
docs: Retrieves the current Sift Score(s) for a user (0-100, higher is riskier) with reason codes.
- info:
name: Get latest score (no recompute)
type: http
http:
method: GET
url: https://api.sift.com/v205/users/:user_id/score
params:
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
docs: Fetches the latest previously computed Sift Score without recomputing.
- info:
name: Rescore a user
type: http
http:
method: POST
url: https://api.sift.com/v205/users/:user_id/score?abuse_types=payment_abuse
params:
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: abuse_types
value: payment_abuse
type: query
description: Abuse types to rescore.
body:
type: json
data: '{}'
docs: Recomputes and returns the Sift Score for a user.
- info:
name: Labels (Legacy)
type: folder
items:
- info:
name: Apply a label
type: http
http:
method: POST
url: https://api.sift.com/v205/users/:user_id/labels
params:
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
body:
type: json
data: "{\n \"$api_key\": \"{{apiKey}}\",\n \"$is_bad\": true,\n \"$abuse_type\": \"payment_abuse\",\n \"$description\"\
: \"Chargeback received\"\n}"
docs: Labels a user as good or bad for an abuse type. Legacy - prefer the Decisions API.
- info:
name: Remove a label
type: http
http:
method: DELETE
url: https://api.sift.com/v205/users/:user_id/labels?abuse_type=payment_abuse
params:
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: abuse_type
value: payment_abuse
type: query
description: The abuse type of the label to remove.
docs: Removes a previously applied label from a user.
- info:
name: Decisions
type: folder
items:
- info:
name: List configured decisions
type: http
http:
method: GET
url: https://api.sift.com/v3/accounts/:account_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
docs: Lists the decisions configured for an account.
- info:
name: Get decision status for a user
type: http
http:
method: GET
url: https://api.sift.com/v3/accounts/:account_id/users/:user_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
docs: Retrieves the latest decisions applied to a user, per abuse type.
- info:
name: Apply a decision to a user
type: http
http:
method: POST
url: https://api.sift.com/v3/accounts/:account_id/users/:user_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
body:
type: json
data: "{\n \"decision_id\": \"block_user_payment_abuse\",\n \"source\": \"MANUAL_REVIEW\",\n \"analyst\": \"analyst@example.com\"\
,\n \"description\": \"Blocking known fraud user\"\n}"
docs: Applies a decision (accept, watch, block) to a user.
- info:
name: Apply a decision to an order
type: http
http:
method: POST
url: https://api.sift.com/v3/accounts/:account_id/users/:user_id/orders/:order_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: order_id
value: ORDER-28168441
type: path
description: The order ID.
body:
type: json
data: "{\n \"decision_id\": \"block_order_payment_abuse\",\n \"source\": \"AUTOMATED_RULE\"\n}"
docs: Applies a decision to a specific order belonging to a user.
- info:
name: Apply a decision to a session
type: http
http:
method: POST
url: https://api.sift.com/v3/accounts/:account_id/users/:user_id/sessions/:session_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: session_id
value: SESSION-1234
type: path
description: The session ID.
body:
type: json
data: "{\n \"decision_id\": \"watch_session_ato\",\n \"source\": \"AUTOMATED_RULE\"\n}"
docs: Applies a decision to a specific session belonging to a user.
- info:
name: Apply a decision to content
type: http
http:
method: POST
url: https://api.sift.com/v3/accounts/:account_id/users/:user_id/content/:content_id/decisions
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: user_id
value: billy_jones_301
type: path
description: The user ID.
- name: content_id
value: CONTENT-9012
type: path
description: The content ID.
body:
type: json
data: "{\n \"decision_id\": \"block_content_content_abuse\",\n \"source\": \"MANUAL_REVIEW\",\n \"analyst\": \"\
analyst@example.com\"\n}"
docs: Applies a decision to a specific piece of content created by a user.
- info:
name: Workflows
type: folder
items:
- info:
name: Get a workflow run status
type: http
http:
method: GET
url: https://api.sift.com/v3/accounts/:account_id/workflows/runs/:run_id
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: run_id
value: ''
type: path
description: The workflow run ID.
docs: Retrieves the status and applied decisions of a Sift Workflow run.
- info:
name: Verification
type: folder
items:
- info:
name: Send a verification code
type: http
http:
method: POST
url: https://api.sift.com/v1/verification/send
body:
type: json
data: "{\n \"$user_id\": \"billy_jones_301\",\n \"send_to\": \"billy@example.com\",\n \"verification_type\": \"\
$email\",\n \"brand_name\": \"ACME\",\n \"language\": \"en\",\n \"event\": {\n \"$session_id\": \"SESSION-1234\"\
,\n \"$verified_event\": \"$login\"\n }\n}"
docs: Triggers generation and delivery of a one-time passcode (OTP) to a user.
- info:
name: Resend a verification code
type: http
http:
method: POST
url: https://api.sift.com/v1/verification/resend
body:
type: json
data: "{\n \"$user_id\": \"billy_jones_301\",\n \"verified_event\": \"$login\"\n}"
docs: Requests a new one-time passcode for a pending verification.
- info:
name: Check a verification code
type: http
http:
method: POST
url: https://api.sift.com/v1/verification/check
body:
type: json
data: "{\n \"$user_id\": \"billy_jones_301\",\n \"$code\": 123456,\n \"verified_event\": \"$login\"\n}"
docs: Validates the one-time passcode provided by the user.
- info:
name: PSP Merchant Management
type: folder
items:
- info:
name: List PSP merchants
type: http
http:
method: GET
url: https://api.sift.com/v3/accounts/:account_id/psp_management/merchants?batch_size=100
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: batch_size
value: '100'
type: query
description: Page size.
docs: Lists sub-merchant profiles for an account, paginated.
- info:
name: Create a PSP merchant
type: http
http:
method: POST
url: https://api.sift.com/v3/accounts/:account_id/psp_management/merchants
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
body:
type: json
data: "{\n \"id\": \"merchant-01\",\n \"name\": \"Acme Marketplace Seller\",\n \"description\": \"Electronics reseller\"\
,\n \"status\": \"active\"\n}"
docs: Creates a new sub-merchant profile under an account.
- info:
name: Get a PSP merchant
type: http
http:
method: GET
url: https://api.sift.com/v3/accounts/:account_id/psp_management/merchants/:merchant_id
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: merchant_id
value: merchant-01
type: path
description: The merchant ID.
docs: Retrieves a specific sub-merchant profile.
- info:
name: Update a PSP merchant
type: http
http:
method: PUT
url: https://api.sift.com/v3/accounts/:account_id/psp_management/merchants/:merchant_id
params:
- name: account_id
value: '{{accountId}}'
type: path
description: Your numeric Sift Account ID.
- name: merchant_id
value: merchant-01
type: path
description: The merchant ID.
body:
type: json
data: "{\n \"id\": \"merchant-01\",\n \"name\": \"Acme Marketplace Seller\",\n \"status\": \"inactive\"\n}"
docs: Updates an existing sub-merchant profile.
bundled: true