The platform is being rebuilt — sign-in and registration are temporarily unavailable. Contact us
Company Data API
https://api.entiway.com
· Bearer token auth · one wallet · pay per call. ·
See pricing →
Overview & authentication
Every request authenticates with a Bearer token – there are no anonymous data calls. Your Master Token (sk_live_) has full access including token management; scoped API tokens (sk_api_) reach data endpoints only. Account, token and wallet operations are free; data operations deduct credits from your wallet.
sk_live_…
Full access – manage tokens, wallet, and all data. Shown once at initialization.
sk_api_…
Scoped to data endpoints. Created from your Master Token. Shown once.
400 – Invalid JSON
Returned when a body sent with Content-Type: application/json is not valid JSON (e.g. a missing comma or quote). The request is not executed – fix the syntax and send it again.
{
"message": "Invalid JSON body.",
"errors": {
"body": ["Malformed JSON: Syntax error"]
}
}
401 – Unauthorized
Returned when the token is missing or malformed.
{
"error": "Missing API token",
"code": "UNAUTHORIZED"
}
{
"error": "Malformed token format",
"code": "UNAUTHORIZED"
}
404 – Not Found
Returned when a route or resource does not exist.
{
"message": "The route api/v1/companies/unknown could not be found."
}
422 – Validation Error
Returned when request body fails validation. The errors object contains field-level messages – always check each key separately.
{
"message": "The email field must be a valid email address. (and 1 more error)",
"errors": {
"email": [
"The email field must be a valid email address."
],
"name": [
"The name field is required."
]
}
}
429 – Too Many Requests
Returned when you exceed the rate limit. Token-authenticated API endpoints allow 180 requests per minute; registration and account recovery endpoints have lower limits. Back off and retry after a moment.
{
"message": "Too Many Attempts."
}
500 – Server Error
Something went wrong on our end. If this persists, contact [email protected].
{
"message": "Server Error"
}
Authentication
Two-step account setup. Register with your email, name, and password – you'll receive a one-time token by email. Exchange it for a Master Token using /auth/init. The Master Token grants full access to all endpoints and is shown only once – store it securely immediately.
Register
Creates a new account. After registration, a one-time initialization token is sent to your email address. The token expires after 24 hours – use it with /auth/init to generate your Master Token. The user_ref returned is your unique account identifier.
Email restrictions
Temporary email addresses from known disposable mailbox providers and known global email providers are blocked and will be rejected with a 422 error. Use a permanent business or personal email address.
| Name | Type | Description |
|---|---|---|
| email* | string | Your email address. Must be a permanent address – disposable and temporary email providers are blocked. |
| name* | string | Account name or label – used for identification purposes only. 3–255 chars. |
| password* | string | Password for your account. Min. 8 characters. |
| password_confirmation* | string | Must match the password field exactly. |
POST /api/v1/auth/register curl -X POST https://api.entiway.com/api/v1/auth/register \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "email": "[email protected]", "name": "my-integration", "password": "YourPassword123", "password_confirmation": "YourPassword123" }'
{
"user_ref": "3XPT7SS5VG3B",
"email": "[email protected]",
"message": "Registration successful. Check your email to initialize your account.",
"expires_at": "2026-03-18T10:48:59+00:00"
}
Initialize Account
Exchanges the one-time token received by email for a Master Token. The Master Token has full access to all endpoints and is used as the Authorization: Bearer header in every subsequent request. Must be called within 24 hours of registration. This endpoint is heavily rate-limited.
⚠ The Master Token is returned only once and cannot be retrieved again. Store it securely immediately – if lost, use /auth/recover.
🎁 Every new account receives 200 bonus credits upon initialization – credited to your wallet automatically, no action required.
| Name | Type | Description |
|---|---|---|
| token* | string | The one-time initialization token received by email after registration. |
POST /api/v1/auth/init curl -X POST https://api.entiway.com/api/v1/auth/init \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "token": "6d6c675fcebf98fdbeed11055f98fada..." }'
{
"user_ref": "3XPT7SS5VG3B",
"email": "[email protected]",
"master_token": "sk_live_5a4a9438c8b8d46836b2dd70bc95d0ee...",
"token_ref": "O752ABABBLBE",
"message": "Account initialized successfully. Save your Master Token securely - you will not see it again!"
}
Request Recovery
Initiates account recovery. Send your registered email address and the new password you want to set. If the account exists, a recovery email is sent containing a secure link valid for 24 hours. After clicking the link, all existing tokens are revoked and a new Master Token is generated and shown once.
⚠ Recovery revokes all existing tokens – all active integrations will stop working immediately.
| Name | Type | Description |
|---|---|---|
| email* | string | The email address associated with your account. |
| password* | string | The new password to set for your account. Min. 8 characters. |
POST /api/v1/auth/recover curl -X POST https://api.entiway.com/api/v1/auth/recover \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "email": "[email protected]", "password": "YourPassword123" }'
{
"message": "If an account with this email exists, a recovery email has been sent.",
"expires_at": "2026-03-27T09:15:20+00:00"
}
{
"message": "Recovery confirmation failed",
"errors": { "email": ["The email field is required."] }
}
Tokens
API tokens (sk_api_*) are scoped credentials used to authenticate all data requests. They are created from your Master Token and can be revoked or rotated independently. A token has access to all data endpoints – Company Search, Company Monitor, Events, Wallet – but cannot manage other tokens. Token management requires the Master Token (sk_live_*).
⚠ Like the Master Token, the plaintext value of a new API token is shown only once at creation time. Store it immediately.
Create Token
Creates a new API token. Requires the Master Token (sk_live_*) in the Authorization header. The token plaintext is returned only once – store it immediately. Optionally set an expiration in days. If omitted, the token never expires.
| Name | Type | Description |
|---|---|---|
| name* | string | Token label – for your reference only. 3–255 chars. |
| expires_in_days | integer | Optional. Token lifetime in days. 1–365. If omitted, token never expires. |
POST /api/v1/tokens curl -X POST https://api.entiway.com/api/v1/tokens \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "my-integration", "expires_in_days": 90 }'
{
"success": true,
"data": {
"token_ref": "NAHZ4GW2C26H",
"name": "my-integration",
"expires_at": "2026-06-24T11:10:57+00:00",
"is_active": true,
"plaintext": "sk_api_4b06f7ebafdd3b3cde52712e12de4a5d...",
"warning": "Save this token now - it will never be shown again!"
},
"meta": {
"timestamp": "2026-03-24T11:10:57+00:00"
}
}
List Tokens
Returns your Master Token and API tokens, including revoked ones. Token plaintexts are never returned here – only metadata. Requires the Master Token.
GET /api/v1/tokens curl https://api.entiway.com/api/v1/tokens \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": [
{
"token_ref": "NAHZ4GW2C26H",
"name": "my-integration",
"expires_at": "2026-06-24T11:10:57+00:00",
"last_used_at": "2026-03-27T12:18:29+00:00",
"last_used_ip": "192.168.1.1",
"usage_count": 1,
"is_active": true,
"revoked_at": null,
"created_at": "2026-03-27T11:51:21+00:00"
}
],
"meta": {
"total": 1,
"timestamp": "2026-03-29T10:16:33+00:00"
}
}
Get Token
Returns metadata of a specific token. The token_ref is returned at creation time and in the token list. Requires the Master Token.
| Name | Type | Description |
|---|---|---|
| token_ref* | string | Token reference identifier returned at creation. E.g. NAHZ4GW2C26H |
GET /api/v1/tokens/{token_ref} curl https://api.entiway.com/api/v1/tokens/{token_ref} \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": {
"token_ref": "NAHZ4GW2C26H",
"name": "my-integration",
"expires_at": "2026-06-24T11:10:57+00:00",
"last_used_at": "2026-03-27T12:18:29+00:00",
"last_used_ip": "192.168.1.1",
"usage_count": 1,
"is_active": true,
"revoked_at": null,
"created_at": "2026-03-27T11:51:21+00:00"
},
"meta": {
"timestamp": "2026-03-29T10:35:33+00:00"
}
}
Update Token
Updates the label of an existing token. Requires the Master Token.
| Name | Type | Description |
|---|---|---|
| name* | string | New token label. 3–255 chars. |
PUT /api/v1/tokens/{token_ref} curl -X PUT https://api.entiway.com/api/v1/tokens/{token_ref} \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Content-Type: application/json" \ -d '{ "name": "production-name-change" }'
{
"success": true,
"data": {
"token_ref": "NAHZ4GW2C26H",
"name": "production-name-change",
"expires_at": "2026-06-24T11:10:57+00:00",
"last_used_at": null,
"last_used_ip": null,
"usage_count": 0,
"is_active": true,
"revoked_at": null,
"created_at": "2026-03-27T11:51:21+00:00"
},
"meta": {
"timestamp": "2026-03-29T10:41:29+00:00"
}
}
Revoke Token
Permanently revokes an API token. The token becomes immediately inactive – any request using it will return 401 Unauthorized. This action cannot be undone. Requires the Master Token. The Master Token itself cannot be revoked here (422 MASTER_TOKEN_IMMUTABLE) – it is replaced only via account recovery.
DELETE /api/v1/tokens/{token_ref} curl -X DELETE https://api.entiway.com/api/v1/tokens/{token_ref} \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Accept: application/json"
{
"success": true,
"message": "Token revoked successfully",
"meta": {
"revoked_at": "2026-03-29T10:44:55+00:00"
}
}
{
"success": false,
"error": {
"code": "MASTER_TOKEN_IMMUTABLE",
"message": "Master token can only be replaced via account recovery"
}
}
Verify Token
Checks whether the token in the Authorization header is valid and active. Useful for testing your integration. Works with both Master and API tokens.
POST /api/v1/tokens/verify curl -X POST https://api.entiway.com/api/v1/tokens/verify \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": {
"valid": true,
"token_ref": "NAHZ4GW2C26H",
"token_name": "my-integration",
"user_ref": "3XPT7SS5VG3B",
"user_name": "my-integration",
"expires_at": "2026-06-27T10:48:53+00:00",
"is_active": true,
"last_used_at": null
},
"meta": {
"timestamp": "2026-03-29T10:49:21+00:00"
}
}
Rotate Token
Revokes the current API token and generates a new one – the name gets a (rotated) suffix, the expiration date stays the same as the old token's. Use this to rotate credentials without reconfiguring integrations manually. Requires the Master Token. The Master Token itself cannot be rotated (422 MASTER_TOKEN_IMMUTABLE) – it is replaced only via account recovery.
⚠ The new token plaintext is returned only once. Store it immediately. The old token is revoked instantly.
POST /api/v1/tokens/{token_ref}/rotate curl -X POST https://api.entiway.com/api/v1/tokens/{token_ref}/rotate \ -H "Authorization: Bearer sk_live_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": {
"old_token": {
"token_ref": "NAHZ4GW2C26H",
"name": "my-integration",
"revoked_at": "2026-03-29T10:53:26+00:00",
"is_active": false
},
"new_token": {
"token_ref": "5BCSA3AZ7INF",
"name": "my-integration (rotated)",
"expires_at": "2026-06-27T10:48:53+00:00",
"is_active": true,
"plaintext": "sk_api_xxxx...",
"warning": "Save this token now - it will never be shown again!"
}
},
"meta": {
"timestamp": "2026-03-29T10:53:26+00:00"
}
}
{
"success": false,
"error": {
"code": "MASTER_TOKEN_IMMUTABLE",
"message": "Master token can only be replaced via account recovery"
}
}
Wallet
Credit-based billing. Every API operation deducts credits from your wallet balance. Top up your wallet via Paddle – the API returns a checkout URL which you open in a browser to complete payment. Credits are added to your balance automatically after payment confirmation.
Get Wallet
Returns your current credit balance and total credits purchased to date. Works with both Master and API tokens.
GET /api/v1/wallet curl https://api.entiway.com/api/v1/wallet \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -H "Accept: application/json"
{
"status": "success",
"data": {
"balance": 99845,
"total_purchased": 100000
}
}
Top Up
Initiates a wallet top-up. Pass the slug of the credit package you want to purchase. The response contains a checkout_url – open it in a browser to complete payment via Paddle. Credits are added to your balance automatically after confirmation.
| Name | Type | Description |
|---|---|---|
| package_slug* | string | Credit Package ID. Available Packages you can find on the pricing page. |
POST /api/v1/wallet/topup curl -X POST https://api.entiway.com/api/v1/wallet/topup \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "package_slug": "pack_10k" }'
{
"status": "success",
"data": {
"checkout_url": "https://app.entiway.com/checkout-pay?_ptxn=txn_01kkxrrc...",
"package": "pack_10k",
"credits": 10000
}
}
Transaction History
Returns a paginated list of wallet transactions – both top-ups (deposits) and API usage (withdrawals). Each entry includes the operation description, amount, and balance after the transaction.
| Name | Type | Description |
|---|---|---|
| page | integer | Page number. Default: 1. |
GET /api/v1/wallet/transactions?page=1 curl "https://api.entiway.com/api/v1/wallet/transactions?page=1" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"status": "success",
"data": [
{
"type": "deposit",
"amount": "10000.00",
"balance_after": "10200.00",
"description": "Wallet top-up (Paddle)",
"created_at": "2026-03-30T08:40:05.000000Z"
},
{
"type": "start",
"amount": "200.00",
"balance_after": "200.00",
"description": "Welcome bonus credits",
"created_at": "2026-03-30T06:55:25.000000Z"
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 2,
"next_page": null,
"prev_page": null
}
}
Companies
Search and inspect companies from the business registry. Search returns a lightweight result set – identifiers, name, location, main activity, status, and contacts. Snapshot returns the full entity profile including all addresses, units, activities, dates, and persons.
Search Companies
Search the registry with dynamic filters. At least one filter is required (no filter → 422, no charge); filters are combinable. Returns 20 results per page – each result includes identifiers, name, location, main activity code, status, and contact data where available in the registry. total is the full match count; the first 100,000 results can be browsed (last_page at most 5000) – beyond that, narrow the filters.
| Name | Type | Description |
|---|---|---|
| activity_code | string | Exact activity code. Without dots. E.g. 6201Z |
| activity_prefix | string | Activity division – the first two digits of the code; matches all codes in that division. E.g. 62 |
| activity_start_from | date | Filter by activity start date – from. Format: Y-m-d. |
| activity_start_to | date | Filter by activity start date – to. Format: Y-m-d. |
| voivodeship | string | Filter by voivodeship name. E.g. mazowieckie |
| city | string | Filter by city name. Max 150 chars. |
| postal_code | string | Filter by postal code. Max 20 chars. |
| status | enum | Status code, e.g. ACTIVE, SUSPENDED, DELETED, IN_LIQUIDATION. No filter – all statuses. |
| legal_form | string | Legal form slug from the registry dictionary which you will find here →. |
| page | integer | Page number (20 results per page). Default: 1, max 5000. |
GET /api/v1/companies/search curl "https://api.entiway.com/api/v1/companies/search?activity_start_from=2026-02-01&activity_start_to=2026-03-01" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"status": "success",
"data": {
"total": 25483,
"per_page": 20,
"current_page": 1,
"last_page": 1275,
"results": [
{
"identifiers": [
{ "type": "NIP", "value": "9876540016" },
{ "type": "REGON9", "value": "987600000" }
],
"name": "MALOWANIE I SZKLENIE JAN PRZYKŁADOWY",
"city": "Nowy Sącz",
"voivodeship": "małopolskie",
"activity_start": "2026-02-14",
"activity_main": "4334Z",
"status": "ACTIVE",
"contacts": [
{ "type": "phone", "value": "123456789" }
]
}
]
}
}
Company Snapshot
Returns the full current profile of a company by identifier. A single entity may have multiple profiles – for example a sole trader registered under both a medical practice and a different business activity. The response includes all identifiers, profiles, addresses, local units, activity codes, dates, contacts, websites, and persons associated with the entity. Dictionary values (status, legal form, entity type, contact type, date type, person role) are returned as codes – the same as in the search filters and results. Local units and persons – current only (no closed units, no persons who no longer hold the role). Names of persons from KRS are masked at source (the KRS register publishes them in this form).
| Name | Type | Description |
|---|---|---|
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type* | enum | Identifier type: NIP, REGON9, KRS. Any other type → 422. |
| identifier_value* | string | Identifier value. Max 50 chars. |
| include | string[] | Optional. KRS sections: capital, shareholders, proceedings, filings, predecessors. Included in the snapshot price. Unknown section → 422. |
POST /api/v1/companies/snapshot curl -X POST https://api.entiway.com/api/v1/companies/snapshot \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "identifier_type": "REGON9", "identifier_value": "123400000" }'
{
"status": "success",
"data": {
"identity": {
"identifiers": [
{ "type": "NIP", "value": "1234560007" },
{ "type": "REGON9", "value": "123400000" }
],
"company_type": "physical_person",
"country_code": "PL"
},
"profiles": [
{
"name": "Gabinet Fizjoterapii Anna Przykładowa",
"status": "ACTIVE",
"legal_form": "jdg",
"address": {
"street": "ul. Słoneczna",
"building": "5",
"apartment": "2",
"city": "Wrocław",
"postal_code": "50-001",
"voivodeship": "dolnośląskie",
"county": "m. Wrocław",
"commune": "Wrocław",
"country_code": "PL"
},
"units": [
{
"identifier": "12340000000017",
"name": "Gabinet Fizjoterapii Anna Przykładowa – Filia",
"address": { /* same structure as above */ },
"dates": [
{ "type": "establishment", "date": "2024-03-01" },
{ "type": "activity_start", "date": "2024-03-01" }
]
}
],
"contacts": [
{ "type": "phone", "value": "123456789" }
],
"activities": [
{ "code": "8690A", "name": "DZIAŁALNOŚĆ FIZJOTERAPEUTYCZNA", "is_primary": true }
],
"dates": [
{ "type": "establishment", "date": "2020-01-02" },
{ "type": "activity_start", "date": "2020-01-02" },
{ "type": "data_of_entry_in_the_REGON_register", "date": "2020-01-02" }
],
"websites": []
}
],
"persons": [
{ "full_name": "ANNA MARIA PRZYKŁADOWA", "role": "owner" }
]
},
"meta": {
"fetched_at": "2026-10-25T12:00:00+00:00"
}
}
KRS sections (include). For companies and other entities registered in KRS you can add the data.krs block – current state only: capital (share / stock capital), shareholders (current shareholders – persons masked at source, companies in clear), proceedings (ongoing proceedings: liquidation, bankruptcy, restructuring, arrears, enforcement, court guardian), filings (the latest filing for each type of reporting document) and predecessors (what the entity was formed from: transformation, merger, division – the predecessor is identified by regon; krs only when KRS recorded the number of the predecessor, otherwise null). An empty section ([]) means “checked in KRS, none”. For an entity outside KRS: "krs": null and meta.include_not_applicable: true.
POST /api/v1/companies/snapshot -d '{ "identifier_type": "KRS", "identifier_value": "0000000003", "include": ["capital", "shareholders", "proceedings", "filings", "predecessors"] }'
{
"status": "success",
"data": {
"identity": { /* core as above */ },
"profiles": [ /* core as above */ ],
"persons": [ /* core as above */ ],
"krs": {
"capital": { "type": "share_capital", "amount": "50000.00", "currency": "PLN" },
"shareholders": [
{ "holder_type": "company", "name": "PRZYKŁAD HOLDING SP. Z O.O.", "krs": "0000000001", "regon": "987600000",
"shares_count": 80, "shares_value": "40000.00", "currency": "PLN", "holds_all_shares": false, "since": "2021-03-01" },
{ "holder_type": "person", "name": "J** P*********", "krs": null, "regon": null,
"shares_count": 20, "shares_value": "10000.00", "currency": "PLN", "holds_all_shares": false, "since": "2019-06-12" }
],
"proceedings": [
{ "type": "TAX_ARREARS", "since": "2025-11-04", "organ": null, "signature": null, "amount": "12500.00", "currency": "PLN" }
],
"filings": [
{ "type": "annual_financial_statement", "consolidated": false, "period_from": "2025-01-01", "period_to": "2025-12-31", "filing_date": "2026-06-28" },
{ "type": "approval_resolution", "consolidated": false, "period_from": "2025-01-01", "period_to": "2025-12-31", "filing_date": null }
],
"predecessors": []
}
},
"meta": {
"fetched_at": "2026-10-25T12:00:00+00:00",
"include": ["capital", "shareholders", "proceedings", "filings", "predecessors"],
"include_not_applicable": false
}
}
Company Monitor
Monitor companies that matter to you. Add entities to your Company Monitor by identifier – the system checks for changes daily and generates typed events for every detected difference. You can add up to 100 identifiers in a single request. Adding is asynchronous – you receive an immediate confirmation and a notification by email once the entities are ready to monitor.
Add to Monitor
Submits one or more companies for company monitor. Accepts up to 100 identifiers per request. The request returns immediately with Accepted for processing – entities are queued and processed asynchronously.
If the entity already exists in the registry database it is added instantly. If not, it goes through a full import pipeline first. Either way, you receive an email confirmation once all submitted entities are available on your monitoring and ready to receive events.
| Name | Type | Description |
|---|---|---|
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type* | enum | Identifier type: NIP, REGON9, KRS |
| identifier_value* | string[] | Array of identifier values. Max 100 items per request. |
POST /api/v1/companies/add curl -X POST https://api.entiway.com/api/v1/companies/add \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "country_code": "PL", "identifier_type": "REGON9", "identifier_value": ["123400000", "987600000", "123400017"] }'
{
"success": true,
"message": "Accepted for processing."
}
List Watched Companies
Returns a paginated list of all companies on your monitoring list. Each entry includes the primary identifier, company name, date added, date of the last detected event, and total event count. This endpoint is free – no credits are deducted.
| Name | Type | Description |
|---|---|---|
| page | integer | Page number (20 companies per page). Default: 1. |
GET /api/v1/companies/watched curl "https://api.entiway.com/api/v1/companies/watched?page=1" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": [
{
"primary_identifier": "123400000",
"name": "Gabinet Fizjoterapii Anna Przykładowa",
"watched_since": "2026-03-24",
"last_event_at": null,
"watched_events": 0
},
{
"primary_identifier": "987600000",
"name": "MALOWANIE I SZKLENIE JAN PRZYKŁADOWY",
"watched_since": "2026-03-18",
"last_event_at": "2026-04-02",
"watched_events": 6
}
],
"meta": {
"total": 38,
"per_page": 20,
"current_page": 1,
"last_page": 2
}
}
Remove from Company Monitor
Removes one or more companies from your company monitor list. Uses the same identifier format as /companies/add. The response details which identifiers were removed, which were not found in the registry, and which were not on your company monitor list. Daily monitoring stops immediately for removed entities.
| Name | Type | Description |
|---|---|---|
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type* | enum | Identifier type: NIP, REGON9, KRS |
| identifier_value* | string[] | Array of identifier values. Max 100 items per request. |
DELETE /api/v1/companies/watched curl -X DELETE https://api.entiway.com/api/v1/companies/watched \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "country_code": "PL", "identifier_type": "REGON9", "identifier_value": ["123400000"] }'
{
"success": true,
"data": {
"removed": ["123400000"],
"not_found": [],
"not_watched": []
},
"meta": {
"total": 1,
"removed": 1,
"not_found": 0,
"not_watched": 0,
"removed_at": "2026-03-24T15:18:25+00:00"
}
}
Company Monitor Events
Returns the events of one company on your monitoring list, identified by NIP, REGON9, or KRS – from the day it was added to monitoring. A company not on your list → 404. Unlike /watchlist/events, which returns a feed across your entire monitoring list, this endpoint focuses on a single entity.
| Name | Type | Description |
|---|---|---|
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type* | enum | Required. Identifier type: NIP, REGON9, KRS |
| identifier_value* | string | Identifier value of the company. |
| page | integer | Page number (20 events per page). Default: 1. |
GET /api/v1/companies/events curl "https://api.entiway.com/api/v1/companies/events?identifier_type=NIP&identifier_value=1234560007" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"status": "success",
"data": {
"events": [
{
"event_type": "COMPANY_NAME_CHANGED",
"old_value": "Jan Przykładowy",
"new_value": "Jan Przykładowy wspólnik spółki cywilnej PRZYKŁAD S.C.",
"event_date": "2025-10-06",
"severity": "info"
},
{
"event_type": "COMPANY_CLOSED_DATE",
"old_value": null,
"new_value": "2026-02-28",
"event_date": "2025-10-06",
"severity": "critical"
}
]
},
"meta": {
"total": 8,
"per_page": 20,
"current_page": 1,
"last_page": 1,
"fetched_at": "2026-03-24T15:20:44+00:00"
}
}
Monitor Events Feed
Returns a paginated feed of all events detected across your entire company monitor list. Unlike /companies/events which focuses on a single entity, this endpoint aggregates changes from all your monitored companies. Filter by event type, date range, and scope. Returns 20 events per page.
| Name | Type | Description |
|---|---|---|
| event_type | string | Filter by event type. E.g. COMPANY_NAME_CHANGED. |
| from_date | date | Start date. Format: Y-m-d. |
| to_date | date | End date. Format: Y-m-d. |
| page | integer | Page number (20 events per page). Default: 1. |
GET /api/v1/watchlist/events curl "https://api.entiway.com/api/v1/watchlist/events?from_date=2026-03-01&to_date=2026-03-24" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"status": "success",
"data": [
{
"primary_identifier": "987600000",
"name": "MALOWANIE I SZKLENIE JAN PRZYKŁADOWY",
"event_type": "COMPANY_START_DATE_CHANGE",
"old_value": "2026-02-25",
"new_value": "2026-03-02",
"event_date": "2026-03-02",
"severity": "notice"
}
],
"meta": {
"total": 170,
"per_page": 20,
"current_page": 1,
"last_page": 9,
"fetched_at": "2026-03-24T15:55:25+00:00"
}
}
Get Alert Settings
Returns the alert settings in effect now – without an identifier the global profile, with identifier_type and identifier_value the settings of that company on your list (its own or inherited from global). The source field: global or company_override. A company not on your list → 404.
| Name | Type | Description |
|---|---|---|
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type | enum | Identifier type for per-company targeting: NIP, REGON9, KRS. Required together with identifier_value. |
| identifier_value | string | Identifier value of the target company. Required together with identifier_type. Max 50 chars. |
GET /api/v1/watchlist/alerts # global curl "https://api.entiway.com/api/v1/watchlist/alerts" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json" # per company curl "https://api.entiway.com/api/v1/watchlist/alerts?identifier_type=NIP&identifier_value=1234560007" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Accept: application/json"
{
"success": true,
"data": {
"updated": 0,
"settings": {
"source": "global",
"alerts_enabled": true,
"alert_min_severity": "warning",
"alert_event_classes": null,
"alert_categories": null,
"notify_via_email": true
}
}
}
Alert Settings
Configure alert preferences for your company monitor. Controls which events trigger notifications, the minimum severity threshold, and the notification channel. Settings can be applied globally – to all monitored companies – or per company using its identifier. Per-company settings take priority over global ones.
| Mode | Description |
|---|---|
| Global | Omits identifier_type and identifier_value – applies to all companies without individual settings. |
| Global + force | Pass force: true to overwrite individual settings too. Also resets has_custom_settings to false for all entries. |
| Per company | Pass identifier_type and identifier_value to target a single company. Sets has_custom_settings: true for that entry. |
| Name | Type | Description |
|---|---|---|
| alert_min_severity | enum | Minimum event severity that triggers an alert. Events below this threshold are ignored. Accepted values: info, notice, warning, high, error, critical. |
| alerts_enabled | boolean | Enable or disable alerts. When omitted, the existing value is preserved. Notifications are disabled by default – you must explicitly pass true to activate them. |
| notify_via_email | boolean | Enable email notifications. Disabled by default – pass true to receive email alerts. |
| alert_event_classes | array | Filter alerts by event class. When set, only events matching these classes trigger a notification. Accepted values: initialization, change, growth, risk, anomaly, recovery. Omit to receive all classes. |
| alert_categories | array | Filter alerts by data category. Accepted values: status, identity, location, ownership, activities, contacts, web_presence, finance. Omit to receive all categories. |
| force | boolean | When true, overwrites per-company settings and resets has_custom_settings to false for all entries. Use to enforce a single global configuration. Ignored in per-company mode. |
| use_global_settings | boolean | When true together with a company identifier, removes its individual settings – the company returns to global (source: global). Without an identifier → 422. |
| country_code | string | Optional. Registry country code (ISO 3166-1 alpha-2), e.g. PL. Without it the country follows from the identifier type (NIP, REGON9, KRS → PL); required only when the type exists in several countries. A type outside the list for the country → 422. |
| identifier_type | enum | Identifier type for per-company targeting: NIP, REGON9, KRS. Required together with identifier_value. |
| identifier_value | string | Identifier value of the target company. Required together with identifier_type. Max 50 chars. |
PATCH /api/v1/watchlist/alerts curl -X PATCH "https://api.entiway.com/api/v1/watchlist/alerts" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -d '{ "alert_min_severity": "warning", "alerts_enabled": true, "notify_via_email": true }'
PATCH /api/v1/watchlist/alerts curl -X PATCH "https://api.entiway.com/api/v1/watchlist/alerts" \ -H "Authorization: Bearer sk_api_xxxx" \ -H "Content-Type: application/json" \ -d '{ "alert_min_severity": "high", "alerts_enabled": true, "notify_via_email": true, "alert_event_classes": ["risk", "anomaly"], "identifier_type": "NIP", "identifier_value": "1234560007" }'
{
"success": true,
"data": {
"updated": 1,
"settings": {
"source": "company_override",
"alerts_enabled": true,
"alert_min_severity": "high",
"alert_event_classes": ["risk", "anomaly"],
"alert_categories": null,
"notify_via_email": true
}
}
}
{
"success": false,
"message": "Company not found on your watchlist."
}