Authenticated, rate-limited access to Nimblebit's TinyTower servers.
The proxy signs your requests before forwarding them to Nimblebit, so you never touch salts or hashes. Authenticate with an API key as a bearer token:
curl -H "Authorization: Bearer <your-key>" \
https://authproxy.tinyburg.app/player_details/tt/:playerIdA key carries scopes, one per endpoint family, and its own rate limit. Sign in with your Tinyburg account to provision read-only keys yourself, see the keys you hold, and rotate any that leak.
This proxy serves the same endpoint definitions that @tinyburg/tinytower-sdk is built from, so a typed TypeScript client comes for free. It decodes save data, friends, gifts, visits and raffles into real types, and it already knows how to aim itself here:
npm install @tinyburg/tinytower-sdk @tinyburg/nimblebit-sdk effectimport { NodeCrypto } from "@effect/platform-node";
import { NimblebitAuth, NimblebitConfig } from "@tinyburg/nimblebit-sdk";
import { TinyTower } from "@tinyburg/tinytower-sdk";
import { Config, Effect, Layer } from "effect";
import { FetchHttpClient } from "effect/http";
const Live = Layer.merge(
FetchHttpClient.layer,
NimblebitAuth.layerTinyburgAuthProxyConfig({
authKey: Config.Redacted("AUTH_KEY"),
})
).pipe(Layer.provide(NodeCrypto.layerSecureRandom));
const program = Effect.gen(function* () {
const me = yield* NimblebitConfig.AuthenticatedPlayerConfig;
const { visits } = yield* TinyTower.social_getVisits(me);
yield* Effect.log(visits);
});
Effect.runPromise(Effect.provide(program, Live));AUTH_KEY is the proxy key you provisioned here; PLAYER_ID and PLAYER_AUTH_KEY name the tower you are acting as. Pulled saves come back as gzipped Nimblebit soup — hand them to the SDK's SaveData schema and you get floors, bitizens, missions and friends as ordinary typed values.
Two shared keys exist for kicking the tires. They are rate limited by IP address:
00000000-0000-0000-0000-000000000001 # no scopes00000000-0000-0000-0000-000000000002 # all read-only scopesPersonal keys are rate limited per key instead, and start at 10 requests a minute. Need write scopes or a higher limit? Reach out on Discord.
Part of tinyburg.app — not affiliated with Nimblebit.