API Reference
OIDC
Platform

Backend SDKs

AdminUpdated Sep 11, 2026

Backend SDKs

Backend SDKs do two jobs: manage your instance over the secret-key BAPI, and verify session JWTs locally against JWKS. The base URL defaults to https://api.atlas.dev and is overridable.

Node — @atlas/backend

npm install @atlas/backend
import { createAtlasClient, AtlasBackend, paginate } from '@atlas/backend';

// Management
const atlas = createAtlasClient({ secretKey: process.env.ATLAS_SECRET_KEY! });
const user = await atlas.users.create({ email_address: 'ada@example.com' }, 'signup-ada-001');
for await (const org of paginate(atlas.organizations.list)) console.log(org.name);

// Verification
const backend = new AtlasBackend({
  jwksUrl: 'https://accounts.yourapp.com/.well-known/jwks.json',
  issuer: 'https://accounts.yourapp.com',
});
const auth = await backend.authenticateRequest(req);
if (auth.ok) auth.protect({ permission: 'org:billing:manage' });

Python — atlas-backend

Sync AtlasClient and async AsyncAtlasClient.

pip install atlas-backend
from atlas_backend import AtlasClient, AtlasError, paginate

atlas = AtlasClient("sk_live_...", base_url="https://api.atlas.dev")

user = atlas.users.create(
    {"email_address": "ada@example.com", "first_name": "Ada"},
    idempotency_key="signup-ada-001",
)

page = atlas.organizations.list(limit=20)
print(page["data"], page["has_more"], page["next_cursor"])

Go — atlas-go

Idiomatic, stdlib-only client plus local JWT verification via AtlasBackend.

go get github.com/atlas-auth/atlas-go
package main

import (
	"context"
	"fmt"
	"log"

	atlas "github.com/atlas-auth/atlas-go"
)

func main() {
	c := atlas.New("sk_live_...", atlas.WithBaseURL("https://api.atlas.dev"))
	user, err := c.Users.Create(context.Background(), atlas.CreateUserParams{
		EmailAddress: "ada@example.com",
		FirstName:    "Ada",
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("created", user.ID)
}

Token verification: atlas.NewAtlasBackend(...) then backend.Verify(ctx, token).

Ruby — atlas-auth

Ruby 3.0+.

# Gemfile
gem "atlas-auth"
require "atlas"

atlas = Atlas::Client.new(ENV.fetch("ATLAS_SECRET_KEY")) # "sk_live_..."

user = atlas.users.create(email_address: "ada@example.com", password: "•••••••")
page = atlas.users.list(limit: 20)
Atlas.paginate(atlas.organizations).each { |org| puts org["name"] }

PHP — atlas-auth/atlas-php

PSR-18/PSR-17 (Guzzle default) plus a local SessionVerifier. PHP 8.1+.

composer require atlas-auth/atlas-php
use Atlas\Client;

$atlas = new Client('sk_live_…');
$user  = $atlas->users->get('user_123');

$page = $atlas->users->list(['limit' => 50]);
foreach ($page['data'] as $u) { /* … */ }

Java — net.atlasauth:atlas-java

Typed AtlasClient plus a local SessionVerifier. Java 17+.

// Gradle
implementation("net.atlasauth:atlas-java:1.0.0")
<!-- Maven -->
<dependency>
  <groupId>net.atlasauth</groupId>
  <artifactId>atlas-java</artifactId>
  <version>1.0.0</version>
</dependency>
import net.atlasauth.atlas.AtlasClient;
import net.atlasauth.atlas.models.User;

AtlasClient atlas = AtlasClient.builder()
        .secretKey(System.getenv("ATLAS_SECRET_KEY"))
        .build();

User user = atlas.users().get("usr_123");

.NET — Atlas.Sdk

AtlasClient (management) and AtlasBackend (local JWT verification). Targets netstandard2.1 and net8.0.

dotnet add package Atlas.Sdk
using Atlas;
using Atlas.Resources;

using var atlas = new AtlasClient("sk_live_...");
User user = await atlas.Users.GetAsync("user_123");

User created = await atlas.Users.CreateAsync(
    new CreateUserBody { EmailAddress = "ada@example.com" },
    idempotencyKey: "signup-8f3c");
Was this page helpful?