Skip to main content

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, and company_name, the client calls POST /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)

Source distribution for kynode 0.1.0
File Size Uploaded
kynode-0.1.0.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kynode 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page