{ "aid": "swaggerhub.bebettor-dev:bebettor-api-1.2.1", "name": "beBettor API", "type": "Index", "description": "
FOR PUBLIC USE ONLY.
\nThe 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:
\nPerforms an affordability screening based on the provided customer data.
Interaction flow:The client initiates a check by including the customer's personal data in the request body.
The beBettor API processes the request and returns the checkId, score and flags.

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:The client sends a request to retrieve a report by including the checkId in the request.
The beBettor API returns a structured report containing multiple parameter groups with supporting data.

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.
| Environment | \nEndpoint URL | \n
|---|---|
| Test | \nhttps://sandbox-api.bebettor.com/affordability/v1 | \n
| Production | \nhttps://api.bebettor.com/affordability/v1 | \n
To start integrating with the beBettor API in either the Test or Production environment, the following configuration details are required.
| Item | \nDescription | \n
|---|---|
| Score Model | \nSome 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. | \n
| API Key | \nAccess to the beBettor API requires an API key, which will be provided to you prior to integration. | \n
The table below outlines the three check types available through the beBettor API.
| Check Type | \nDescription | \n
|---|---|
| Financial Vulnerability | \nScreens the customer for signs of financial vulnerability and returns a score with associated risk flags. | \n
| Wealth | \nEstimates a customer's relative wealth ranking within the UK and returns a wealth score along with associated flags. | \n
| Discretionary Income | \nEstimates a customer's discretionary income and evaluates key risk indicators. Returns a discretionary income score along with associated risk flags. | \n
The table below outlines the customer personal data fields, including their type, format and constraints.
| No | \nField Name | \nData Type | \nFormat & Constraints | \n
|---|---|---|---|
| 1 | \ncustomerId | \nString | \nCharset: printable ASCII Min length: 1 Max length: 100 | \n
| 2 | \ntitle | \nString | \nEnum: [ MR, MRS, MS, MISS, DR, PROF, SIR ] | \n
| 3 | \nfirstName | \nString | \nMin length: 1 Max length: 100 | \n
| 4 | \nlastName | \nString | \nMin length: 1 Max length: 100 | \n
| 5 | \ngender | \nString | \nEnum: [ MALE, FEMALE, OTHER ] | \n
| 6 | \ndateOfBirth | \nString | \nFormat: YYYY-MM-DD (RFC 3339) Age must be ≥ 18 | \n
| 7 | \naddressLine1 | \nString | \nMin length: 1 Max length: 100 | \n
| 8 | \naddressLine2 | \nString | \nMin length: 1 Max length: 100 | \n
| 9 | \ntown | \nString | \nMin length: 1 Max length: 100 | \n
| 10 | \ncounty | \nString | \nMin length: 1 Max length: 100 | \n
| 11 | \npostcode | \nString | \nValid 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.
| No | \nField Name | \nFinancial Vulnerability Check | \nWealth Check | \nDiscretionary Income Check | \n
|---|---|---|---|---|
| 1 | \ncustomerId | \nRequired | \nRequired | \nRequired | \n
| 2 | \ntitle | \nOptional | \nOptional | \nOptional | \n
| 3 | \nfirstName | \nRequired | \nOptional | \nRequired | \n
| 4 | \nlastName | \nRequired | \nOptional | \nRequired | \n
| 5 | \ngender | \nOptional | \nOptional | \nOptional | \n
| 6 | \ndateOfBirth | \nRequired | \nOptional | \nRequired | \n
| 7 | \naddressLine1 | \nRequired | \nRequired | \nRequired | \n
| 8 | \naddressLine2 | \nOptional | \nOptional | \nOptional | \n
| 9 | \ntown | \nRequired | \nOptional | \nRequired | \n
| 10 | \ncounty | \nOptional | \nOptional | \nOptional | \n
| 11 | \npostcode | \nRequired | \nRequired | \nRequired | \n
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.
\nThe vulnerability score indicates whether financial vulnerability is present.
The table below outlines the currently supported score models and their associated scores.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:M2-VP | \nVULNERABLE, PASS | \n
| GB:M2-RAG | \nRED, AMBER, GREEN | \n
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.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:J2 | \n1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | \n
| GB:J3 | \n1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | \n
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.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:V1 | \nA, B, C, D, E, F | \n
| GB:V3 | \nA, B, C, D | \n
| GB:V4 | \nRED, AMBER, GREEN | \n
Financial vulnerability flags indicate additional risk factors associated with the customer.
The table below outlines the currently supported flag models and their associated flags.
| Flags Model | \nFlags | \nDescription | \n
|---|---|---|
| GB:M2 | \nINDIVIDUAL_INSOLVENCY_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Individual Insolvency register. | \n
| JUDGMENTS_ORDERS_FINES_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Judgments, Orders and Fines register. | \n|
| LOW_INCOME_SOCIAL_HOUSING | \nThis flag is triggered when there is a match on the Social Housing register and identifies the individual as having relatively low income. | \n|
| RELATIVE_INCOME_RISK | \nThis flag is triggered when the individual is identified as having a relatively low income. | \n
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.
| Flags Model | \nFlag | \nDescription | \n
|---|---|---|
| GB:J1 | \nSUPER_AFFLUENCE | \nThis flag is triggered when the individual is identified as being in the top 1% of wealth within the Great Britain population. | \n
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.
| Flags Model | \nFlags | \nDescription | \n
|---|---|---|
| GB:V2 | \nINDIVIDUAL_INSOLVENCY_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Individual Insolvency register. | \n
| SOCIAL_HOUSING_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Social Housing register. | \n|
| AGE_UNDER_25 | \nThis flag is triggered when the individual is under 25 years of age. | \n
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.
The table below outlines the currently supported report models.
| Report Model | \nStatus | \nRequest Header Accept Value | \n
|---|---|---|
| GB:M2-20240521 | \nLatest | \napplication/vnd.report.gb.m2-20240521+json | \n
Reports are currently not available for this check type.
The table below outlines the currently supported report models.
| Report Model | \nStatus | \nRequest Header Accept Value | \n
|---|---|---|
| GB:V20211005 | \nLatest | \napplication/vnd.report.gb.v20211005+json | \n
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.
| Environment | \nRate Limit | \nQuota Limit | \n
|---|---|---|
| Test | \n5 requests per second | \n500 requests per month, starting on the 1st day | \n
| Production | \n5 requests per second | \nNo limit | \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.
| HTTP Status Code | \nMeaning | \nRetry Required? | \n
|---|---|---|
| 4xx | \nClient-side error | \nNo | \n
| 429 | \nToo many requests. The request was throttled. | \nYes | \n
| 5xx | \nServer-side error | \nYes | \n
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.
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 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 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 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 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 Get started with the beBettor API by downloading the Postman collection here.
The table below outlines common API response errors, including their HTTP status codes, corresponding error codes and explanations to assist with troubleshooting and resolution.
| HTTP Status Code | \nMeaning | \nAPI Error Codes and Resolutions | \n
|---|---|---|
| 400 (Bad Request) | \nThe server cannot or will not process the request due to a client-side error (e.g., malformed syntax or invalid parameters). | \n\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 | \n
| 401 (Unauthorized) | \nThe request could not be completed because it lacks valid authentication credentials for the target resource. | \n\n AUTHENTICATION_FAILED - Ensure that the X-Api-Key header contains the correct API key for the appropriate environment (Test or Production).\n | \n
| 403 (Forbidden) | \nThe 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\n ACCESS_DENIED - Confirm that the API endpoint URL includes the correct resource path (e.g., /v1/check, /v1/report)\n | \n
| 404 (Not Found) | \nThe server could not locate the requested resource. This typically indicates that the URL is incorrect or the resource does not exist. | \n\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 | \n
| 405 (Method Not Allowed) | \nThe server recognizes the requested URL, but the HTTP method used (e.g., GET, POST, PUT, DELETE) is not supported for that resource. | \n \n METHOD_NOT_SUPPORTED - Use the appropriate HTTP method (GET or POST) as specified in the API documentation for the given resource.\n | \n
| 406 (Not Acceptable) | \nThe server is unable to generate a response that matches the content type criteria specified in the request's Accept header. | \n \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 | \n
| 415 (Unsupported Media Type) | \nThe 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 \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 | \n
| 422 (Unprocessable Entity) | \nThe request was syntactically correct but contains invalid or logically inconsistent data that the server cannot process. | \n\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 | \n
| 429 (Too Many Requests) | \nThe 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\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 | \n
| 500 (Internal Server Error) | \nThe 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\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
| Question | \nAnswer | \n
|---|---|
| What is the maximum number of requests per second we can send? | \nThe default rate limit is 5 requests per second for both Test and Production environments. | \n
| What is the average response time of the API? | \nThe average response time is under 500 milliseconds (excluding network round-trip latency). | \n
| Are API requests and responses different for each check type? | \nThe 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. | \n
| How do I switch between check types? | \nSet the HTTP header X-BB-Check-Type to the desired check type. Note: each type may require different mandatory or optional customer fields. | \n
| Which UK regions are supported? | \nAll valid UK postcodes in England, Wales, Scotland, and Northern Ireland are supported. The Wealth check supports England, Wales and Scotland only. | \n
| Question | \nAnswer | \n
|---|---|
| What is the difference between a check and a report? | \nA 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. | \n
| Do I need to conduct a check before requesting a report? | \nYes. Reports can only be retrieved using the checkId returned from a completed check. | \n
| Question | \nAnswer | \n
|---|---|
| How do we begin integration? | \nYou'll receive your API key from beBettor and can start integrating immediately. | \n
| Do you provide dummy/test data? | \nYes. Upon request, we can provide dummy data to support your testing needs. | \n
| Who do we contact for technical support? | \nReach out to our team at support@bebettor.com for assistance. | \n
| How long does integration typically take? | \nIntegration generally takes 1-2 weeks, depending on your team's resources and complexity of use cases. | \n
| How many requests are allowed during integration? | \nBy default, you are granted 500 requests per month in the Test environment. | \n
| Question | \nAnswer | \n
|---|---|
| What is the purpose of the customerId field? | \nIt's your internal identifier used for referencing users without exposing personal data. It is included in all responses and retained for troubleshooting. | \n
| Is it helpful to send gender data, even if it's optional? | \nYes. Gender information can enhance score accuracy. | \n
| We collect titles but not gender. Is it still useful to send titles? | \nYes. Titles help us infer gender when not explicitly provided. | \n
| Question | \nAnswer | \n
|---|---|
| Is the Test environment the same as Production? | \nFunctionally - yes. The Production environment is faster and uses up-to-date datasets. | \n
| Can we use scores from the Test environment? | \nNo. Test results are intended for internal development and testing only. They should not be used for real decision-making. | \n
| Can we retain Test environment access after integration? | \nYes. You can continue using your Test credentials to validate system changes. | \n
| Question | \nAnswer | \n
|---|---|
| Do we need separate credentials for the Production environment? | \nYes. Test and Production environments have distinct credentials. | \n
| What should we do during system downtime or maintenance? | \nPlease queue your requests and resume once you receive confirmation that the system is back online. Maintenance windows will be announced in advance. | \n
FOR PUBLIC USE ONLY.
\nThe 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:
\nPerforms an affordability screening based on the provided customer data.
Interaction flow:The client initiates a check by including the customer's personal data in the request body.
The beBettor API processes the request and returns the checkId, score and flags.

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:The client sends a request to retrieve a report by including the checkId in the request.
The beBettor API returns a structured report containing multiple parameter groups with supporting data.

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.
| Environment | \nEndpoint URL | \n
|---|---|
| Test | \nhttps://sandbox-api.bebettor.com/affordability/v1 | \n
| Production | \nhttps://api.bebettor.com/affordability/v1 | \n
To start integrating with the beBettor API in either the Test or Production environment, the following configuration details are required.
| Item | \nDescription | \n
|---|---|
| Score Model | \nSome 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. | \n
| API Key | \nAccess to the beBettor API requires an API key, which will be provided to you prior to integration. | \n
The table below outlines the three check types available through the beBettor API.
| Check Type | \nDescription | \n
|---|---|
| Financial Vulnerability | \nScreens the customer for signs of financial vulnerability and returns a score with associated risk flags. | \n
| Wealth | \nEstimates a customer's relative wealth ranking within the UK and returns a wealth score along with associated flags. | \n
| Discretionary Income | \nEstimates a customer's discretionary income and evaluates key risk indicators. Returns a discretionary income score along with associated risk flags. | \n
The table below outlines the customer personal data fields, including their type, format and constraints.
| No | \nField Name | \nData Type | \nFormat & Constraints | \n
|---|---|---|---|
| 1 | \ncustomerId | \nString | \nCharset: printable ASCII Min length: 1 Max length: 100 | \n
| 2 | \ntitle | \nString | \nEnum: [ MR, MRS, MS, MISS, DR, PROF, SIR ] | \n
| 3 | \nfirstName | \nString | \nMin length: 1 Max length: 100 | \n
| 4 | \nlastName | \nString | \nMin length: 1 Max length: 100 | \n
| 5 | \ngender | \nString | \nEnum: [ MALE, FEMALE, OTHER ] | \n
| 6 | \ndateOfBirth | \nString | \nFormat: YYYY-MM-DD (RFC 3339) Age must be ≥ 18 | \n
| 7 | \naddressLine1 | \nString | \nMin length: 1 Max length: 100 | \n
| 8 | \naddressLine2 | \nString | \nMin length: 1 Max length: 100 | \n
| 9 | \ntown | \nString | \nMin length: 1 Max length: 100 | \n
| 10 | \ncounty | \nString | \nMin length: 1 Max length: 100 | \n
| 11 | \npostcode | \nString | \nValid 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.
| No | \nField Name | \nFinancial Vulnerability Check | \nWealth Check | \nDiscretionary Income Check | \n
|---|---|---|---|---|
| 1 | \ncustomerId | \nRequired | \nRequired | \nRequired | \n
| 2 | \ntitle | \nOptional | \nOptional | \nOptional | \n
| 3 | \nfirstName | \nRequired | \nOptional | \nRequired | \n
| 4 | \nlastName | \nRequired | \nOptional | \nRequired | \n
| 5 | \ngender | \nOptional | \nOptional | \nOptional | \n
| 6 | \ndateOfBirth | \nRequired | \nOptional | \nRequired | \n
| 7 | \naddressLine1 | \nRequired | \nRequired | \nRequired | \n
| 8 | \naddressLine2 | \nOptional | \nOptional | \nOptional | \n
| 9 | \ntown | \nRequired | \nOptional | \nRequired | \n
| 10 | \ncounty | \nOptional | \nOptional | \nOptional | \n
| 11 | \npostcode | \nRequired | \nRequired | \nRequired | \n
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.
\nThe vulnerability score indicates whether financial vulnerability is present.
The table below outlines the currently supported score models and their associated scores.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:M2-VP | \nVULNERABLE, PASS | \n
| GB:M2-RAG | \nRED, AMBER, GREEN | \n
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.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:J2 | \n1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | \n
| GB:J3 | \n1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 | \n
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.
| Score Model | \nPossible Scores | \n
|---|---|
| GB:V1 | \nA, B, C, D, E, F | \n
| GB:V3 | \nA, B, C, D | \n
| GB:V4 | \nRED, AMBER, GREEN | \n
Financial vulnerability flags indicate additional risk factors associated with the customer.
The table below outlines the currently supported flag models and their associated flags.
| Flags Model | \nFlags | \nDescription | \n
|---|---|---|
| GB:M2 | \nINDIVIDUAL_INSOLVENCY_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Individual Insolvency register. | \n
| JUDGMENTS_ORDERS_FINES_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Judgments, Orders and Fines register. | \n|
| LOW_INCOME_SOCIAL_HOUSING | \nThis flag is triggered when there is a match on the Social Housing register and identifies the individual as having relatively low income. | \n|
| RELATIVE_INCOME_RISK | \nThis flag is triggered when the individual is identified as having a relatively low income. | \n
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.
| Flags Model | \nFlag | \nDescription | \n
|---|---|---|
| GB:J1 | \nSUPER_AFFLUENCE | \nThis flag is triggered when the individual is identified as being in the top 1% of wealth within the Great Britain population. | \n
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.
| Flags Model | \nFlags | \nDescription | \n
|---|---|---|
| GB:V2 | \nINDIVIDUAL_INSOLVENCY_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Individual Insolvency register. | \n
| SOCIAL_HOUSING_REGISTER_MATCH | \nThis flag is triggered when there is a match on the Social Housing register. | \n|
| AGE_UNDER_25 | \nThis flag is triggered when the individual is under 25 years of age. | \n
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.
The table below outlines the currently supported report models.
| Report Model | \nStatus | \nRequest Header Accept Value | \n
|---|---|---|
| GB:M2-20240521 | \nLatest | \napplication/vnd.report.gb.m2-20240521+json | \n
Reports are currently not available for this check type.
The table below outlines the currently supported report models.
| Report Model | \nStatus | \nRequest Header Accept Value | \n
|---|---|---|
| GB:V20211005 | \nLatest | \napplication/vnd.report.gb.v20211005+json | \n
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.
| Environment | \nRate Limit | \nQuota Limit | \n
|---|---|---|
| Test | \n5 requests per second | \n500 requests per month, starting on the 1st day | \n
| Production | \n5 requests per second | \nNo limit | \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.
| HTTP Status Code | \nMeaning | \nRetry Required? | \n
|---|---|---|
| 4xx | \nClient-side error | \nNo | \n
| 429 | \nToo many requests. The request was throttled. | \nYes | \n
| 5xx | \nServer-side error | \nYes | \n
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.
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 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 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 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 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 Get started with the beBettor API by downloading the Postman collection here.
The table below outlines common API response errors, including their HTTP status codes, corresponding error codes and explanations to assist with troubleshooting and resolution.
| HTTP Status Code | \nMeaning | \nAPI Error Codes and Resolutions | \n
|---|---|---|
| 400 (Bad Request) | \nThe server cannot or will not process the request due to a client-side error (e.g., malformed syntax or invalid parameters). | \n\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 | \n
| 401 (Unauthorized) | \nThe request could not be completed because it lacks valid authentication credentials for the target resource. | \n\n AUTHENTICATION_FAILED - Ensure that the X-Api-Key header contains the correct API key for the appropriate environment (Test or Production).\n | \n
| 403 (Forbidden) | \nThe 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\n ACCESS_DENIED - Confirm that the API endpoint URL includes the correct resource path (e.g., /v1/check, /v1/report)\n | \n
| 404 (Not Found) | \nThe server could not locate the requested resource. This typically indicates that the URL is incorrect or the resource does not exist. | \n\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 | \n
| 405 (Method Not Allowed) | \nThe server recognizes the requested URL, but the HTTP method used (e.g., GET, POST, PUT, DELETE) is not supported for that resource. | \n \n METHOD_NOT_SUPPORTED - Use the appropriate HTTP method (GET or POST) as specified in the API documentation for the given resource.\n | \n
| 406 (Not Acceptable) | \nThe server is unable to generate a response that matches the content type criteria specified in the request's Accept header. | \n \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 | \n
| 415 (Unsupported Media Type) | \nThe 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 \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 | \n
| 422 (Unprocessable Entity) | \nThe request was syntactically correct but contains invalid or logically inconsistent data that the server cannot process. | \n\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 | \n
| 429 (Too Many Requests) | \nThe 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\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 | \n
| 500 (Internal Server Error) | \nThe 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\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
| Question | \nAnswer | \n
|---|---|
| What is the maximum number of requests per second we can send? | \nThe default rate limit is 5 requests per second for both Test and Production environments. | \n
| What is the average response time of the API? | \nThe average response time is under 500 milliseconds (excluding network round-trip latency). | \n
| Are API requests and responses different for each check type? | \nThe 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. | \n
| How do I switch between check types? | \nSet the HTTP header X-BB-Check-Type to the desired check type. Note: each type may require different mandatory or optional customer fields. | \n
| Which UK regions are supported? | \nAll valid UK postcodes in England, Wales, Scotland, and Northern Ireland are supported. The Wealth check supports England, Wales and Scotland only. | \n
| Question | \nAnswer | \n
|---|---|
| What is the difference between a check and a report? | \nA 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. | \n
| Do I need to conduct a check before requesting a report? | \nYes. Reports can only be retrieved using the checkId returned from a completed check. | \n
| Question | \nAnswer | \n
|---|---|
| How do we begin integration? | \nYou'll receive your API key from beBettor and can start integrating immediately. | \n
| Do you provide dummy/test data? | \nYes. Upon request, we can provide dummy data to support your testing needs. | \n
| Who do we contact for technical support? | \nReach out to our team at support@bebettor.com for assistance. | \n
| How long does integration typically take? | \nIntegration generally takes 1-2 weeks, depending on your team's resources and complexity of use cases. | \n
| How many requests are allowed during integration? | \nBy default, you are granted 500 requests per month in the Test environment. | \n
| Question | \nAnswer | \n
|---|---|
| What is the purpose of the customerId field? | \nIt's your internal identifier used for referencing users without exposing personal data. It is included in all responses and retained for troubleshooting. | \n
| Is it helpful to send gender data, even if it's optional? | \nYes. Gender information can enhance score accuracy. | \n
| We collect titles but not gender. Is it still useful to send titles? | \nYes. Titles help us infer gender when not explicitly provided. | \n
| Question | \nAnswer | \n
|---|---|
| Is the Test environment the same as Production? | \nFunctionally - yes. The Production environment is faster and uses up-to-date datasets. | \n
| Can we use scores from the Test environment? | \nNo. Test results are intended for internal development and testing only. They should not be used for real decision-making. | \n
| Can we retain Test environment access after integration? | \nYes. You can continue using your Test credentials to validate system changes. | \n
| Question | \nAnswer | \n
|---|---|
| Do we need separate credentials for the Production environment? | \nYes. Test and Production environments have distinct credentials. | \n
| What should we do during system downtime or maintenance? | \nPlease queue your requests and resume once you receive confirmation that the system is back online. Maintenance windows will be announced in advance. | \n