tellr
Download all
Docs · Reference · SDKs

SDKs

Thin wrappers around the REST API. Each one ships a single class with a single method — anything more is up to you. URLs in the snippets below point at your local Tellr stack.

Browser

One script tag, no configuration. Auto-initializes on every page load and writes a 30-minute session cookie.

html
<script
  src="http://localhost:8081/v1/c.js"
  data-key="pk_••••"
  data-collector="http://localhost:8081"
></script>

Node.js

ts
import Tellr from '@tellr/node';

const tellr = new Tellr({
  apiKey: process.env.TELLR_KEY!,
  baseUrl: 'http://localhost:8080', // omit on production
});

const r = await tellr.check({
  session_token: req.cookies._tellr_session,
  end_user: { email },
});

if (r.verdict === 'block') return res.status(403).end();

Python

py
import tellr
client = tellr.Client(
    api_key=os.environ['TELLR_KEY'],
    base_url='http://localhost:8080',  # omit on production
)

r = client.check(
    session_token=cookies['_tellr_session'],
    end_user={'email': email},
)
if r['verdict'] == 'block':
    return Response(status=403)

Ruby

rb
require 'tellr'
tellr = Tellr::Client.new(
  api_key: ENV['TELLR_KEY'],
  base_url: 'http://localhost:8080',
)

r = tellr.check(
  session_token: cookies['_tellr_session'],
  end_user: { email: params[:email] },
)
render plain: "We've seen you before.", status: 403 if r.verdict == 'block'

Go

go
tellr := tellr.New(tellr.Config{
    APIKey:  os.Getenv("TELLR_KEY"),
    BaseURL: "http://localhost:8080",
})

r, err := tellr.Check(ctx, tellr.CheckRequest{
    SessionToken: cookie("_tellr_session"),
    EndUser:      tellr.EndUser{Email: email},
})
if err != nil { /* … */ }
if r.Verdict == "block" {
    http.Error(w, "We've seen you before.", 403); return
}

PHP

php
<?php
$tellr = new \Tellr\Client(
  api_key: getenv('TELLR_KEY'),
  base_url: 'http://localhost:8080',
);
$r = $tellr->check([
  'session_token' => $_COOKIE['_tellr_session'] ?? null,
  'end_user' => ['email' => $_POST['email']],
]);
if ($r['verdict'] === 'block') {
  http_response_code(403);
  exit;
}