Demo token
Endpoint https://api.aradia.app
1 endpoint in this section: POST /v1/demo-token.
POST /v1/demo-token
Section titled “POST /v1/demo-token”Issue a short-lived read-only demo token
Mints a throwaway credential so the documentation console can call the API without anyone signing up. This is the only endpoint that takes no credential, because it is the one that produces them. The token is read-only, expires 15 minutes after it is issued, and carries the demo ceiling of 1 request per second. Only the token's hash is stored, so a token cannot be recovered after this response: request another one. Issuance itself is limited to 5 per minute per IP address. Use a real API key for anything beyond trying an endpoint.
Authorization
Send a bearer credential with the scope bearer API key.
Parameters
This endpoint takes no parameters.
Request Code Samples
/v1/demo-tokencurl -sS -X POST \ -H "Authorization: Bearer $ARADIA_API_TOKEN" \ "https://api.aradia.app/v1/demo-token"const token = process.env.ARADIA_API_TOKEN;
const response = await fetch("https://api.aradia.app/v1/demo-token", { method: "POST", headers: { Authorization: `Bearer ${token}` },});
if (!response.ok) { throw new Error(`Aradia API error ${response.status}`);}const data = await response.json();console.log(data);import osimport requests
token = os.environ["ARADIA_API_TOKEN"]
response = requests.request( "POST", "https://api.aradia.app/v1/demo-token", headers={"Authorization": f"Bearer {token}"}, timeout=30,)response.raise_for_status()print(response.json())package main
import ( "fmt" "io" "net/http" "os")
func main() { request, err := http.NewRequest("POST", "https://api.aradia.app/v1/demo-token", nil) if err != nil { panic(err) } request.Header.Set("Authorization", "Bearer "+os.Getenv("ARADIA_API_TOKEN"))
response, err := http.DefaultClient.Do(request) if err != nil { panic(err) } defer response.Body.Close()
body, err := io.ReadAll(response.Body) if err != nil { panic(err) } fmt.Println(string(body))}<?php$token = getenv('ARADIA_API_TOKEN');
$context = stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => "Authorization: Bearer $token\r\n", ],]);
$body = file_get_contents('https://api.aradia.app/v1/demo-token', false, $context);echo $body;import java.net.URI;import java.net.http.*;
var client = HttpClient.newHttpClient();var request = HttpRequest.newBuilder() .uri(URI.create("https://api.aradia.app/v1/demo-token")) .header("Authorization", "Bearer " + System.getenv("ARADIA_API_TOKEN")) .method("POST", HttpRequest.BodyPublishers.noBody()) .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());require 'net/http'require 'uri'
uri = URI('https://api.aradia.app/v1/demo-token')request = Net::HTTP::Post.new(uri)request['Authorization'] = "Bearer #{ENV.fetch('ARADIA_API_TOKEN')}"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request)endputs response.body// cargo add reqwest --features blockingfn main() -> Result<(), Box<dyn std::error::Error>> { let token = std::env::var("ARADIA_API_TOKEN")?; let client = reqwest::blocking::Client::new(); let response = client .post("https://api.aradia.app/v1/demo-token") .bearer_auth(token) .send()?;
println!("{}", response.text()?); Ok(())}using System.Net.Http;using System.Net.Http.Headers;
using var client = new HttpClient();client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("ARADIA_API_TOKEN"));
using var request = new HttpRequestMessage(new HttpMethod("POST"), "https://api.aradia.app/v1/demo-token");var response = await client.SendAsync(request);Console.WriteLine(await response.Content.ReadAsStringAsync());$headers = @{ Authorization = "Bearer $env:ARADIA_API_TOKEN" }
$response = Invoke-RestMethod -Method POST ` -Uri 'https://api.aradia.app/v1/demo-token' ` -Headers $headers
$response | ConvertTo-Json -Depth 6200A new demo token. Never cached.
A new demo token. Never cached.
Headers: Cache-Control
Body application/json
ara_demo_AAAAAAAAAAAAAAAA_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB2026-08-18T12:15:00Z1302Example
{ "data": { "token": "ara_demo_AAAAAAAAAAAAAAAA_BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "expires_at": "2026-08-18T12:15:00Z", "scopes": [ "read:collections", "read:nfts", "read:owners", "read:transfers", "read:activity", "read:status" ], "limits": { "requests_per_second": 1, "requests_per_minute": 30, "concurrent": 2 } }}429Request rate limit exceeded
Request rate limit exceeded
Headers: RateLimit-Reset, Retry-After
Body application/json
RATE_LIMITEDRequest rate limit exceeded.Example
{ "error": { "code": "RATE_LIMITED", "message": "Request rate limit exceeded." }}503Temporary dependency failure
Temporary dependency failure
Body application/json
SERVICE_UNAVAILABLEThe data service is temporarily unavailable.Example
{ "error": { "code": "SERVICE_UNAVAILABLE", "message": "The data service is temporarily unavailable." }}Try itDemo token included
What each field does
This endpoint takes no parameters.
Response appears here.
