Making Your First Request
This walkthrough takes you from credentials to a finished report. It uses the sandbox host and Infocredit Group's own company record as the example throughout.
What you'll need before you start: your project code, username, and password. See Authentication if you don't have a token yet.
Step 1: Get an access token
GET https://sandbox-v3.api4all.io/a4a/3.0/api/token/YOUR_PROJECT_CODE
Authorization: Basic {Base64(username:password)}
Keep the access_token from the response. Every call below uses it as a Bearer token:
Authorization: Bearer {access_token}
Step 2: Find the company
Search by registration number if you have it, or by name if you don't.
By registration number
GET https://sandbox-v3.api4all.io/a4a/3.0/api/search/cy/reg_no/C4404
Authorization: Bearer {access_token}
Cyprus registration numbers take a prefix. UseCfor Limited Liability Companies (ΗΕ),Pfor Partnerships (Σ),Ofor Overseas (ΑΕ), andBfor Business Names (ΕΕ). Infocredit Group's ΗΕ4404 is searched asC4404.
By name
GET https://sandbox-v3.api4all.io/a4a/3.0/api/search/cy/name/INFOCREDIT%20GROUP%20LIMITED
Authorization: Bearer {access_token}
Either way, the response returns matching companies. The field you need is the company's unique code:
{
"messages": [],
"searchdate": "2025-12-01 16:05:11.837",
"searchtype": "reg_no",
"searchterm": "C4404",
"countrycode": "CY",
"records": 1,
"results": [
{
"id": "3458188",
"code": "CY00001234406861",
"country": "cy",
"name": "INFOCREDIT GROUP LIMITED",
"reg_no": "C4404",
"vat_no": "CY 10004404T",
"status": "Active"
}
]
}This company_code (Infocredit's internal ICG ID) is what identifies the company in every later call. Hold onto it.
Step 3: Check what's available (optional)
Before ordering, you can see which reports exist for the company and when each was last updated:
GET https://sandbox-v3.api4all.io/a4a/3.0/api/reports/dates/CY00001234406861
Authorization: Bearer {access_token}
{
"messages": [],
"searchdate": "2026-07-16 14:05:51.640",
"searchtype": "code",
"searchterm": "CY00001234406861",
"records": 3,
"reports": [
{
"country": "CY",
"date": "2026-07-03 12:34:48",
"code": "2100",
"name": "API4ALL - KYB Report"
},
{
"country": "CY",
"date": "2026-07-03 12:34:48",
"code": "2200",
"name": "API4ALL - Structure Report"
},
{
"country": "CY",
"date": "2026-07-03 12:34:48",
"code": "2300",
"name": "API4ALL - Credit Report"
}
]
}
Use this to decide whether the data on file is recent enough, or whether you want to request a fresh investigation when you order.
Step 4: Create the order
POST https://sandbox-v3.api4all.io/a4a/3.0/api/orders/create/
Authorization: Bearer {access_token}
Content-Type: application/json
{
"reference": "123456",
"items": [
{
"code": "CY00001234406861",
"reference": "123456",
"language": "EN",
"product": "2200",
"format": "JSON",
"speed": "Normal",
"freshinvestigation": 0,
"comments": ""
}
]
}product is 2100 for KYB, 2200 for Structure, 2300 for Credit, 2700 Enhanced Structure, 2800 Comprehensive. See Product Codes for the full option set.
Response
{
"messages": [],
"searchdate": "2025-12-01 17:36:57.057",
"searchtype": "id",
"searchterm": "299",
"records": 1,
"orders": [
{
"id": "299",
"code": "HFUEBSFQJGSRELUH",
"reference": "123456",
"dateplaced": "2025-12-01 17:36:46",
"items": "1",
"status": "Received",
"details": [
{
"id": "1327",
"code": "HOXYBHRLCUWXYGYY",
"reference": "123456",
"icgid": "CY00001234406861",
"name": "INFOCREDIT GROUP LIMITED",
"reg_no": "C4404",
"country": "CY",
"product": "API4ALL - Structure Report",
"format": "JSON",
"speed": "Normal",
"investigation": "0",
"report": null,
"dateplaced": "2025-12-01 17:36:56",
"status": "Received"
}
]
}
]
}Note the three identifiers in play here: Order id (299), order code (HFUEBSFQJGSRELUH), and the company icgid (CY00001234406861). They are not interchangeable. Orders Workflow explains which goes where.
Step 5: Check the order
Poll the order using either the order ID or the order code:
GET https://sandbox-v3.api4all.io/a4a/3.0/api/orders/id/299
GET https://sandbox-v3.api4all.io/a4a/3.0/api/orders/code/HFUEBSFQJGSRELUH
While the report is still being produced, report is null. Once the order completes, the report is delivered in the report field of the order detail.
Step 6: Retrieve the report
You can also fetch the report directly by company code, using the endpoint that matches the product you ordered:
GET https://sandbox-v3.api4all.io/a4a/3.0/api/report/kyb/code/CY00001234406861
GET https://sandbox-v3.api4all.io/a4a/3.0/api/report/structure/code/CY00001234406861
GET https://sandbox-v3.api4all.io/a4a/3.0/api/report/credit/code/CY00001234406861
Response (KYB)
{
"GeneratedAt": "2026-07-16T09:08:03.113",
"ICGId": "CY00001234406861",
"Company": [
{
"GeneralInfo": [
{
"RegistrationNumber": "C4404",
"Name": "INFOCREDIT GROUP LIMITED",
"NameInLatinCharacters": "INFOCREDIT GROUP LIMITED",
"VATNumber": "10004404T",
"Status": "Active",
"DateStart": "1972-05-26",
"LegalType": "Limited Company",
"DateRegistered": "1972-05-26",
"Address": "Hadjigeorgiou Filippou, 5A",
"City": "Akropoli",
"PostalCode": "2006",
"Country": "Cyprus",
"CountryCode": "CY",
"DateUpdated": "2026-07-03 12:34:48"
}
]
}
]
}That's the full loop. See Report Types for what each report contains, and Data Definition for field-level meanings.
Recap
| Step | Call | You get |
|---|---|---|
| 1 | GET /a4a/3.0/api/token/{project_code} | access_token |
| 2 | GET /a4a/3.0/api/search/cy/reg_no/{reg_no} | company_code |
| 3 | GET /a4a/3.0/api/reports/dates/{code} | Availability |
| 4 | POST /a4a/3.0/api/orders/create/ | Order id + code |
| 5 | GET /a4a/3.0/api/orders/id/{id} | Order status |
| 6 | GET /a4a/3.0/api/report/{type}/code/{code} | The report |
Updated 4 days ago
