Sprachmemo
Client libraries
Drop-in API wrappers for Sprachmemo in Python, TypeScript, JavaScript, Go, Java, Rust, C#, C++, PHP, Ruby, Kotlin, Swift, Dart, Elixir, and Clojure.
Each library is a single source file you download from this page and drop into your project. Most languages need nothing else - the file uses only the standard library. Rust is the one exception: add the two crates listed in the file header (reqwest + serde_json) to your Cargo.toml and you're done. Every endpoint the Sprachmemo HTTP API exposes is wrapped as a typed function named after the data model and operation, so the surface mirrors the REST API one-to-one. Authentication uses the same personal access tokens the rest of the API accepts. The libraries are easy to vendor, audit, and extend directly in your own codebase.
Download
Pick your language and download the single source file. Module name for Sprachmemo: voice_client. Class name for languages with an explicit wrapper type: VoiceClient.
Python
voice_client.py
checksum: 67edf7db00…
TypeScript
voice_client.ts
checksum: 942f878739…
JavaScript
voice_client.js
checksum: 6d0967e4e0…
Go
voice_client.go
checksum: 2ee652e808…
Java
VoiceClient.java
checksum: 083ba17a0f…
Rust
voice_client.rs
checksum: bff3ee4387…
C# / .NET
VoiceClient.cs
checksum: d8222dd3a9…
C++
VoiceClient.hpp
checksum: 2f64c0bc60…
PHP
voice_client.php
checksum: f02afc39dd…
Ruby
voice_client.rb
checksum: 0d5dcecd5b…
Kotlin
VoiceClient.kt
checksum: b921bc0d5b…
Swift
VoiceClient.swift
checksum: 8fa6191b1a…
Dart
voice_client.dart
checksum: ded7bdce37…
Elixir
voice_client.ex
checksum: a9ada177af…
Clojure
voice_client.clj
checksum: 2bfd31c3d9…
0.3.13·Module: voice_client·Models: 3Per-language vendoring tips
- PythonDrop
voice_client.pyinto your package;from voice_client import .... Pure stdlib (urllib.request/json/threading); requires Python 3.8+. - TypeScriptDrop
voice_client.tsnext to your other TS files. Type-checks under any combination of@types/node+ DOM lib via small built-in shims; runtime usesfetch(Node 18+ / browser). - GoPlace
voice_client.goinside a directory namedvoice_client/so the file'spackage voice_clientdeclaration matches its import path. - JavaPlace
VoiceClient.javainside a directory namedvoice_client/matching the file'spackage voice_client;declaration. Targets JDK 11+; uses java.net.http only. - RustAdd the file as a module (
mod voice_client;in yourlib.rsormain.rs) and add the two crates listed in the file header (reqwestwith theblocking,jsonfeatures, plusserde_json) to your Cargo.toml. - C# / .NETPlace
VoiceClient.csin any folder; the file declaresnamespace voice_client;. Targets .NET 6+; uses HttpClient + System.Text.Json only - no NuGet packages. - PHP
require_once __DIR__ . '/voice_client.php'from your bootstrap, or autoload the namespacevoice_client\\via Composer's PSR-4. Requires PHP 8.0+ with thecurlandjsonextensions (both default). - Ruby
require_relative 'voice_client'from anywhere in your project. The wrapper class isVoiceClient::Client. Targets Ruby 3.0+; pure stdlib (net/http,json,securerandom). - KotlinPlace
VoiceClient.ktinside a directory namedvoice_client/matching the file'spackage voice_clientdeclaration. Targets Kotlin 1.9+ on JVM 11+; pure JDK only. - SwiftDrop
VoiceClient.swiftnext to your other Swift files. Targets Swift 5.7+ (macOS 12 / iOS 15 / Linux with FoundationNetworking).
Authenticate
Create a personal access token (PAT) from the Integrations menu and pass it to the library at runtime. Every language exposes the same two configuration knobs: an explicit setToken(...) call, or the XCLIENT_TOKEN environment variable for CI / scripted use. Tokens are sent as Authorization: Bearer ... on every request and the library never logs them.
from voice_client import set_tokenset_token("pat_…")# or, equivalently:# export XCLIENT_TOKEN=pat_…
Use the library
Save the downloaded file under your project as voice_client.py (or the equivalent for your language) and import the operation functions you need. Each function is named <model>_<op> (account_create, deal_list, lead_get, ...) and forwards to the matching HTTP endpoint with retry-on-429, exponential backoff, and Retry-After honoured automatically. List functions accept the standard query parameters (limit, offset, sort, q, plus the type's allowed filters); get/update/delete functions accept the row id as their first argument.
from voice_client import recording_list, recording_get, recording_create, recording_update, recording_delete# List the first 20 rowspage = recording_list(limit=20, sort="-created_at")print(page["data"], page["meta"]["has_more"])# Create + read + update + deletecreated = recording_create({"name": "Example"})fresh = recording_get(created["id"])recording_update(created["id"], {"name": "Updated"})recording_delete(created["id"])
Available models
Each library exposes one function per operation per model. The list below is the one-to-one mirror of the HTTP endpoints this app exposes.
| Model | Functions |
|---|---|
| recording | recording_listrecording_getrecording_createrecording_updaterecording_delete |
| voice_note | voice_note_listvoice_note_getvoice_note_createvoice_note_updatevoice_note_delete |
| voice_tag | voice_tag_listvoice_tag_getvoice_tag_createvoice_tag_updatevoice_tag_delete |
Environment variables
| Variable | Purpose |
|---|---|
| XCLIENT_TOKEN | Personal access token used for every API call. |
| XCLIENT_BASE_URL | Override the baked-in server URL (testing only). |
Analytics + updates
Each call sends one analytics event to the same dashboard as the web UI (operation name, library version, OS - no field values, no request bodies) so the team running this app can see how the integration is used. The data is processed securely; an audit log of every event tied to you can be requested at any time from the company operating the app. Separately, the library checks for a newer version once every 24 hours. In interpreted languages (Python, TypeScript on Node, JavaScript on Node, PHP, Ruby, Elixir) the on-disk file is replaced atomically and the next import picks up the new bytes. In compiled languages (Go, Java, Rust, C#, C++, Kotlin, Swift, Dart, Clojure) the source file is left as-is - users ship pre-compiled artefacts, so the version probe just stamps a timestamp you can surface at build-time. Set XCLIENT_NO_AUTOUPDATE=1 to disable the probe entirely.