sdks

Libraries & code examples

Grab a client. Or copy three lines.

Every library on this page is generated straight from the OpenAPI spec, so method names match the reference one-to-one — login(), listOrders(), getOrder(). Prefer raw HTTP? The quickstart below runs in any language with no dependencies.

9 SDKs 7 quickstarts OpenAPI 3.0 24 endpoints Self-contained zips

Quickstart · no SDK

Bring a token, then call anything.

The same two steps in seven languages: hold a bearer token, then send it on every request. Step 1 does not happen on this API at all: ask your Storekeeper administrator for an API key, then exchange its client_id and client_secret for an access token at your own account's OAuth endpoint (client_credentials), which every stock OAuth client library already speaks. Put that access_token in the environment and every example below runs as it stands. The exchange is cheap and repeatable, so there is no renew endpoint here and you do not need one. There is no password endpoint and no read-only demo token — both withdrawn in 2026-09.

# 1 — an access token: exchange your API key at Storekeeper's own token endpoint.
#     curl -s -X POST https://api-$ACCOUNT.storekeepercloud.com/oauth/token \
#       -u "$SK_CLIENT_ID:$SK_CLIENT_SECRET" -d grant_type=client_credentials | jq -r .access_token
TOKEN="${SK_ACCESS_TOKEN:?paste an access_token}"

# 2 — send it on every other request
curl -s "https://api-dev.storekeeper.software/api/orders?from=2026-07-01&limit=25" \
  -H "Authorization: Bearer $TOKEN"
<?php
$base = 'https://api-dev.storekeeper.software';

// 1 — an access token: exchange your API key at
//     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
$token = getenv('SK_ACCESS_TOKEN');

// 2 — call any endpoint with it
$ch = curl_init("$base/api/orders?from=2026-07-01&limit=25");
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
    CURLOPT_RETURNTRANSFER => true,
]);
$orders = json_decode(curl_exec($ch), true);
print_r($orders['data']);
const BASE = 'https://api-dev.storekeeper.software';

// 1 — an access token: exchange your API key at
//     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
const token = process.env.SK_ACCESS_TOKEN;

// 2 — call any endpoint with it
const orders = await fetch(`${BASE}/api/orders?from=2026-07-01&limit=25`, {
  headers: { Authorization: `Bearer ${token}` },
}).then((r) => r.json());

console.log(orders.data);
import os

import requests

BASE = "https://api-dev.storekeeper.software"

# 1 — an access token: exchange your API key at
#     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
token = os.environ["SK_ACCESS_TOKEN"]

# 2 — call any endpoint with it
orders = requests.get(
    f"{BASE}/api/orders",
    params={"from": "2026-07-01", "limit": 25},
    headers={"Authorization": f"Bearer {token}"},
).json()

print(orders["data"])
using System.Net.Http.Json;
using System.Text.Json.Nodes;

var http = new HttpClient { BaseAddress = new Uri("https://api-dev.storekeeper.software") };

// 1 — an access token: exchange your API key at
//     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
var token = Environment.GetEnvironmentVariable("SK_ACCESS_TOKEN")!;

// 2 — call any endpoint with it
http.DefaultRequestHeaders.Authorization = new("Bearer", token);
var orders = await http.GetFromJsonAsync<JsonNode>(
    "/api/orders?from=2026-07-01&limit=25");

Console.WriteLine(orders!["data"]);
import java.net.URI;
import java.net.http.*;

var http = HttpClient.newHttpClient();
String base = "https://api-dev.storekeeper.software";

// 1 — an access token: exchange your API key at
//     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
String token = System.getenv("SK_ACCESS_TOKEN");

// 2 — call any endpoint with it
var orders = http.send(HttpRequest.newBuilder(
        URI.create(base + "/api/orders?from=2026-07-01&limit=25"))
    .header("Authorization", "Bearer " + token)
    .build(), HttpResponse.BodyHandlers.ofString());

System.out.println(orders.body());
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "os"
)

const base = "https://api-dev.storekeeper.software"

func main() {
    // 1 — an access token: exchange your API key at
    //     https://api-<account>.storekeepercloud.com/oauth/token (client_credentials).
    token := os.Getenv("SK_ACCESS_TOKEN")

    // 2 — call any endpoint with it
    req, _ := http.NewRequest("GET", base+"/api/orders?from=2026-07-01&limit=25", nil)
    req.Header.Set("Authorization", "Bearer "+token)
    orders, _ := http.DefaultClient.Do(req)
    defer orders.Body.Close()

    var out map[string]any
    json.NewDecoder(orders.Body).Decode(&out)
    fmt.Println(out["data"])
}

Download an SDK

Typed clients, one per language.

Each zip is a self-contained client with a class per endpoint group (AuthApi, OrdersApi, …) and its own README with a runnable example. Unzip and install locally — nothing is published to a package registry yet.

PHP

PHP

Composer · Guzzle · PSR-4

600 KB
unzip storekeeper-php-sdk.zip
cd storekeeper-php && composer install
Download .zip
TS

JavaScript / TypeScript

npm · fetch · ESM + types

344 KB
unzip storekeeper-typescript-sdk.zip
npm install ./storekeeper-typescript
Download .zip
PY

Python

pip · urllib3 · type hints

525 KB
unzip storekeeper-python-sdk.zip
pip install ./storekeeper-python
Download .zip
C#

C# / .NET

.NET 8 · HttpClient

617 KB
unzip storekeeper-csharp-sdk.zip
dotnet add reference \
  storekeeper-csharp/src/Storekeeper.ApiClient/Storekeeper.ApiClient.csproj
Download .zip
JV

Java

Maven · java.net.http · 11+

650 KB
unzip storekeeper-java-sdk.zip
cd storekeeper-java && mvn install
Download .zip
GO

Go

Go module · net/http

570 KB
unzip storekeeper-go-sdk.zip
# import github.com/storekeeper-company/storekeeper-api-go/storekeeper
Download .zip
RS

Rust

Cargo · reqwest · async

381 KB
unzip storekeeper-rust-sdk.zip
# Cargo.toml: storekeeper = { path = "storekeeper-rust" }
Download .zip
KT

Kotlin

Gradle · OkHttp · JVM

218 KB
unzip storekeeper-kotlin-sdk.zip
cd storekeeper-kotlin && ./gradlew build
Download .zip
SW

Swift

SwiftPM · URLSession · async

177 KB
unzip storekeeper-swift-sdk.zip
# add storekeeper-swift/Package.swift as a local SwiftPM dependency
Download .zip

How to use one. Configure the client with your bearer token, then call the method that matches the reference — e.g. Python: AuthApi().login(...) for the token, then OrdersApi(client).list_orders(...). Full examples live in each zip's README and mirror the interactive reference.

Roll your own

Any language, from the spec.

All nine above are generated with openapi-generator from /openapi.json. Point it at that URL to build a client in Ruby, Dart, Scala, C++, or anything else it supports.

Ruby Dart Scala C++ Elixir Objective-C Perl R Groovy See all →
# same toolchain we use — Ruby, for example
docker run --rm -v "$PWD:/out" \
  openapitools/openapi-generator-cli generate \
  -i https://api-dev.storekeeper.software/openapi.json \
  -g ruby \
  -o /out/storekeeper-ruby

Now go build.

Try calls live in the browser, or read the flows end to end.