Free Tier
curl --request GET \
--url https://api.memoclaw.com/v1/free-tier/info \
--header 'x-wallet-auth: <x-wallet-auth>'import requests
url = "https://api.memoclaw.com/v1/free-tier/info"
headers = {"x-wallet-auth": "<x-wallet-auth>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-wallet-auth': '<x-wallet-auth>'}};
fetch('https://api.memoclaw.com/v1/free-tier/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.memoclaw.com/v1/free-tier/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-wallet-auth: <x-wallet-auth>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.memoclaw.com/v1/free-tier/info"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-wallet-auth", "<x-wallet-auth>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.memoclaw.com/v1/free-tier/info")
.header("x-wallet-auth", "<x-wallet-auth>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.memoclaw.com/v1/free-tier/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-wallet-auth"] = '<x-wallet-auth>'
response = http.request(request)
puts response.read_body{
"wallet": "<string>",
"free_tier_remaining": 123,
"free_tier_total": 123,
"free_tier_used": 123
}API Reference
Free Tier
GET /v1/free-tier/* — Check and manage your free tier allowance.
GET
/
v1
/
free-tier
/
info
Free Tier
curl --request GET \
--url https://api.memoclaw.com/v1/free-tier/info \
--header 'x-wallet-auth: <x-wallet-auth>'import requests
url = "https://api.memoclaw.com/v1/free-tier/info"
headers = {"x-wallet-auth": "<x-wallet-auth>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-wallet-auth': '<x-wallet-auth>'}};
fetch('https://api.memoclaw.com/v1/free-tier/info', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.memoclaw.com/v1/free-tier/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-wallet-auth: <x-wallet-auth>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.memoclaw.com/v1/free-tier/info"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-wallet-auth", "<x-wallet-auth>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.memoclaw.com/v1/free-tier/info")
.header("x-wallet-auth", "<x-wallet-auth>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.memoclaw.com/v1/free-tier/info")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-wallet-auth"] = '<x-wallet-auth>'
response = http.request(request)
puts response.read_body{
"wallet": "<string>",
"free_tier_remaining": 123,
"free_tier_total": 123,
"free_tier_used": 123
}Every wallet gets 100 free API calls to paid endpoints. No payment required to start.
Free endpoints (list, get, delete, search, suggested, relations, history, graph, export, namespaces, stats) don’t consume free tier credits.
GET /v1/free-tier/info
Public endpoint (no auth required). Returns free tier policy.curl
curl https://api.memoclaw.com/v1/free-tier/info
Response
{
"free_tier": {
"enabled": true,
"calls_per_wallet": 100,
"description": "Every wallet gets 100 free API calls. No payment required."
},
"auth": {
"header": "x-wallet-auth",
"format": "{wallet_address}:{unix_timestamp}:{signature}",
"message_to_sign": "memoclaw-auth:{unix_timestamp}",
"expiry_seconds": 300
},
"after_free_tier": {
"payment": "x402 (USDC on Base)",
"note": "Only endpoints using OpenAI are charged. See /reference/pricing for details."
}
}
GET /v1/free-tier/status
Check your remaining free tier calls. Requires wallet authentication.Headers
string
required
Format:
{address}:{timestamp}:{signature}Response
string
Your wallet address.
number
Calls remaining in free tier.
number
Total free tier allowance (100).
number
Calls already used.
Example
curl https://api.memoclaw.com/v1/free-tier/status \
-H "x-wallet-auth: 0xYourWallet:1699900000:0xSignature..."
const timestamp = Math.floor(Date.now() / 1000);
const message = `memoclaw-auth:${timestamp}`;
const signature = await wallet.signMessage(message);
const response = await fetch("https://api.memoclaw.com/v1/free-tier/status", {
headers: {
"x-wallet-auth": `${wallet.address}:${timestamp}:${signature}`,
},
});
from memoclaw import MemoClaw
client = MemoClaw() # auth is handled automatically
status = client.status()
print(f"Remaining: {status.free_tier_remaining}/{status.free_tier_total}")
Response
{
"wallet": "0x1234...abcd",
"free_tier_remaining": 87,
"free_tier_total": 100,
"free_tier_used": 13
}
⌘I