StellarID Docs
Full API reference, OAuth integration guides, ZK circuit docs, Fee Sponsorship, and Multi-Signature — everything you need to build with StellarID.
Quick Start
Get up and running with StellarID in 4 steps. Connect wallet → Get credential → Generate ZK proof → Verify anywhere.
Install Freighter wallet extension and connect to StellarID
# 1. Install Freighter from https://www.freighter.app/
# 2. Create or import a Stellar testnet wallet
# 3. Fund it via Stellar Friendbot:
curl https://friendbot.stellar.org?addr=YOUR_WALLET_ADDRESSLink GitHub or LinkedIn to receive a verifiable on-chain credential NFT
# GitHub OAuth flow
GET https://stellarid.onrender.com/api/v1/github-issuer/auth?stellarAddress=YOUR_STELLAR_ADDRESS
# LinkedIn OAuth flow
GET https://stellarid.onrender.com/api/v1/linkedin-issuer/auth?stellarAddress=YOUR_STELLAR_ADDRESS
# Both flows return a JWT token and mint an NFT credentialGenerate a zero-knowledge proof to prove a claim without revealing your data
# POST to create a shareable proof
POST https://stellarid.onrender.com/api/v1/proofs
Authorization: Bearer YOUR_JWT_TOKEN
{
"credentialId": "your-credential-id",
"circuitType": "age_check",
"publicInputs": { "threshold": 18 }
}
# Response includes a public share link + PDF downloadAny platform can verify a StellarID proof using the public endpoint
# Public verification — no auth required
GET https://stellarid.onrender.com/verify/YOUR_PROOF_TOKEN
# Or via API
POST https://stellarid.onrender.com/api/v1/verify
{
"token": "YOUR_PROOF_TOKEN"
}Core Concepts
Zero-Knowledge Proofs
Groth16 ZK-SNARKs via Circom. Proofs generated client-side — your data never leaves your device.
NFT Credentials
Verifiable non-transferable NFTs on Stellar containing cryptographic Poseidon commitments, rather than raw user data.
Selective Disclosure
Prove specific claims (e.g., age 18+, income bracket) without revealing your underlying identity or documents.
Privacy by Design
Zero personal data is stored on-chain. Hashed commitments are pinned to IPFS and committed on Stellar.
Fee Sponsorship
Gasless transactions — users never pay XLM gas fees. StellarID sponsors all minting operations via fee bumps.
Multi-Signature Approval
High-value enterprise credentials require N-of-M signature approval, creating a secure, trustless audit trail.
Control Center
The **Identity Control Center** serves as the unified dashboard for StellarID. It provides users and developers access to various portals, analytics, and credential options.
A public shareable profile hosted at /p/[address]. Displays your verified credentials, ZK proof history, and peer-to-peer reputation score, perfect for resume or client verification. Opens in a new tab.
A platform rankings board filtered by city or college. Displays active reputation scores and tiers to gamify on-chain trust and identity. Opens in a new tab.
Allows institutions to request domain verification tokens, run DNS TXT record lookups, perform email verification, and endorse other trusted peer issuers to build network-wide reputation. Opens in a new tab.
Send up to 1000 credentials simultaneously via a CSV upload template. Uses background BullMQ workers and Redis queue management to bypass rate limits. Opens in a new tab.
Create and revoke Developer API Keys, configure B2B webhooks, inspect rate limits, and access live logs of credentials issued programmatically. Opens in a new tab.
Manage tier subscriptions (Free, Pro, Enterprise) via Stripe Checkout or direct Stellar XLM/USDC payments. Features a Sandbox Instant Mock Upgrade toggle in development mode. Opens in a new tab.
An advanced SaaS console visualizing credential trends, telemetry trend lines, daily issuance volume graphs, and recent verification event feeds. Opens in a new tab.
An on-screen wizard interface allowing users to submit credential requests directly to trusted university, employee, or community issuers.
Architecture
StellarID leverages a multi-layer trust architecture designed to decouple client-side zero-knowledge computations, asynchronous queue management, metadata distribution, and secure on-chain token settlement.

- Next.js 14 Frontend
- Zustand State
- snarkjs Proof Generation
- Freighter Wallet
- Express.js REST API
- JWT + API Key Auth
- Rate Limiting (Helmet)
- GitHub & LinkedIn OAuth
- PostgreSQL 15 + Indexes
- Redis 7 Cache
- Pinata IPFS Storage
- Stellar Horizon API
Claim Credential Architecture Flow
This flow facilitates gasless credential onboarding for users without a pre-existing wallet. A unique encrypted token is routed to their email, serving as the bridge to connect their Freighter wallet and trigger Soroban smart contract minting.
Bulk Credential Issuance Queue Flow
To prevent hitting API bottlenecks and Resend SMTP limits, bulk issuances of up to 1000 items are queued using Redis and processed asynchronously by BullMQ background workers.
Non-Crypto Onboarding (Privy) Flow
For users without Freighter wallets, StellarID leverages Privy to enable email/social logins. On registration, Privy creates a secure, embedded wallet on behalf of the user, which is mapped directly to their user ID in the database, allowing seamless credential claiming.
Stripe Subscription Billing & Webhook Flow
The API monetization layer supports tiered limits (Free, Pro, Enterprise). Tiers can be upgraded programmatically via Stripe Checkout. Webhook payloads notify the backend of lifecycle status updates, updating user limits immediately.
Developer SDK
StellarID provides a high-level developer toolkit to interact programmatically with our reputation engine and credentials. Below is the official documentation for the stellarid-sdk NPM package.
stellarid-sdk
TS1.0.0 • PublicThe official JavaScript/TypeScript SDK for StellarID — the protocol-grade identity and reputation layer on Stellar.
StellarID JavaScript SDK
Easily integrate user credential verification, reputation score lookups, on-chain credential issuance, and embeddable trust badges into your Web3 applications.
Installation
Install the package via npm, yarn, or pnpm:
npm install stellarid-sdkQuick Start
1. Initialize the Client
Obtain your Developer API Key from the StellarID Dashboard and instantiate the client:
import { StellarID } from 'stellarid-sdk';
const stellarId = new StellarID({
apiKey: 'your-developer-api-key',
// Optional: Custom base URL (e.g. for local testing)
// baseURL: 'http://localhost:5555/api/v1'
});2. Verify a User's Reputation Score & Credentials
Retrieve verified credentials and computed reputation levels for any Stellar wallet address:
async function checkUserReputation(walletAddress: string) {
try {
const profile = await stellarId.verifyWallet(walletAddress);
console.log(`Score: ${profile.reputation_score}`);
console.log(`Tier: ${profile.tier}`);
console.log(`Is Verified: ${profile.verified}`);
// List user credentials
profile.credentials.forEach(cred => {
console.log(`- ${cred.name} (${cred.status}) issued by ${cred.issuer_name}`);
});
} catch (error) {
console.error('Verification failed:', error.message);
}
}
checkUserReputation('GA2C7...55');3. Generate and Embed a Trust Badge
Retrieve the ready-to-use iframe HTML code to render a gorgeous, glassmorphic trust badge on your website:
async function renderUserBadge(walletAddress: string) {
const badge = await stellarId.getBadge({
walletAddress,
style: 'dark', // 'light' | 'dark'
size: 'md', // 'sm' | 'md' | 'lg'
});
console.log('Insert this HTML to display the badge:');
console.log(badge.html);
// Or get the direct URL to use as you wish:
console.log('Iframe URL:', badge.iframe_url);
}4. Issue a New Credential
Programmatically issue credentials to builders. This inserts a pending credential and emails the recipient a secure link to claim it:
async function sendDeveloperCredential(recipientEmail: string, walletAddress?: string) {
const result = await stellarId.issueCredential({
recipientEmail,
recipientWallet: walletAddress, // Optional
credential: {
name: 'github_developer',
description: 'Verified GitHub Contributor',
metadata: {
repositoriesContributionCount: 15,
languages: ['Rust', 'TypeScript']
},
expires_at: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000).toISOString() // 1 year
}
});
console.log(`Credential Pending! Claim URL: ${result.claim_url}`);
}React Integration Pattern
You can build a reactive hook or component to fetch reputation dynamically:
import React, { useState, useEffect } from 'react';
import { StellarID, VerifyWalletResponse } from 'stellarid-sdk';
const stellarIdClient = new StellarID({ apiKey: process.env.NEXT_PUBLIC_STELLARID_KEY! });
export function UserReputationWidget({ walletAddress }: { walletAddress: string }) {
const [data, setData] = useState<VerifyWalletResponse | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
stellarIdClient.verifyWallet(walletAddress)
.then(setData)
.finally(() => setLoading(false));
}, [walletAddress]);
if (loading) return <div>Loading reputation...</div>;
if (!data) return <div>Unverified User</div>;
return (
<div className="reputation-card">
<h4>Reputation: {data.reputation_score}</h4>
<span className="tier-tag">{data.tier}</span>
</div>
);
}React Hooks Package (`stellarid-react`)
For Next.js and React developers, we provide pre-built custom hooks that handle caching, error boundaries, and state mapping automatically:
import { useStellarIDProfile, useVerifyCredential } from 'stellarid-react';
export function ProfileDashboard({ walletAddress }: { walletAddress: string }) {
const { profile, loading, error, refetch } = useStellarIDProfile(walletAddress);
if (loading) return <div>Fetching credentials from IPFS...</div>;
if (error) return <div>Failed to verify: {error.message}</div>;
return (
<div className="p-6 bg-slate-900 rounded-2xl border border-slate-800">
<h3 className="text-lg font-bold">Reputation: {profile?.reputation_score} ({profile?.tier})</h3>
<p className="text-xs text-slate-400 mt-1">Stellar Address: {walletAddress}</p>
<div className="mt-4 space-y-2">
{profile?.credentials.map(cred => (
<div key={cred.id} className="flex justify-between text-xs py-1 border-b border-slate-800">
<span>{cred.name}</span>
<span className="font-mono text-emerald-400">STATUS_MINTED</span>
</div>
))}
</div>
</div>
);
}Build Bundling Configuration (`tsup`)
The SDK compiles dual formats (CommonJS and ESM) with strict type outputs using tsup. Here is our setup for standard integrations:
// tsup.config.ts
import { defineConfig } from 'tsup';
export default defineConfig({
entry: ['src/index.ts'],
format: ['cjs', 'esm'],
dts: true,
clean: true,
minify: true,
sourcemap: true,
external: ['stellar-sdk', '@privy-io/react-auth'],
});Reputation System
StellarID calculates a composite credibility score (0 - 1000) for each profile based on on-chain credentials, issuer trust levels, and temporal recency.
Scoring Formula
Each claimed credential increases the score. Credentials decay gracefully over time to ensure active builders remain at the top.
- Recency Bonus: Starts at +5 points and decays by 1 point every 3 months after issuance.
- Issuer Multiplier: Scaled from 0.1 to 1.0 based on the issuer's verification tier and history.
Reputation Tiers
Extra Profile Bonuses
GitHub Connected
Verify ownership of a GitHub account via OAuth.
Official Issuer Boost
Earn a credential issued by an officially verified entity.
Diversity Bonus
Hold credentials from 5 or more unique issuers.
Active Streak
Claim at least one verified credential within the last 30 days.
StellarID Cards & Social Sharing (P0-B)
Every user gets a public profile page at /p/[walletAddress] containing an interactive, glassmorphic reputation card.
Dynamic Canvas Card Renderer
The frontend renders the card in HTML/CSS with premium hover gradients, then dynamically draws the card to an HTML5 canvas for direct PNG download. It matches the user's reputation tier background colors.
Edge-Generated Social OG Images
To ensure rich previews when profiles are shared on X or LinkedIn, an Edge Function API utilizes @vercel/og to generate dynamic SVG/PNG images with real-time score statistics directly from database records.
Gamified Badges & Streaks (P2-C)
StellarID uses daily streaks and verifiable badges to incentivize active participation and community contributions.
Consecutive Streaks
Users increase their daily streak by submitting proof verifications. If 24 hours elapse since the last activity, the streak resets to 0 (evaluated at midnight UTC).
Redis Sorted Sets
Reputation and streak rankings are stored in Redis sorted sets. This allows fast, low-latency leaderboard lookups, supporting filter tags such as global, city, or university rankings.
Badge Library
- First Step: Earned on first credential claim.
- Collector: Own 5+ unique credentials.
- Elite Builder: Score passes 500.
- Consistent: Maintain a 7-day streak.
Bulk Issuance Architecture
StellarID supports large-scale credential distribution for hackathons and organizations. By utilizing asynchronous queues, the system processes up to 1,000 recipients asynchronously without overloading the network or API limits.
Background Queue Flow
CSV Upload & Validation
The issuer uploads a recipient CSV (validated for email formats and wallet prefixes) and pushes the raw sheet audit backup to IPFS.
BullMQ Asynchronous Enqueueing
A Redis-backed BullMQ worker picks up the job. It processes rows at a rate-limit of 10 emails/second to comply with third-party service bounds.
Token Generation & Delivery
A secure, unique UUID claim token is generated for each row. A customizable HTML invite email is dispatched via Resend.
SSE Real-Time Stepper Updates
The frontend uses Server-Sent Events (SSE) to subscribe to real-time status streams (showing processed, success, and failure counts).
OAuth Issuers
Issuers verify off-chain identity attributes via standard OAuth protocol workflows, producing cryptographic assertions.
Credential Type: github_developer
- GitHub username verification
- Total public repository volume
- Verified primary address profile
- Account age & social stats
Credential Type: linkedin_professional
- Certified full name match
- Verified enterprise email
- Authorized avatar validation
- Unique member sub identity
// GitHub credential claim data (IPFS-stored metadata)
{
"github_username": "iamomm-hack",
"public_repos_count": 42,
"account_created_year": 2020,
"verified_email": true,
"followers": 150
}
// LinkedIn credential claim data
{
"linkedin_name": "Om Kumar",
"linkedin_email": "user@example.com",
"linkedin_email_verified": true,
"linkedin_sub": "xAbCDef12345",
"verified_at": "2026-03-30T00:00:00Z"
}Issuer Verification Tiers & DNS Validation (P1-B)
Organizations acting as credential issuers must undergo domain validation to establish trust. Issuers are partitioned into three distinct tiers:
Self-registered issuers. Credentials have a default multiplier weight of 0.2. Best for hackathon projects and niche apps.
Verified domains. Credentials have a multiplier weight of 0.8. Requires adding a DNS TXT record check at host root.
Manually vetted or delegated by other Top-Tier issuers. Credentials have a multiplier weight of 1.0.
DNS TXT Verification Protocol
To claim Official domain ownership, issuers must add a TXT record to their domain DNS configuration:
Host: @
Value: stellarid-verify=TOKEN_UUID_VALUE
The backend verifies this record programmatically using secure DNS-over-HTTPS queries to check for matching token states prior to domain approval.
Discord Bot Integration
Automate developer community gating using our custom Discord bot. Link your wallet, prove your credentials, and automatically unlock server channels based on your reputation score and tier.
Join Our Community
Experience live reputation-gating in action. Join the official StellarID Discord server today.
Supported Discord Slash Commands
/verifyGenerates a secure wallet-linking gateway link valid for 10 minutes.
/profileDisplays linked wallet details, active streak, earned badges, and reputation tier.
/leaderboardFetches the top 10 global reputation rankings from the database.
Role Gating Hierarchy
The bot dynamically checks member reputation scores via backend webhook alerts and assigns the corresponding server role:
SQLite Discord Database Schema
The Discord bot runs a local SQLite server for tracking configuration states and wallet mapping. This operates independently of the main PostgreSQL database for fast local execution.
-- Guild verification settings
CREATE TABLE IF NOT EXISTS guilds (
guild_id TEXT PRIMARY KEY,
required_tier TEXT DEFAULT 'Proven Builder',
role_id TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Linked user mappings
CREATE TABLE IF NOT EXISTS verified_members (
discord_id TEXT PRIMARY KEY,
stellar_address TEXT UNIQUE NOT NULL,
reputation_score INTEGER NOT NULL,
last_sync_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Advanced Features
Platform sponsorships remove the friction of gas fees. StellarID covers costs via Stellar fee-bump transactions.
0.01 XLM
Max fee/tx
Fee Bump TX
Mechanism
0 XLM
User XLM needed
// GET /api/v1/fee-sponsor/status
{
"sponsor": {
"address": "G...",
"balance": "100 XLM",
"canSponsor": true,
"transactionsRemaining": 10000
}
}High-value credentials require N-of-M authorized signatures prior to on-chain issuance.
- Corporate ID: HR + Manager (2-of-2)
- Dean + Department (2-of-3)
- Compliance + Audit Node (2-of-2)
// Create multi-sig credential request
POST https://stellarid.onrender.com/api/v1/multisig/request
Authorization: Bearer YOUR_JWT
{
"credentialType": "corporate_identity",
"ownerAddress": "G...",
"requiredSigners": ["G...HR", "G...MANAGER"],
"threshold": 2
}Generates an optimized professional profile bio using Google Gemini AI, leveraging the user's verified credentials, Github linked data, and reputation tiers.
A professional, high-signal resume summary (2-3 sentences).
A concise, punchy builder bio under the 160-character limit.
Resume
A comprehensive, detailed background profile statement.
// POST /api/v1/ai/generate-bio
Authorization: Bearer YOUR_JWT
{
"style": "linkedin" // "linkedin" | "twitter" | "resume"
}
// Response
{
"bio": "Stellar Soroban developer with an Elite reputation rating. Proven track record of deploying verified smart contracts and contributing to open-source ecosystems."
}Billing & Sandbox Mode
StellarID features a wallet-integrated subscription billing mechanism utilizing Stellar XLM/USDC payments. For testing and development environment safety, the platform operates in Sandbox Mock Mode.
Sandbox Mock Mode
When Stripe is disabled, IS_MOCK_MODE is activated. In this state, issuers can trigger instant, zero-cost upgrades directly from the billing dashboard to mock specific API limit tiers.
Payment Settlement
In production networks, billing payments are settled directly on-chain using Freighter wallets. Transactions are sent to the platform's primary treasury billing address:
Supports on-chain payment matching via transaction hashes synced automatically with Soroban contract events.
Stripe Products & API Limits Mapping
Stripe Checkout maps product IDs directly to subscription tier limits. Webhook payloads verify signatures and update limits in real time.
| Subscription Tier | Stripe Product ID | API Rate Limit | Daily Request Quota |
|---|---|---|---|
| Free Tier | prod_free_default | 2 requests / sec | 100 requests |
| Developer Pro | prod_dev_pro_999 | 15 requests / sec | 10,000 requests |
| Enterprise | prod_enterprise_unlim | 100 requests / sec | Unlimited |
API Reference
Base Endpoint URL: https://stellarid.onrender.com/api/v1
Header Scheme: Authorization: Bearer JWT_TOKEN
Auth
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /auth/connect | Connect wallet & get JWT token | Public |
| GET | /auth/me | Get current user profile | JWT |
| POST | /developer/keys | Generate new developer API key | JWT |
Credentials
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /credentials | Issue a new credential | JWT |
| GET | /credentials/my | List your credentials | JWT |
| DELETE | /credentials/:id | Delete (unlink) a credential | JWT |
| POST | /credentials/issue-with-email | Issue credential via email (pending) | JWT |
| GET | /credentials/claim/:token | Verify claim invitation token | Public |
| POST | /credentials/claim/:token | Submit wallet and claim pending credential | Public |
Bulk Issuance
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /bulk/upload | Upload CSV to bulk issue credentials | JWT |
| GET | /bulk/jobs/:id/status | SSE/Polling for bulk job progress status | JWT |
| POST | /bulk/jobs/:id/retry-failed | Retry failed rows in bulk job | JWT |
Reputation
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /reputation/:wallet_address | Get reputation score & breakdown | Public |
| POST | /reputation/:wallet_address/recalculate | Force recalculate reputation | Public |
Issuer Verification
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /issuers/:id/request-domain-verification | Request DNS verification TXT token | JWT |
| POST | /issuers/:id/confirm-domain-verification | Perform DNS TXT lookup to verify | JWT |
| POST | /issuers/:id/endorse | Endorse another issuer account | JWT |
Leaderboard
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /leaderboard | Fetch rankings filtered by city/college | Public |
| GET | /leaderboard/my-rank | Get calling wallet leaderboard position | JWT |
AI Services
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /ai/generate-bio | Generate developer bio using Gemini API | JWT |
Billing & Monetization
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /billing/status | Fetch subscription status & destination address | JWT |
| POST | /billing/mock-upgrade | Directly upgrade tier (Sandbox Mock Mode) | JWT |
Public API
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /public/verify/:wallet_address | Programmatically verify profile (B2B API) | Public |
| POST | /public/credentials/issue | Programmatically issue pending credential (B2B API) | Public |
Proofs
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /proofs | Create shareable ZK proof record | JWT |
| GET | /proofs/:token | Public proof verification | Public |
| GET | /proofs/:token/pdf | Download PDF certificate | Public |
Issuers
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /issuers | List all trusted issuers | Public |
OAuth
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /github-issuer/auth | Start GitHub OAuth flow | Public |
| GET | /github-issuer/callback | GitHub OAuth callback (auto) | Public |
| GET | /linkedin-issuer/auth | Start LinkedIn OAuth flow | Public |
| GET | /linkedin-issuer/callback | LinkedIn OAuth callback (auto) | Public |
Fee Sponsorship
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /fee-sponsor/info | Fee sponsorship feature info | Public |
| GET | /fee-sponsor/status | Sponsor account balance & status | Public |
| POST | /fee-sponsor/request | Request gasless transaction | JWT |
Multi-Signature
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /multisig/info | Multi-sig feature info | Public |
| POST | /multisig/request | Create multi-sig credential request | JWT |
| POST | /multisig/sign/:id | Add signature to request | JWT |
| GET | /multisig/request/:id | Check multi-sig request status | JWT |
| GET | /multisig/pending | List your pending requests | JWT |
Admin
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /admin/stats | Platform-wide analytics | JWT |
| GET | /admin/activity | Last 24h activity feed | JWT |
| GET | /admin/chart-data | 30-day trend chart data | JWT |
| GET | /admin/top-issuers | Top issuers by volume | JWT |
Verify
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /verify | Verify a ZK proof (platform API) | Public |
ZK Circuits
StellarID compiles pre-built Circom arithmetic circuits to generate zero-knowledge proofs under Groth16.
Proves birthYear <= threshold threshold without disclosing age details.
Proves salary range boundary assertions without revealing precise amount.
Proves geographic location compliance with zero metadata leaks.
Proves secret membership in a Merkle tree without revealing leaf index.
# Compile age_check circuit
circom age_check.circom --r1cs --wasm --sym -o build/
# Generate proving key (Groth16 setup)
snarkjs groth16 setup build/age_check.r1cs pot12_final.ptau age_check_0000.zkey
# Export verification key
snarkjs zkey export verificationkey age_check_0000.zkey verification_key.jsonSecurity System
StellarID is built with a defense-in-depth model safeguarding all client interfaces and storage networks.
JWT Authentication
7-day session lifetimes with encrypted payload signatures.
Helmet.js Security
Strict HTTP response headers preventing injection attacks.
Rate Limiter Filters
DDoS mitigation triggers blocking excessive request patterns.
Database Safety
Parameterized query parameters blocking SQLi entry vectors.
Vaulted Secrets
Zero code exposure of passwords or API signing certificates.
Encrypted Transport
Compulsory TLS tunnels securing REST API socket endpoints.
Start Integrating
Verify credentials instantly and prove identity statements securely with StellarID.