Guide

Get your first API key

The shortest path from discovery to your first authenticated request.

1. Check coverage first

Confirm available metros and compare monthly versus annual pricing before you request access or purchase anything.

curl

curl https://smartapis.net/v1/coverage/regions
curl https://smartapis.net/v1/billing/plans

2. Claim a first key after checkout

Self-serve customers should prefer the post-checkout claim flow on the pricing page. Admin keys remain the operator fallback for control-plane tasks.

curl

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "cs_live_or_test_xxx",
    "key_label": "first-client-key",
    "scopes": ["places:read","products:read","regulatory:read"]
  }' \
  https://smartapis.net/v1/public/claim-checkout-session

curl (admin fallback)

curl -X POST \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $SMARTAPIS_ADMIN_KEY" \
  -d '{"label":"first-client-key","scopes":["places:read","products:read","regulatory:read"]}' \
  https://smartapis.net/v1/organizations/me/api-keys

Python

import json, os, urllib.request

payload = json.dumps({
    "label": "first-client-key",
    "scopes": ["places:read", "products:read", "regulatory:read"],
}).encode("utf-8")
request = urllib.request.Request(
    "https://smartapis.net/v1/organizations/me/api-keys",
    data=payload,
    headers={
        "Content-Type": "application/json",
        "X-API-Key": os.environ["SMARTAPIS_ADMIN_KEY"],
    },
    method="POST",
)
with urllib.request.urlopen(request, timeout=30) as resp:
    print(resp.read().decode("utf-8"))

3. Use the returned raw key

The `raw_key` is only returned once, so use it immediately and store it securely.

curl

curl -H "X-API-Key: $SMARTAPIS_API_KEY" \
  "https://smartapis.net/v1/places/search?region_id=new-york-city&q=pizza&limit=3"

JavaScript

const response = await fetch(
  'https://smartapis.net/v1/places/search?region_id=new-york-city&q=pizza&limit=3',
  { headers: { 'X-API-Key': process.env.SMARTAPIS_API_KEY } }
);
console.log(await response.json());

Next good reads: Places V2, Products watch, and Regulatory watch.