The platform is being rebuilt — sign-in and registration are temporarily unavailable. Contact us

How it works Who it is for Company Monitor Company Search Company Profile Pricing Guides API Reference Changelog Registry activity

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.

Master Token sk_live_…

Full access – manage tokens, wallet, and all data. Shown once at initialization.

API Token sk_api_…

Scoped to data endpoints. Created from your Master Token. Shown once.

Error Reference
All API errors return JSON. Depending on the error type, the response shape differs slightly – see each status code below for the exact format.

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.

Invalid JSON body
{
  "message": "Invalid JSON body.",
  "errors": {
    "body": ["Malformed JSON: Syntax error"]
  }
}

401 – Unauthorized

Returned when the token is missing or malformed.

Missing token
{
  "error": "Missing API token",
  "code":  "UNAUTHORIZED"
}
Malformed token
{
  "error": "Malformed token format",
  "code":  "UNAUTHORIZED"
}

404 – Not Found

Returned when a route or resource does not exist.

Route not found
{
  "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.

Validation failed
{
  "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.

Rate limit exceeded
{
  "message": "Too Many Attempts."
}

500 – Server Error

Something went wrong on our end. If this persists, contact [email protected].

Internal server error
{
  "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.

POST /api/v1/auth/register free

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.
Body Parameters
NameTypeDescription
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.
Request
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"
  }'
Response · 201 Created
{
  "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"
}
POST /api/v1/auth/init free

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.

Body Parameters
NameTypeDescription
token* string The one-time initialization token received by email after registration.
Request
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..."
  }'
Response · 200 OK
{
  "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!"
}
POST /api/v1/auth/recover free

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.

Body Parameters
NameTypeDescription
email* string The email address associated with your account.
password* string The new password to set for your account. Min. 8 characters.
Request
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"
  }'
Response · 200 OK
{
  "message":    "If an account with this email exists, a recovery email has been sent.",
  "expires_at": "2026-03-27T09:15:20+00:00"
}
Response · 422 Unprocessable
{
  "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.

POST /api/v1/tokens free

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.

Body Parameters
NameTypeDescription
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.
Request
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
  }'
Response · 201 Created
{
  "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"
  }
}
GET /api/v1/tokens free

List Tokens

Returns your Master Token and API tokens, including revoked ones. Token plaintexts are never returned here – only metadata. Requires the Master Token.

Request
GET /api/v1/tokens

curl https://api.entiway.com/api/v1/tokens \
  -H "Authorization: Bearer sk_live_xxxx" \
  -H "Accept: application/json"
Response · 200 OK
{
  "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 /api/v1/tokens/{token_ref} free

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.

URL Parameters
NameTypeDescription
token_ref* string Token reference identifier returned at creation. E.g. NAHZ4GW2C26H
Request
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"
Response · 200 OK
{
  "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"
  }
}
PUT /api/v1/tokens/{token_ref} free

Update Token

Updates the label of an existing token. Requires the Master Token.

Body Parameters
NameTypeDescription
name* string New token label. 3–255 chars.
Request
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" }'
Response · 200 OK
{
  "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"
  }
}
DELETE /api/v1/tokens/{token_ref} free

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.

Request
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"
Response · 200 OK
{
  "success":  true,
  "message":  "Token revoked successfully",
  "meta": {
    "revoked_at": "2026-03-29T10:44:55+00:00"
  }
}
Response · 422 Unprocessable
{
  "success": false,
  "error": {
    "code":    "MASTER_TOKEN_IMMUTABLE",
    "message": "Master token can only be replaced via account recovery"
  }
}
POST /api/v1/tokens/verify free

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.

Request
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"
Response · 200 OK
{
  "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"
  }
}
POST /api/v1/tokens/{token_ref}/rotate free

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.

Request
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"
Response · 201 Created
{
  "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"
  }
}
Response · 422 Unprocessable
{
  "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 /api/v1/wallet free

Get Wallet

Returns your current credit balance and total credits purchased to date. Works with both Master and API tokens.

Request
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"
Response · 200 OK
{
  "status": "success",
  "data": {
    "balance":         99845,
    "total_purchased": 100000
  }
}
POST /api/v1/wallet/topup free

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.

Body Parameters
NameTypeDescription
package_slug* string Credit Package ID. Available Packages you can find on the pricing page.
Request
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" }'
Response · 200 OK
{
  "status": "success",
  "data": {
    "checkout_url": "https://app.entiway.com/checkout-pay?_ptxn=txn_01kkxrrc...",
    "package":      "pack_10k",
    "credits":      10000
  }
}
GET /api/v1/wallet/transactions free

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.

Query Parameters
NameTypeDescription
page integer Page number. Default: 1.
Request
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"
Response · 200 OK
{
  "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.

POST /api/v1/companies/snapshot 5 credits

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).

PL
Body Parameters
NameTypeDescription
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.
Request
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"
  }'
Response · 200 OK
{
  "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.

Request – include
POST /api/v1/companies/snapshot

  -d '{
    "identifier_type":  "KRS",
    "identifier_value": "0000000003",
    "include": ["capital", "shareholders", "proceedings", "filings", "predecessors"]
  }'
Response · 200 OK – include
{
  "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.

POST /api/v1/companies/add free

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.

PL
FR In progress
Body Parameters
NameTypeDescription
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.
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"]
  }'
Response · 202 Accepted
{
  "success": true,
  "message": "Accepted for processing."
}
GET /api/v1/companies/watched free

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.

PL
FR In progress
Query Parameters
NameTypeDescription
page integer Page number (20 companies per page). Default: 1.
Request
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"
Response · 200 OK
{
  "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
  }
}
DELETE /api/v1/companies/watched free

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.

PL
FR In progress
Body Parameters
NameTypeDescription
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.
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"]
  }'
Response · 200 OK
{
  "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"
  }
}
GET /api/v1/companies/events free

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.

PL
FR In progress
Query Parameters
NameTypeDescription
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.
Request
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"
Response · 200 OK
{
  "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"
  }
}
GET /api/v1/watchlist/events free

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.

PL
FR In progress
Query Parameters
NameTypeDescription
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.
Request
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"
Response · 200 OK
{
  "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 /api/v1/watchlist/alerts free

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.

Query Parameters
NameTypeDescription
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.
Request
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"
Response · 200 OK
{
  "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
    }
  }
}
PATCH /api/v1/watchlist/alerts free

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.

Modes
ModeDescription
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.
Body Parameters
NameTypeDescription
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.
Request – global
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
  }'
Request – per company
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"
  }'
Response · 200 OK
{
  "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
    }
  }
}
Response · 404 – per company only
{
  "success": false,
  "message": "Company not found on your watchlist."
}