kynode
Official Python SDK for the Kynode Korean Business Verification API.
Verify Korean business registration numbers against NTS data with optional DART-verified English company names.
Requirements
- Python 3.8+
httpx(installed automatically)
Installation
pip install kynode
Quick start
from kynode import Kynode
client = Kynode(api_key="sk_live_...")
result = client.verify(
business_number="8090903407",
start_date="20260513",
owner_name="강민구",
company_name="노드메트릭스",
language="en",
)
print(result["isValid"], result.get("businessInfo", {}).get("companyName"))
Client options
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str |
required | Your Kynode API key |
base_url |
str |
https://kynode-api.kynode.workers.dev |
API base URL |
timeout |
float |
30.0 |
Request timeout (sec) |
Use as a context manager to close HTTP connections:
with Kynode(api_key="sk_live_...") as client:
result = client.verify(...)
Single verification (sync)
result = client.verify(
business_number="1234567890",
start_date="20240101",
owner_name="홍길동",
language="en", # optional: en | ko | both | code (default: en)
)
Calls POST /v1/verify with Bearer authentication.
Single verification (async)
import asyncio
from kynode import Kynode
async def main():
client = Kynode(api_key="sk_live_...")
try:
result = await client.verify_async(
business_number="1234567890",
start_date="20240101",
owner_name="홍길동",
)
print(result)
finally:
await client.aclose()
asyncio.run(main())
Batch verification (sync)
batch = client.batch_verify([
{"business_number": "1234567890", "start_date": "20240101", "owner_name": "홍길동"},
{"business_number": "9876543210", "start_date": "20240101", "owner_name": "김철수"},
])
print(batch["total"], batch["success"], batch["failed"])
for row in batch["results"]:
if row["success"]:
print(row["business_number"], row["data"])
else:
print(row["business_number"], row["error"])
- If all items share the same
start_date,owner_name,language, andcompany_name, the client callsPOST /v1/batch/verify(Pro tier and above). - If fields differ per row, the client runs parallel single verifications and returns a batch-shaped response.
Batch verification (async)
batch = await client.batch_verify_async([...])
Error handling
from kynode import (
Kynode,
KynodeError,
KynodeAuthError,
KynodeQuotaError,
KynodeValidationError,
KynodeNotFoundError,
)
try:
client.verify(...)
except KynodeAuthError:
# 401 — invalid or missing API key
pass
except KynodeQuotaError:
# 429 — monthly quota exceeded
pass
except KynodeValidationError:
# 400 — invalid request
pass
except KynodeNotFoundError:
# 404 — endpoint not found
pass
except KynodeError as exc:
print(exc.status_code, exc.code, exc.message, exc.details)
| Exception | HTTP status | Typical cause |
|---|---|---|
KynodeAuthError |
401 | Invalid API key |
KynodeValidationError |
400 | Missing or invalid parameters |
KynodeNotFoundError |
404 | Unknown endpoint |
KynodeQuotaError |
429 | Monthly quota exceeded |
KynodeError |
other | Server errors, timeouts |
Timeouts raise KynodeError with code="timeout" and status_code=408.
Development
cd kynode
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest
Build for PyPI
pip install build twine
python -m build
twine check dist/*
# twine upload dist/*
Links
License
MIT
Metadata
Release files for kynode 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kynode-0.1.0.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kynode-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.4 kB
Release files / kynode-0.1.0.tar.gz
| Download URL | kynode-0.1.0.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
67ca9c11fcaf414a583353762c0d745f8332b79f68ad96c0305f71500ff1d4ee
|
|
BLAKE2b-256 checksum How to use checksums |
337906c14375315d32180078702a813b6e1156b10c8141b25310965f066df7e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / kynode-0.1.0-py3-none-any.whl
| Download URL | kynode-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b8ba1ee80bbc764f1af9bc8d522c402fa24dc95f4a4be719d7e91204d48eb7e2
|
|
BLAKE2b-256 checksum How to use checksums |
086cc36a3594234d89eecf9ab3290144de5d0962a85dc878c3fab7444f98a344
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|