API Reference

NameCheq Brand Availability API · v1

The NameCheq API lets you check whether a brand name or username is available across 15 major social platforms in a single request — from your own code, CI pipeline, or internal tool. It's designed to be simple: one POST, one JSON response.

15 platforms

Checked in parallel in a single request

Secure

Bearer key auth. Keys hashed at rest. TLS only.

100 req/day

Per key. Resets at midnight UTC.

Authentication

All requests are authenticated with an API key passed as a Bearer token in theAuthorizationheader. Keys start with nc_live_.

Header

Authorization: Bearer nc_live_YOUR_KEY

Key Security

  • Your key is shown once when generated — save it immediately.
  • Store it in an environment variable, never in your source code or version control.
  • Revoke and regenerate keys from your Profile → API tab at any time.
  • Keys are stored as SHA-256 hashes — we cannot recover a lost key.

Quickstart

Get your API key from Profile → API tab, then make your first request:

bash (curl)
curl -X POST \
  https://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query \
  -H "Authorization: Bearer nc_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "acme"}'

Replace nc_live_YOUR_KEY with your actual key. The response arrives in ~1–3 seconds as platform checks run in parallel.

POSThttps://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query

Checks brand name availability across up to 15 platforms. Results are fetched in parallel — typical response time is 1–3 seconds.

Request Body

Content-Type: application/json

namestringrequired

The brand name or username to check. Alphanumeric, dots, hyphens, and underscores only. Casing is ignored — the value is lowercased before checking.

Examples:acmemy-brandbrand.co
platformsstring[]

Optional array of platforms to check. If omitted, all 15 platforms are checked. Invalid platform names are silently ignored. Must include at least one valid platform.

See Supported Platforms for the full list of valid values.

Response Schema

On success (200), the API returns a JSON object:

json
{
  "name": "acme",
  "results": [
    { "platform": "Instagram",   "status": "taken",     "handle": "@acme"         },
    { "platform": "X / Twitter", "status": "available", "handle": "@acme"         },
    { "platform": "GitHub",      "status": "taken",     "handle": "@acme"         },
    { "platform": "TikTok",      "status": "available", "handle": "@acme"         },
    { "platform": "YouTube",     "status": "taken",     "handle": "@acme"         }
  ],
  "meta": {
    "checked": 5,
    "elapsed_ms": 1843,
    "requests_remaining": 97
  }
}
namestring

The normalised name that was checked (lowercased, sanitised).

resultsobject[]

One entry per platform checked, in the order returned.

results[].platformstring — Platform name (e.g. "Instagram")
results[].statusstring — One of:
availabletakenunknown

unknown means the check timed out or the platform returned an ambiguous response. Retry the request, or check manually.

results[].handlestring — The handle string for that platform (e.g. "@acme" or "acme.substack.com")
metaobject

Request metadata.

meta.checkedint — Number of platforms checked
meta.elapsed_msint — Total check duration in milliseconds
meta.requests_remainingint — Remaining requests today for this key

The response headers also include X-RateLimit-Limit and X-RateLimit-Remaining.

Rate Limits

Daily limit

100 req / day

Per API key

Reset

Midnight UTC

Every 24 hours

Concurrency

Unlimited

Parallel calls OK

When the limit is reached the API returns 429. Monitor meta.requests_remaining in each response to track usage. Generating multiple API keys spreads your limit across keys independently.

Error Codes

StatusErrorDescription
400name is requiredMissing or empty name field in request body
400Invalid nameName contains no valid characters after sanitisation
400No valid platformsplatforms array was provided but contains no recognised names
401Invalid API key formatKey doesn't start with nc_live_
401Invalid or revoked API keyKey not found or has been revoked
403API access requires a Business planKey is valid but owner's subscription is not active Business
405Method not allowedOnly POST is accepted
429Daily rate limit reached100 req/day limit hit. Resets at midnight UTC.
500Internal errorServer-side failure. Retry after a short wait.

Rate limit error response example:

json
{
  "error": "Daily rate limit reached (100 requests/day). Resets at midnight UTC.",
  "limit": 100,
  "used": 100
}

Auth error response example:

json
{
  "error": "Invalid or revoked API key"
}

curl Examples

Check all 15 platforms

bash
curl -X POST \
  https://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query \
  -H "Authorization: Bearer nc_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "acme"}'

Check specific platforms only

bash
curl -X POST \
  https://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query \
  -H "Authorization: Bearer nc_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme",
    "platforms": ["Instagram", "GitHub", "X / Twitter"]
  }'

JavaScript / TypeScript

javascript
const response = await fetch(
  'https://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer nc_live_YOUR_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ name: 'acme' }),
  }
);

const data = await response.json();
// data.results → array of { platform, status, handle }
const available = data.results
  .filter(r => r.status === 'available')
  .map(r => r.platform);

console.log('Available on:', available);

Python

Install requests with pip install requests

python
import requests

response = requests.post(
    'https://oxmpzqoioetwxdpwiwmx.supabase.co/functions/v1/api-query',
    headers={
        'Authorization': 'Bearer nc_live_YOUR_KEY',
        'Content-Type': 'application/json',
    },
    json={'name': 'acme'},
)

data = response.json()
for result in data['results']:
    icon = '✅' if result['status'] == 'available' else '❌'
    print(f"{icon} {result['platform']}: {result['handle']}")

Supported Platforms

Use these exact strings in the platforms array. Values are case-sensitive.

Instagram
X / Twitter
TikTok
YouTube
LinkedIn
Facebook
GitHub
Snapchat
Pinterest
Threads
Telegram
Twitch
Medium
Substack
Product Hunt

Ready to integrate?

Get a Business plan to unlock API access. Generate up to 5 keys, each with 100 requests/day.