Skip to main content

d2b-sdk — D2B Python SDK

Spreadsheets for AI Agents: typed, versioned, governed tables behind an agent-native API.

pip install d2b-sdk

The distribution is d2b-sdk; the import package and the command are both d2b (d2b on PyPI is an unrelated project). With uvx, that means uvx --from d2b-sdk d2b ....

from d2b import D2BClient, ConflictError

client = D2BClient(api_key="d2b_pat_...", base_url="https://d2b.dev")
wb = client.workbooks.create(title="monthly")["id"]

# Large files are safe: the SDK drives the async ingest and waits on the job.
client.sources.upload(wb, "sales.xlsx", wait=True)

for t in client.tables.list(wb):
    print(t["name"], t["row_count"])

# Row edits are optimistically locked — a 409 is ConflictError, and the
# contract is to re-read and re-apply rather than retry.
page = client.tables.rows(wb, "sales")
try:
    client.tables.upsert_rows(
        wb, "sales",
        rows=[{"product": "apple", "qty": 3}],
        expected_version=page["edit_version"],
    )
except ConflictError:
    page = client.tables.rows(wb, "sales")

The client is a thin skin over the REST API — every method maps to one endpoint:

  • an Idempotency-Key on every mutating call (retry-safe);
  • exponential-backoff retry on 429 / 5xx. 409 is never retried;
  • problem+json errors raised with their suggested_fix attached (written for LLMs to read and react to);
  • helpers for the parts that bite: jobs.wait(), tables.iter_rows(), webhooks.verify_delivery() (signature + send-time check).

Docs: docs.d2b.dev/en/sdks · CLI · API reference · 日本語

Package: PyPI · Source and issues: github.com/600/d2b-sdk (python/; a read-only mirror of the main repository — issues welcome, pull requests can't be merged there).

CLI

d2b login                                            # browser login; no raw API keys
d2b workbooks create --title monthly
d2b upload sales.xlsx --workbook WB --wait
d2b query 'SELECT 1' --workbook WB
d2b pull --workbook WB                               # transforms/ sheets/ charts/ + d2b.json
d2b pull --data customers                            # track base tables as data/*.csv too
d2b push --commit "$(git rev-parse --short HEAD)"    # re-run what changed, then name the version after the commit
d2b github-workflow > .github/workflows/d2b.yml      # CI: push on merge to main, scheduled pull → PR

Output is JSON on stdout; errors carry their suggested_fix on stderr; exit codes are 0 / 1 (API errors, refused syncs) / 2 (usage). Nothing prompts interactively.

d2b login targets https://d2b.dev unless --base-url or $D2B_BASE_URL says otherwise. For non-interactive use set D2B_API_KEY and D2B_BASE_URL — never pass secrets as command-line arguments (--api-key is not accepted, and secret-shaped strings are redacted from error messages).

License

MIT (LICENSE). "D2B", its name and logo, are trademarks and are not covered by this license.

Metadata

Release files for d2b-sdk 0.2.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 d2b-sdk 0.2.0
File Size Uploaded
d2b_sdk-0.2.0.tar.gz 71.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for d2b-sdk 0.2.0
File Interpreter ABI Platform
d2b_sdk-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 125.9 kB

Release files / d2b_sdk-0.2.0.tar.gz

Download URL d2b_sdk-0.2.0.tar.gz
Size 71.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4b4c0ec64d8ea0dcd44c362dcc3d7326a558106d0159d8f81423d4fc335d8287
BLAKE2b-256 checksum
How to use checksums
f9ea0ab5093cf760c3975124789fe34d885d3b190f12df589c0e465686c3c39d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / d2b_sdk-0.2.0-py3-none-any.whl

Download URL d2b_sdk-0.2.0-py3-none-any.whl
Size 54.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5a0ce40fc2d1fc52985f1b3bac77664b704214c2ca4174b943bc79c8d71a1474
BLAKE2b-256 checksum
How to use checksums
6dc5e8e3b41f470a6daba836ac083ac35ca413fbdab6ec85f6ba7cb9994e3d28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

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