{ "aid": "swaggerhub.bebettor-dev:bebettor-api-1.2.1", "name": "beBettor API", "type": "Index", "description": "

FOR PUBLIC USE ONLY.

\n

1. Overview

The beBettor API provides an automated and scalable solution for customer affordability screening. The data we provide helps our clients improve their customer interaction frameworks, develop deeper insights into their customers, design safer online experiences and make more informed business decisions.

To learn more about our mission and approach, visit www.bebettor.com.

The beBettor API provides the following core functionality:

\n

Check

Performs an affordability screening based on the provided customer data.

Interaction flow:
    \n
  1. The client initiates a check by including the customer's personal data in the request body.

  2. \n
  3. The beBettor API processes the request and returns the checkId, score and flags.

  4. \n

\"API


\n

Report

Retrieves a report containing additional data points that complement the results of an initial check. These reports can be used to further support the score and flags returned during the check.

Interaction flow:
    \n
  1. The client sends a request to retrieve a report by including the checkId in the request.

  2. \n
  3. The beBettor API returns a structured report containing multiple parameter groups with supporting data.

  4. \n

\"API


\n

2. Environments

The beBettor API provides two distinct environments for integration. Use the Test environment to validate your integration before going live. Once your integration is complete and tested, switch to the Production environment to begin processing real customer data.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EnvironmentEndpoint URL
Testhttps://sandbox-api.bebettor.com/affordability/v1
Productionhttps://api.bebettor.com/affordability/v1

\n

3. API Access

To start integrating with the beBettor API in either the Test or Production environment, the following configuration details are required.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ItemDescription
Score ModelSome check types support more than one score model, which must be specified during integration. Let us know which score model you'd like to use and it will be applied to all of your requests.
API KeyAccess to the beBettor API requires an API key, which will be provided to you prior to integration.

\n

4. Check Types

The table below outlines the three check types available through the beBettor API.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Check TypeDescription
Financial VulnerabilityScreens the customer for signs of financial vulnerability and returns a score with associated risk flags.
WealthEstimates a customer's relative wealth ranking within the UK and returns a wealth score along with associated flags.
Discretionary IncomeEstimates a customer's discretionary income and evaluates key risk indicators. Returns a discretionary income score along with associated risk flags.

\n

5. Customer Data

The table below outlines the customer personal data fields, including their type, format and constraints.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NoField NameData TypeFormat & Constraints
1customerIdStringCharset: printable ASCII
Min length: 1
Max length: 100
2titleStringEnum: [ MR, MRS, MS, MISS, DR, PROF, SIR ]
3firstNameStringMin length: 1
Max length: 100
4lastNameStringMin length: 1
Max length: 100
5genderStringEnum: [ MALE, FEMALE, OTHER ]
6dateOfBirthStringFormat: YYYY-MM-DD (RFC 3339)
Age must be ≥ 18
7addressLine1StringMin length: 1
Max length: 100
8addressLine2StringMin length: 1
Max length: 100
9townStringMin length: 1
Max length: 100
10countyStringMin length: 1
Max length: 100
11postcodeStringValid UK postcode

\n

The table below indicates which customer data fields are required for each check type. Please note that optional fields must either be set to null or excluded from the request. Empty strings are not allowed.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NoField NameFinancial Vulnerability CheckWealth CheckDiscretionary Income Check
1customerIdRequiredRequiredRequired
2titleOptionalOptionalOptional
3firstNameRequiredOptionalRequired
4lastNameRequiredOptionalRequired
5genderOptionalOptionalOptional
6dateOfBirthRequiredOptionalRequired
7addressLine1RequiredRequiredRequired
8addressLine2OptionalOptionalOptional
9townRequiredOptionalRequired
10countyOptionalOptionalOptional
11postcodeRequiredRequiredRequired

\n

6. Scores

A score model is selected by the client and pre-configured by beBettor during the API integration process. This model is applied by default to all check requests.

\n

Financial Vulnerability Check

The vulnerability score indicates whether financial vulnerability is present.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:M2-VPVULNERABLE, PASS
GB:M2-RAGRED, AMBER, GREEN

\n

Wealth Check

The wealth score represents a customer's relative wealth ranking within the UK.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:J21, 2, 3, 4, 5, 6, 7, 8, 9, 10
GB:J31, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20

\n

Discretionary Income Check

The discretionary income score provides an indication of an individual's affordability.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:V1A, B, C, D, E, F
GB:V3A, B, C, D
GB:V4RED, AMBER, GREEN

\n

7. Flags

Financial Vulnerability Check

Financial vulnerability flags indicate additional risk factors associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagsDescription
GB:M2INDIVIDUAL_INSOLVENCY_REGISTER_MATCHThis flag is triggered when there is a match on the Individual Insolvency register.
JUDGMENTS_ORDERS_FINES_REGISTER_MATCHThis flag is triggered when there is a match on the Judgments, Orders and Fines register.
LOW_INCOME_SOCIAL_HOUSINGThis flag is triggered when there is a match on the Social Housing register and identifies the individual as having relatively low income.
RELATIVE_INCOME_RISKThis flag is triggered when the individual is identified as having a relatively low income.

\n

Wealth Check

Wealth flags indicate additional signs of high wealth associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagDescription
GB:J1SUPER_AFFLUENCEThis flag is triggered when the individual is identified as being in the top 1% of wealth within the Great Britain population.

\n

Discretionary Income Check

Discretionary income flags indicate additional signs of financial risk or vulnerability associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagsDescription
GB:V2INDIVIDUAL_INSOLVENCY_REGISTER_MATCHThis flag is triggered when there is a match on the Individual Insolvency register.
SOCIAL_HOUSING_REGISTER_MATCHThis flag is triggered when there is a match on the Social Housing register.
AGE_UNDER_25This flag is triggered when the individual is under 25 years of age.

\n

8. Reports

Reports provide additional supporting information for your checks and are organized into structured groups of parameters. Each parameter includes the following properties: id, name, value and description. These are defined by a specific report model, which is periodically updated by beBettor as part of ongoing service improvements. You can request a specific report model by setting the appropriate value in the HTTP Accept header. If this header is omitted or set to */*, the latest available report model will be returned by default.

beBettor will continue to support previous report models for a defined transition period after new versions are released. Advance notice will be given before deprecating any older report models. To maintain consistent integration and avoid unexpected changes to report structures, we recommend explicitly specifying the desired report model via the Accept header, rather than relying on the latest version by default.

\n

Financial Vulnerability Check

The table below outlines the currently supported report models.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Report ModelStatusRequest Header Accept Value
GB:M2-20240521Latestapplication/vnd.report.gb.m2-20240521+json

\n

Wealth Check

Reports are currently not available for this check type.


\n

Discretionary Income Check

The table below outlines the currently supported report models.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Report ModelStatusRequest Header Accept Value
GB:V20211005Latestapplication/vnd.report.gb.v20211005+json

\n

9. API Usage

The default API request rate limit is 5 requests per second for both Test and Production environments. Additionally, the Test environment includes a monthly quota limit of 500 requests. Custom rate and quota limits can be increased on request. Please contact us if you require adjustments to these defaults.

If a client exceeds the allowed rate limit, the request will be throttled and returned with an HTTP 429 Too Many Requests error response. Clients receiving throttling responses should implement appropriate retry logic. For more details, please refer to section "10. Retry Policy".

The table below outlines the current rate and quota limits for each environment.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EnvironmentRate LimitQuota Limit
Test5 requests per second500 requests per month, starting on the 1st day
Production5 requests per secondNo limit

\n

10. Retry Policy

\n

Errors may occur at different stages of an API request, such as due to network issues or temporary service downtime. To ensure reliability, client applications should implement a robust retry mechanism.

A widely adopted strategy is exponential backoff, which increases the delay between retry attempts following consecutive failures. This approach reduces the risk of overwhelming the server during periods of high load and improves the likelihood of successful recovery. For implementation details, refer to external documentation or use libraries that implement exponential backoff logic.

The table below outlines common HTTP status codes returned by the API and indicates whether the client should attempt a retry.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HTTP Status CodeMeaningRetry Required?
4xxClient-side errorNo
429Too many requests. The request was throttled.Yes
5xxServer-side errorYes

\n

11. Getting Started


Below are example API requests for two commonly used tools: cURL and Postman. The cURL examples are provided as inline code snippets, while the Postman collection file is available for download via the link provided.

API Request Examples

Perform a Financial vulnerability check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: VULNERABILITY\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"title\":\"MR\",\"firstName\":\"Joe\",\"lastName\":\"Bloggs\",\"gender\":\"MALE\",\"dateOfBirth\":\"1978-05-20\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Perform a Wealth check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: WEALTH\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Perform a Discretionary income check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: DISCRETIONARY_INCOME\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"title\":\"MR\",\"firstName\":\"Joe\",\"lastName\":\"Bloggs\",\"gender\":\"MALE\",\"dateOfBirth\":\"1978-05-20\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Retrieve a report.

\n curl -X GET \"https://sandbox-api.bebettor.com/affordability/v1/report/{{CHECK_ID}}\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"Accept: {{REPORT_MODEL}}\"\n

\n

Search checks that match specific criteria.

\n curl -X GET \"https://sandbox-api.bebettor.com/affordability/v1/search?checkType={{CHECK_TYPE}}&checkDate={{CHECK_DATE}}&checkId={{CHECK_ID}}&customerId={{CUSTOMER_ID}}&pageToken={{PAGE_TOKEN}}\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\"\n


\n

Postman Collection

Get started with the beBettor API by downloading the Postman collection here.


\n

12. API Error Handling

The table below outlines common API response errors, including their HTTP status codes, corresponding error codes and explanations to assist with troubleshooting and resolution.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HTTP Status CodeMeaningAPI Error Codes and Resolutions
400 (Bad Request)The server cannot or will not process the request due to a client-side error (e.g., malformed syntax or invalid parameters).\n REQUEST_BODY_PARSE_ERROR - Ensure that your request body is valid JSON with correct syntax and structure.

\n REQUEST_INVALID - One or more request parameters are invalid. Review the API documentation for field-specific validation rules.\n
401 (Unauthorized)The request could not be completed because it lacks valid authentication credentials for the target resource.\n AUTHENTICATION_FAILED - Ensure that the X-Api-Key header contains the correct API key for the appropriate environment (Test or Production).\n
403 (Forbidden)The server understood the request but refuses to authorize it. This means the client's identity is known, but it does not have permission to access the requested resource.\n ACCESS_DENIED - Confirm that the API endpoint URL includes the correct resource path (e.g., /v1/check, /v1/report)\n
404 (Not Found)The server could not locate the requested resource. This typically indicates that the URL is incorrect or the resource does not exist.\n RESOURCE_NOT_FOUND - For GET requests to retrieve reports, ensure that the checkId included in the URL is valid and refers to an existing check.\n
405 (Method Not Allowed)The server recognizes the requested URL, but the HTTP method used (e.g., GET, POST, PUT, DELETE) is not supported for that resource.\n METHOD_NOT_SUPPORTED - Use the appropriate HTTP method (GET or POST) as specified in the API documentation for the given resource.\n
406 (Not Acceptable)The server is unable to generate a response that matches the content type criteria specified in the request's Accept header.\n NOT_ACCEPTABLE - When requesting a report, ensure the request includes an Accept header. Use */* to receive the latest available version, or specify a particular version (e.g., application/vnd.report.gb.m2-20240521+json) to request a specific report model.\n
415 (Unsupported Media Type)The server refuses to process the request because the format of the request payload is not supported. This typically relates to the Content-Type header, which must accurately indicate the format of the request body so the server can parse it correctly.\n UNSUPPORTED_MEDIA_TYPE - Ensure that the Content-Type header is set to application/json, as this is the expected format for all request payloads sent to the beBettor API.\n
422 (Unprocessable Entity)The request was syntactically correct but contains invalid or logically inconsistent data that the server cannot process.\n POSTCODE_NOT_FOUND - The postcode format is valid but was not found in the UK postcode directory.

\n POSTCODE_NOT_COVERED - The postcode is valid but belongs to a region not supported by the check type (e.g., Channel Islands, UK overseas territories, or Northern Ireland).

\n PERSON_UNDER_18 - The individual is under 18 years of age and is not eligible for affordability screening.\n
429 (Too Many Requests)The server has received too many requests from the client in a short period of time and is enforcing rate limits to maintain system stability and performance.\n QUOTA_EXCEEDED - You have exceeded your monthly request quota in the Test environment. Please contact us if you need to request an increased limit.

\n THROTTLED - You have exceeded the API rate limit (5 requests per second). Reduce the request rate to comply with the allowed limits.\n
500 (Internal Server Error)The server encountered an unexpected condition that prevented it from fulfilling the request. This is a generic error indicating a problem on the server side, not caused by the client.\n Internal Server Error - Retry the request using an exponential backoff strategy with a reasonable number of attempts. If the issue persists and there is no planned maintenance (check status.bebettor.com), please contact support@bebettor.com for further assistance.\n

\n

13. Frequently Asked Questions (FAQs)

API

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the maximum number of requests per second we can send?The default rate limit is 5 requests per second for both Test and Production environments.
What is the average response time of the API?The average response time is under 500 milliseconds (excluding network round-trip latency).
Are API requests and responses different for each check type?The request and response formats are consistent across check types. Differences lie in the score model, flags model, and report content associated with each check type.
How do I switch between check types?Set the HTTP header X-BB-Check-Type to the desired check type. Note: each type may require different mandatory or optional customer fields.
Which UK regions are supported?All valid UK postcodes in England, Wales, Scotland, and Northern Ireland are supported. The Wealth check supports England, Wales and Scotland only.
\n

Checks and Reports

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the difference between a check and a report?A check returns a score and risk flags. A report provides structured supporting data across multiple parameter groups. See the "Report Appendix" document for full details.
Do I need to conduct a check before requesting a report?Yes. Reports can only be retrieved using the checkId returned from a completed check.
\n

Integration Process

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
How do we begin integration?You'll receive your API key from beBettor and can start integrating immediately.
Do you provide dummy/test data?Yes. Upon request, we can provide dummy data to support your testing needs.
Who do we contact for technical support?Reach out to our team at support@bebettor.com for assistance.
How long does integration typically take?Integration generally takes 1-2 weeks, depending on your team's resources and complexity of use cases.
How many requests are allowed during integration?By default, you are granted 500 requests per month in the Test environment.
\n

Customer Data

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the purpose of the customerId field?It's your internal identifier used for referencing users without exposing personal data. It is included in all responses and retained for troubleshooting.
Is it helpful to send gender data, even if it's optional?Yes. Gender information can enhance score accuracy.
We collect titles but not gender. Is it still useful to send titles?Yes. Titles help us infer gender when not explicitly provided.
\n

Test Environment

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
Is the Test environment the same as Production?Functionally - yes. The Production environment is faster and uses up-to-date datasets.
Can we use scores from the Test environment?No. Test results are intended for internal development and testing only. They should not be used for real decision-making.
Can we retain Test environment access after integration?Yes. You can continue using your Test credentials to validate system changes.
\n

Production Environment

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
Do we need separate credentials for the Production environment?Yes. Test and Production environments have distinct credentials.
What should we do during system downtime or maintenance?Please queue your requests and resume once you receive confirmation that the system is back online. Maintenance windows will be announced in advance.
\n", "url": "https://raw.githubusercontent.com/jentic/jentic-public-apis/refs/heads/main/apis/openapi/swaggerhub.bebettor-dev/bebettor-api/1.2.1/apis.json", "tags": [ "swaggerhub.bebettor-dev", "bebettor-api" ], "created": "2026-04-04", "modified": "2026-04-04", "specificationVersion": "0.19", "access": "3rd-Party", "maintainers": [ { "FN": "Jentic", "X-github": "jentic", "url": "https://github.com/jentic" } ], "apis": [ { "aid": "swaggerhub.bebettor-dev:bebettor-api-1.2.1", "name": "beBettor API", "description": "

FOR PUBLIC USE ONLY.

\n

1. Overview

The beBettor API provides an automated and scalable solution for customer affordability screening. The data we provide helps our clients improve their customer interaction frameworks, develop deeper insights into their customers, design safer online experiences and make more informed business decisions.

To learn more about our mission and approach, visit www.bebettor.com.

The beBettor API provides the following core functionality:

\n

Check

Performs an affordability screening based on the provided customer data.

Interaction flow:
    \n
  1. The client initiates a check by including the customer's personal data in the request body.

  2. \n
  3. The beBettor API processes the request and returns the checkId, score and flags.

  4. \n

\"API


\n

Report

Retrieves a report containing additional data points that complement the results of an initial check. These reports can be used to further support the score and flags returned during the check.

Interaction flow:
    \n
  1. The client sends a request to retrieve a report by including the checkId in the request.

  2. \n
  3. The beBettor API returns a structured report containing multiple parameter groups with supporting data.

  4. \n

\"API


\n

2. Environments

The beBettor API provides two distinct environments for integration. Use the Test environment to validate your integration before going live. Once your integration is complete and tested, switch to the Production environment to begin processing real customer data.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EnvironmentEndpoint URL
Testhttps://sandbox-api.bebettor.com/affordability/v1
Productionhttps://api.bebettor.com/affordability/v1

\n

3. API Access

To start integrating with the beBettor API in either the Test or Production environment, the following configuration details are required.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ItemDescription
Score ModelSome check types support more than one score model, which must be specified during integration. Let us know which score model you'd like to use and it will be applied to all of your requests.
API KeyAccess to the beBettor API requires an API key, which will be provided to you prior to integration.

\n

4. Check Types

The table below outlines the three check types available through the beBettor API.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Check TypeDescription
Financial VulnerabilityScreens the customer for signs of financial vulnerability and returns a score with associated risk flags.
WealthEstimates a customer's relative wealth ranking within the UK and returns a wealth score along with associated flags.
Discretionary IncomeEstimates a customer's discretionary income and evaluates key risk indicators. Returns a discretionary income score along with associated risk flags.

\n

5. Customer Data

The table below outlines the customer personal data fields, including their type, format and constraints.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NoField NameData TypeFormat & Constraints
1customerIdStringCharset: printable ASCII
Min length: 1
Max length: 100
2titleStringEnum: [ MR, MRS, MS, MISS, DR, PROF, SIR ]
3firstNameStringMin length: 1
Max length: 100
4lastNameStringMin length: 1
Max length: 100
5genderStringEnum: [ MALE, FEMALE, OTHER ]
6dateOfBirthStringFormat: YYYY-MM-DD (RFC 3339)
Age must be ≥ 18
7addressLine1StringMin length: 1
Max length: 100
8addressLine2StringMin length: 1
Max length: 100
9townStringMin length: 1
Max length: 100
10countyStringMin length: 1
Max length: 100
11postcodeStringValid UK postcode

\n

The table below indicates which customer data fields are required for each check type. Please note that optional fields must either be set to null or excluded from the request. Empty strings are not allowed.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NoField NameFinancial Vulnerability CheckWealth CheckDiscretionary Income Check
1customerIdRequiredRequiredRequired
2titleOptionalOptionalOptional
3firstNameRequiredOptionalRequired
4lastNameRequiredOptionalRequired
5genderOptionalOptionalOptional
6dateOfBirthRequiredOptionalRequired
7addressLine1RequiredRequiredRequired
8addressLine2OptionalOptionalOptional
9townRequiredOptionalRequired
10countyOptionalOptionalOptional
11postcodeRequiredRequiredRequired

\n

6. Scores

A score model is selected by the client and pre-configured by beBettor during the API integration process. This model is applied by default to all check requests.

\n

Financial Vulnerability Check

The vulnerability score indicates whether financial vulnerability is present.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:M2-VPVULNERABLE, PASS
GB:M2-RAGRED, AMBER, GREEN

\n

Wealth Check

The wealth score represents a customer's relative wealth ranking within the UK.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:J21, 2, 3, 4, 5, 6, 7, 8, 9, 10
GB:J31, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20

\n

Discretionary Income Check

The discretionary income score provides an indication of an individual's affordability.

The table below outlines the currently supported score models and their associated scores.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Score ModelPossible Scores
GB:V1A, B, C, D, E, F
GB:V3A, B, C, D
GB:V4RED, AMBER, GREEN

\n

7. Flags

Financial Vulnerability Check

Financial vulnerability flags indicate additional risk factors associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagsDescription
GB:M2INDIVIDUAL_INSOLVENCY_REGISTER_MATCHThis flag is triggered when there is a match on the Individual Insolvency register.
JUDGMENTS_ORDERS_FINES_REGISTER_MATCHThis flag is triggered when there is a match on the Judgments, Orders and Fines register.
LOW_INCOME_SOCIAL_HOUSINGThis flag is triggered when there is a match on the Social Housing register and identifies the individual as having relatively low income.
RELATIVE_INCOME_RISKThis flag is triggered when the individual is identified as having a relatively low income.

\n

Wealth Check

Wealth flags indicate additional signs of high wealth associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagDescription
GB:J1SUPER_AFFLUENCEThis flag is triggered when the individual is identified as being in the top 1% of wealth within the Great Britain population.

\n

Discretionary Income Check

Discretionary income flags indicate additional signs of financial risk or vulnerability associated with the customer.

The table below outlines the currently supported flag models and their associated flags.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Flags ModelFlagsDescription
GB:V2INDIVIDUAL_INSOLVENCY_REGISTER_MATCHThis flag is triggered when there is a match on the Individual Insolvency register.
SOCIAL_HOUSING_REGISTER_MATCHThis flag is triggered when there is a match on the Social Housing register.
AGE_UNDER_25This flag is triggered when the individual is under 25 years of age.

\n

8. Reports

Reports provide additional supporting information for your checks and are organized into structured groups of parameters. Each parameter includes the following properties: id, name, value and description. These are defined by a specific report model, which is periodically updated by beBettor as part of ongoing service improvements. You can request a specific report model by setting the appropriate value in the HTTP Accept header. If this header is omitted or set to */*, the latest available report model will be returned by default.

beBettor will continue to support previous report models for a defined transition period after new versions are released. Advance notice will be given before deprecating any older report models. To maintain consistent integration and avoid unexpected changes to report structures, we recommend explicitly specifying the desired report model via the Accept header, rather than relying on the latest version by default.

\n

Financial Vulnerability Check

The table below outlines the currently supported report models.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Report ModelStatusRequest Header Accept Value
GB:M2-20240521Latestapplication/vnd.report.gb.m2-20240521+json

\n

Wealth Check

Reports are currently not available for this check type.


\n

Discretionary Income Check

The table below outlines the currently supported report models.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Report ModelStatusRequest Header Accept Value
GB:V20211005Latestapplication/vnd.report.gb.v20211005+json

\n

9. API Usage

The default API request rate limit is 5 requests per second for both Test and Production environments. Additionally, the Test environment includes a monthly quota limit of 500 requests. Custom rate and quota limits can be increased on request. Please contact us if you require adjustments to these defaults.

If a client exceeds the allowed rate limit, the request will be throttled and returned with an HTTP 429 Too Many Requests error response. Clients receiving throttling responses should implement appropriate retry logic. For more details, please refer to section "10. Retry Policy".

The table below outlines the current rate and quota limits for each environment.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EnvironmentRate LimitQuota Limit
Test5 requests per second500 requests per month, starting on the 1st day
Production5 requests per secondNo limit

\n

10. Retry Policy

\n

Errors may occur at different stages of an API request, such as due to network issues or temporary service downtime. To ensure reliability, client applications should implement a robust retry mechanism.

A widely adopted strategy is exponential backoff, which increases the delay between retry attempts following consecutive failures. This approach reduces the risk of overwhelming the server during periods of high load and improves the likelihood of successful recovery. For implementation details, refer to external documentation or use libraries that implement exponential backoff logic.

The table below outlines common HTTP status codes returned by the API and indicates whether the client should attempt a retry.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HTTP Status CodeMeaningRetry Required?
4xxClient-side errorNo
429Too many requests. The request was throttled.Yes
5xxServer-side errorYes

\n

11. Getting Started


Below are example API requests for two commonly used tools: cURL and Postman. The cURL examples are provided as inline code snippets, while the Postman collection file is available for download via the link provided.

API Request Examples

Perform a Financial vulnerability check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: VULNERABILITY\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"title\":\"MR\",\"firstName\":\"Joe\",\"lastName\":\"Bloggs\",\"gender\":\"MALE\",\"dateOfBirth\":\"1978-05-20\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Perform a Wealth check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: WEALTH\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Perform a Discretionary income check using the provided customer data.

\n curl -X POST \"https://sandbox-api.bebettor.com/affordability/v1/check\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"X-BB-Check-Type: DISCRETIONARY_INCOME\" \\
\n -H \"X-BB-Score-Model: {{SCORE_MODEL}}\" \\
\n -d '{\"customerId\":\"CID0001\",\"title\":\"MR\",\"firstName\":\"Joe\",\"lastName\":\"Bloggs\",\"gender\":\"MALE\",\"dateOfBirth\":\"1978-05-20\",\"address\":{\"addressLine1\":\"25 High Street\",\"addressLine2\":\"Flat 4\",\"town\":\"London\",\"county\":\"Greater London\",\"postcode\":\"WC2H 0AW\"}}'\n

\n

Retrieve a report.

\n curl -X GET \"https://sandbox-api.bebettor.com/affordability/v1/report/{{CHECK_ID}}\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\" \\
\n -H \"Accept: {{REPORT_MODEL}}\"\n

\n

Search checks that match specific criteria.

\n curl -X GET \"https://sandbox-api.bebettor.com/affordability/v1/search?checkType={{CHECK_TYPE}}&checkDate={{CHECK_DATE}}&checkId={{CHECK_ID}}&customerId={{CUSTOMER_ID}}&pageToken={{PAGE_TOKEN}}\" \\
\n -H \"Content-Type: application/json\" \\
\n -H \"X-Api-Key: {{YOUR_API_KEY}}\"\n


\n

Postman Collection

Get started with the beBettor API by downloading the Postman collection here.


\n

12. API Error Handling

The table below outlines common API response errors, including their HTTP status codes, corresponding error codes and explanations to assist with troubleshooting and resolution.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HTTP Status CodeMeaningAPI Error Codes and Resolutions
400 (Bad Request)The server cannot or will not process the request due to a client-side error (e.g., malformed syntax or invalid parameters).\n REQUEST_BODY_PARSE_ERROR - Ensure that your request body is valid JSON with correct syntax and structure.

\n REQUEST_INVALID - One or more request parameters are invalid. Review the API documentation for field-specific validation rules.\n
401 (Unauthorized)The request could not be completed because it lacks valid authentication credentials for the target resource.\n AUTHENTICATION_FAILED - Ensure that the X-Api-Key header contains the correct API key for the appropriate environment (Test or Production).\n
403 (Forbidden)The server understood the request but refuses to authorize it. This means the client's identity is known, but it does not have permission to access the requested resource.\n ACCESS_DENIED - Confirm that the API endpoint URL includes the correct resource path (e.g., /v1/check, /v1/report)\n
404 (Not Found)The server could not locate the requested resource. This typically indicates that the URL is incorrect or the resource does not exist.\n RESOURCE_NOT_FOUND - For GET requests to retrieve reports, ensure that the checkId included in the URL is valid and refers to an existing check.\n
405 (Method Not Allowed)The server recognizes the requested URL, but the HTTP method used (e.g., GET, POST, PUT, DELETE) is not supported for that resource.\n METHOD_NOT_SUPPORTED - Use the appropriate HTTP method (GET or POST) as specified in the API documentation for the given resource.\n
406 (Not Acceptable)The server is unable to generate a response that matches the content type criteria specified in the request's Accept header.\n NOT_ACCEPTABLE - When requesting a report, ensure the request includes an Accept header. Use */* to receive the latest available version, or specify a particular version (e.g., application/vnd.report.gb.m2-20240521+json) to request a specific report model.\n
415 (Unsupported Media Type)The server refuses to process the request because the format of the request payload is not supported. This typically relates to the Content-Type header, which must accurately indicate the format of the request body so the server can parse it correctly.\n UNSUPPORTED_MEDIA_TYPE - Ensure that the Content-Type header is set to application/json, as this is the expected format for all request payloads sent to the beBettor API.\n
422 (Unprocessable Entity)The request was syntactically correct but contains invalid or logically inconsistent data that the server cannot process.\n POSTCODE_NOT_FOUND - The postcode format is valid but was not found in the UK postcode directory.

\n POSTCODE_NOT_COVERED - The postcode is valid but belongs to a region not supported by the check type (e.g., Channel Islands, UK overseas territories, or Northern Ireland).

\n PERSON_UNDER_18 - The individual is under 18 years of age and is not eligible for affordability screening.\n
429 (Too Many Requests)The server has received too many requests from the client in a short period of time and is enforcing rate limits to maintain system stability and performance.\n QUOTA_EXCEEDED - You have exceeded your monthly request quota in the Test environment. Please contact us if you need to request an increased limit.

\n THROTTLED - You have exceeded the API rate limit (5 requests per second). Reduce the request rate to comply with the allowed limits.\n
500 (Internal Server Error)The server encountered an unexpected condition that prevented it from fulfilling the request. This is a generic error indicating a problem on the server side, not caused by the client.\n Internal Server Error - Retry the request using an exponential backoff strategy with a reasonable number of attempts. If the issue persists and there is no planned maintenance (check status.bebettor.com), please contact support@bebettor.com for further assistance.\n

\n

13. Frequently Asked Questions (FAQs)

API

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the maximum number of requests per second we can send?The default rate limit is 5 requests per second for both Test and Production environments.
What is the average response time of the API?The average response time is under 500 milliseconds (excluding network round-trip latency).
Are API requests and responses different for each check type?The request and response formats are consistent across check types. Differences lie in the score model, flags model, and report content associated with each check type.
How do I switch between check types?Set the HTTP header X-BB-Check-Type to the desired check type. Note: each type may require different mandatory or optional customer fields.
Which UK regions are supported?All valid UK postcodes in England, Wales, Scotland, and Northern Ireland are supported. The Wealth check supports England, Wales and Scotland only.
\n

Checks and Reports

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the difference between a check and a report?A check returns a score and risk flags. A report provides structured supporting data across multiple parameter groups. See the "Report Appendix" document for full details.
Do I need to conduct a check before requesting a report?Yes. Reports can only be retrieved using the checkId returned from a completed check.
\n

Integration Process

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
How do we begin integration?You'll receive your API key from beBettor and can start integrating immediately.
Do you provide dummy/test data?Yes. Upon request, we can provide dummy data to support your testing needs.
Who do we contact for technical support?Reach out to our team at support@bebettor.com for assistance.
How long does integration typically take?Integration generally takes 1-2 weeks, depending on your team's resources and complexity of use cases.
How many requests are allowed during integration?By default, you are granted 500 requests per month in the Test environment.
\n

Customer Data

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
What is the purpose of the customerId field?It's your internal identifier used for referencing users without exposing personal data. It is included in all responses and retained for troubleshooting.
Is it helpful to send gender data, even if it's optional?Yes. Gender information can enhance score accuracy.
We collect titles but not gender. Is it still useful to send titles?Yes. Titles help us infer gender when not explicitly provided.
\n

Test Environment

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
Is the Test environment the same as Production?Functionally - yes. The Production environment is faster and uses up-to-date datasets.
Can we use scores from the Test environment?No. Test results are intended for internal development and testing only. They should not be used for real decision-making.
Can we retain Test environment access after integration?Yes. You can continue using your Test credentials to validate system changes.
\n

Production Environment

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
QuestionAnswer
Do we need separate credentials for the Production environment?Yes. Test and Production environments have distinct credentials.
What should we do during system downtime or maintenance?Please queue your requests and resume once you receive confirmation that the system is back online. Maintenance windows will be announced in advance.
\n", "image": "", "baseURL": "https://api.bebettor.com/affordability/v1", "humanURL": "https://github.com/jentic/jentic-public-apis/tree/main/apis/openapi/swaggerhub.bebettor-dev/bebettor-api/1.2.1", "version": "1.2.1", "tags": [ "swaggerhub.bebettor-dev", "bebettor-api" ], "properties": [ { "type": "OpenAPI", "name": "OpenAPI definition", "url": "https://raw.githubusercontent.com/jentic/jentic-public-apis/refs/heads/main/apis/openapi/swaggerhub.bebettor-dev/bebettor-api/1.2.1/openapi.json", "mediaType": "application/openapi+json" }, { "type": "GitHubRepo", "url": "https://github.com/jentic/jentic-public-apis/tree/main/apis/openapi/swaggerhub.bebettor-dev/bebettor-api/1.2.1" } ], "contact": [ { "FN": "support@bebettor.com", "email": "support@bebettor.com" } ] } ] }