Overview - API Reference

Overview

If your Implementation Engineer has created a custom version of Forter’s API for your integration, log in to Forter Portal to view your customized API Reference documentation.

API Reference API Reference

Forter's APIs can be leveraged for a variety of use cases throughout the user journey. The API reference documentation includes synchronous API endpoints for real-time decisions as well as supplementary APIs used to provide Forter with subsequent status updates after Forter has provided a binary decision and/or recommendation.

Core API Path Core API Path

Please send all API requests to a dedicated path for your account, by appending your Site ID to the beginning of the URL.

https://{site-id}.api.forter-secure.com/{endpoint}

Note that there is a different path for Forter's Tokenization API.

Authentication Authentication

All requests to Forter’s APIs must be made over HTTPS. In order to authenticate, include both the Site ID and API Key, which can be found in Credentials, in the request headers. Forter uses Basic Authentication credentials in the form of a username and password, where the API key is the username and the password is empty.

Note that your Site ID and API Key are different for your Forter test site and production site.

curl -X POST "https://{site-id}.api.forter-secure.com/{endpoint}"
-u "{api-key}:"
-H "api-version: 10.1"
-H "content-type: application/json"
-H "x-forter-siteid: {site-id}"
-d @filepost.data

Headers Headers

Code Status
Authorization String__Required Basic Authentication in the form of a username and password. Use the API Key as the username and leave the password empty. For example Basic base64-encoded-api-key:
api-version String__Required Specify the version of the API to target. For example 10.1
content-type String__Required Value should be application/json
x-forter-siteid String__Required Forter-assigned ID for your account. Note that your Site ID for your test site is different from your production site.
x-forter-sub-merchant-siteid String For Element customers, include the Forter-assigned ID for your sub-merchants when sending an API request on their behalf.

HTTP Codes HTTP Codes

Forter uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information, while codes in the 5xx range indicate an error with Forter's servers.

Code Status
200, 201, 204 OK Everything worked as expected.
400 Bad Request Not accepted, usually due to missing a required parameter.
401 Unauthorized No valid API key was provided in the request.
403 Forbidden The API key provided does not have sufficient permissions to perform the request.
404 Not Found The requested item doesn't exist.
429 Too Many Requests Request has hit the rate-limit allowed.
500, 503 Internal Server Error Something went wrong on Forter's side.

Timeouts Timeouts

In order to prevent connection failovers due to internet network failures, set a client side timeout of 2 seconds on the HTTP request.

Retries Retries

In the following cases we recommend that you retry the request once:

The retry can be immediate or at a later stage if relevant and possible (for example after capturing the money and before shipping). In any case we prefer that you backfill the request to Forter in order for us to have a complete picture of good/bad customers.

In a case of an additional failure on the retry, we recommend that you alert us and diagnose.

Load Testing Load Testing

Your test site is limited to 10 RPS (Requests per seconds). Requests beyond this limit will result in a 429 error code. You can exceed this rate limit by including the header x-forter-disable-persistence = true in your load test requests. Requests made with this header will not be visible in Forter’s decision dashboard, so you should not include this header in real production requests.

TLS Session Reuse TLS Session Reuse

For low-latency applications, every millisecond counts. One common source of unnecessary latency is the repeated TLS handshake process when making API requests. If your application does not reuse TLS sessions, it incurs extra latency and computational overhead for every new connection. To mitigate this, we strongly recommend implementing TLS session reuse and connection pooling.

Conditional Fields Conditional Fields

Note that some fields in the API Reference will be marked as Conditional instead of Required. This is intended to denote that the field is dependentRequired or oneOf. Excluding Conditional fields will not result in an error response, but may be checked during by Forter during the testing phase.

Test Response Handling Test Response Handling

API requests made with your test Site ID will return a randomized decision. In order to test your response handling, you can trigger a specific decision or recommendation by using a specific email address as the customer’s email, a specific credit card number as the payment method, and/or a specific IP address.

Fraud Management Fraud Management

Customer Email Order v3 Response
approve@forter.com "forterDecision": "APPROVE"
decline@forter.com "forterDecision": "DECLINE"
notreviewed@forter.com "forterDecision": "NOT_REVIEWED"

Abuse Prevention Abuse Prevention

Customer Email Order v3 Response
test_limited_item_solution@forter.com "recommendation": "MONITOR_POTENTIAL_LIMITED_ITEM_ABUSE"
test_coupon_solution@forter.com "recommendation": "MONITOR_POTENTIAL_COUPON_ABUSE"
test_item_not_received_solution@forter.com "recommendation": "MONITOR_POTENTIAL_INR_ABUSE"
test_return_solution@forter.com "recommendation": "MONITOR_POTENTIAL_RETURN_ABUSE"

3DS Recommendation 3DS Recommendation

Customer Email Order v3 Response
force_3ds_risk_recommendation@forter.com "forterDecision": "DECLINE", "recommendation": "VERIFICATION_REQUIRED_3DS_CHALLENGE"
force_3ds_psd2_recommendation@forter.com "forterDecision": "DECLINE", "recommendation": "VERIFICATION_REQUIRED_3DS_CHALLENGE"
force_exemption_tra@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXEMPTION_TRA"
force_exemption_low_value@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXEMPTION_LOW_VALUE"
force_exemption_corp@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXEMPTION_CORP"
force_exemption_trusted_beneficiary@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXEMPTION_TRUSTED_BENEFICIARY"
force_exclusion_one_leg_out@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXCLUSION_ONE_LEG_OUT"
forter_exclusion_moto@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXCLUSION_MOTO"
force_exclusion_anonymous@forter.com "forterDecision": "APPROVE", "recommendation": "REQUEST_SCA_EXCLUSION_ANONYMOUS"

3DS Execution 3DS Execution

No challenge required

Credit Card 3DS Result Response
5222220000000005 "forterDecision": "APPROVE", "verificationMethod": { "status": "FRICTIONLESS" }
4111110000001142 "forterDecision": "APPROVE", "verificationMethod": { "status": "ATTEMPTED" }
4000000000001992 "forterDecision": "DECLINE", "verificationMethod": { "status": "FRICTIONLESS_NOT_AUTHENTICATED" }
5200000000000031 "forterDecision": "DECLINE", "verificationMethod": { "status": "FRICTIONLESS_BANK_REJECT" }
5200000000001336 "forterDecision": "DECLINE", "verificationMethod": { "status": "FRICTIONLESS_TECHNICAL_ISSUE" }

Challenge executed

Credit Card 3DS Result Response
5111220000000009
Use code 1234 in the challenge window
"forterDecision": "APPROVE", "verificationMethod": { "status": "AUTHENTICATED" }
5200000000004447
Use code 1234 in the challenge window
"forterDecision": "APPROVE", "verificationMethod": { "status": "NOT_AUTHENTICATED" }
5111220000000009
Use code 4567 in the challenge window
"forterDecision": "DECLINE", "verificationMethod": { "status": "NOT_AUTHENTICATED" }
5200000000002227
Use code 1234 in the challenge window
"forterDecision": "DECLINE", "verificationMethod": { "status": "NOT_AUTHENTICATED_BANK_REJECT" }
5200000000003332
Use code 1234 in the challenge window
"forterDecision": "DECLINE", "verificationMethod": { "status": "NOT_AUTHENTICATED_TECHNICAL_ISSUE" }

Account Protection Account Protection

Customer Email Signup, Login, Profile Access Response
approve@forter.com "forterDecision": "APPROVE"
decline@forter.com "forterDecision": "DECLINE"
notreviewed@forter.com "forterDecision": "NOT_REVIEWED"
email_verification@forter.com "forterDecision": "VERIFICATION_REQUIRED", "recommendation": "EMAIL_VERIFICATION"
sms_verification@forter.com "forterDecision": "VERIFICATION_REQUIRED", "recommendation": "SMS_VERIFICATION"
IP Address Signup, Login, Profile Access Response
0.0.0.1 "forterDecision": "APPROVE"
0.0.0.2 "forterDecision": "DECLINE"
0.0.0.3 "forterDecision": "NOT_REVIEWED"
0.0.0.4 "forterDecision": "VERIFICATION_REQUIRED", "recommendation": "EMAIL_VERIFICATION"
0.0.0.5 "forterDecision": "VERIFICATION_REQUIRED", "recommendation": "SMS_VERIFICATION"