Clients for other languages
⚠️
Preview — this feature is being built; the design below is the spec.
After the Python and TypeScript SDKs, Syntic will publish official clients for the other common backend languages. They are generated from the same OpenAPI description, so every endpoint and field appears in every language on the same day, and they share the same behaviour: retries with back-off, typed errors from the error envelope, automatic pagination and streaming helpers.
Today use Direct HTTP or an OpenAI-compatible client in these languages. Both keep working after the official clients ship.
Packages and order of release
| Language | Package | Minimum runtime | Release order |
|---|---|---|---|
| Go | github.com/syntic-ai/syntic-go | Go 1.22 | First |
| Java (and Kotlin) | ai.syntic:syntic-java on Maven Central | Java 11 | First |
| C# / .NET | Syntic on NuGet | .NET 8 | Second |
| Ruby | syntic gem | Ruby 3.1 | Second |
| PHP | syntic/syntic-php on Packagist | PHP 8.1 | Second |
What every client does
| Behaviour | Detail |
|---|---|
| Configuration | Reads SYNTIC_API_KEY and SYNTIC_BASE_URL; default base URL https://app.syntic.ai/v1. |
| Versioning | Sends the syntic-version the release was built for; accepts syntic-beta flags. |
| Retries | 2 retries by default on rate_limit, overloaded, api_error and network errors, with jitter, honouring retry-after. |
| Errors | One error type per envelope type, each exposing code, message, param, details and request_id. |
| Streaming | An iterator or channel of typed events; tool-call fragments joined. |
| Pagination | An iterator that follows after_id / before_id automatically. |
| Raw access | Response headers available on every call. |
| Idempotency | Generates an Idempotency-Key for create calls and reuses it on retry. |
The same request in each language
curl -sS https://app.syntic.ai/v1/chat/completions \
-H "Authorization: Bearer $SYNTIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "Amara Quick", "stream": false,
"messages": [{"role": "user", "content": "Say hello in French."}]}'Support policy
- Each client follows semantic versioning and moves to a new major version when the default
syntic-versionchanges. - Bugs that affect correctness are fixed in all languages within the same release cycle.
- Language versions are supported until their upstream end of life.
Build notes for the platform team
- Generation is cheap; examples, tests and support are the real cost. Ship Go and Java first, then the rest when there is demand.
- Each repository gets a smoke test in CI that calls a staging environment with every operation tagged in the OpenAPI file.
- Generated code is checked in and reviewed; hand-written helpers live in separate files the generator never overwrites.
Related
Was this page helpful?