skip to content
Contributing

SDK

Contributing

The SDK is open source. Integration bugs are the ones we most want to hear about.


The client is developed in the open at ConiferKit/use-conifer and takes outside contributions. The gateway, the routing engine, and the billing service are not in that repository — what is public is everything you build against the API.

What is most useful to report

The highest-value issue is an integration bug: a real client library, framework, or agent that does not work against the gateway when it should. Those are the cases where we quietly diverge from the ecosystem, and they are hard to find from the inside. A good report names the client and version, the exact request, and what you expected instead.

Please do not paste an API key, a request id tied to your account, or a full response body from a production call into an issue.

Run the suites

terminal
git clone https://github.com/ConiferKit/use-conifer
cd use-conifer
TypeScript
npm install
npm test          # the TypeScript suite
npm run typecheck
Python
cd python
python -m pytest tests -q

Both suites are offline: they exercise the client against recorded shapes rather than the live gateway, so they need no key, spend no money, and are safe to run in a fork’s CI. A change should keep both green, and a behavioral change should arrive with the test that would have caught it.

The shape of a good change

  • The two languages stay twins. A capability that lands in TypeScript should land in Python with the same semantics and the naming each language expects — maxCostNanoUsd and max_cost_nano_usd are the same field.
  • Refuse rather than silently drop. If Conifer cannot honor a field from another gateway’s dialect, the shim raises and names the replacement. A migration that looks clean while changing what runs is the failure this rule exists to prevent.
  • Money stays exact. Costs are integer nanodollars end to end. No floats anywhere near a price.

Keys stay with us

Minting and revoking API keys happens in the console, not in the repository. The SDK only ever reads a key you already hold from CONIFER_API_KEY.