Back to API Overview

[ NSNodes API ]

Public read-only API for accessing societies and events data.

Authentication

All API endpoints require authentication. Provide your API key using one of:

  • Authorization: Bearer <your-api-key> header
  • X-API-Key: <your-api-key> header
# Using Authorization header
curl -H "Authorization: Bearer sk_live_xxx" \
  "https://nsnodes.com/api/v1/societies"

# Using X-API-Key header
curl -H "X-API-Key: sk_live_xxx" \
  "https://nsnodes.com/api/v1/societies"

GET /api/v1/societies

List network state societies with pagination, filtering, and search.

Query Parameters

ParameterTypeDefaultDescription
limitinteger20Number of items to return (max: 100)
offsetinteger0Number of items to skip
typestring-Filter by type: Physical, Online, Popup, Decentralized
tierinteger-Filter by tier (1-5, where 1 is highest)
categorystring-Filter by category
searchstring-Search in name and URL
sort_bystringnameSort field: name, tier, updated_at, founded
sort_orderstringascSort order: asc, desc

Example Request

curl -H "Authorization: Bearer sk_live_xxx" \
  "https://nsnodes.com/api/v1/societies?type=Physical&tier=1&limit=10"

Example Response

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "name": "Example Society",
      "url": "https://example.com",
      "type": "Physical",
      "tier": 1,
      "mission": "Building the future...",
      "location": "San Francisco, CA",
      "category": "Startup City",
      "founded": "2023",
      "icon_url": "https://...",
      "social": [
        { "key": "x", "value": "https://x.com/example" },
        { "key": "discord", "value": "https://discord.gg/xxx" }
      ],
      "application_url": "https://example.com/apply",
      "updated_at": "2025-01-27T12:00:00Z"
    }
  ],
  "meta": {
    "pagination": {
      "limit": 10,
      "offset": 0,
      "total": 50,
      "has_more": true
    }
  }
}

GET /api/v1/events

List events with pagination, filtering, and search.

Query Parameters

ParameterTypeDefaultDescription
limitinteger20Number of items to return (max: 100)
offsetinteger0Number of items to skip
start_afterISO datetime-Filter events starting after this time
start_beforeISO datetime-Filter events starting before this time
citystring-Filter by city (partial match)
countrystring-Filter by country (partial match)
sourcestring-Filter by source: luma, soladay
statusstring-Filter by status: scheduled, tentative, cancelled
tagsstring-Filter by tags (comma-separated)
searchstring-Search in title and description
sort_bystringstart_atSort field: start_at, end_at, title
sort_orderstringascSort order: asc, desc

Example Request

curl -H "Authorization: Bearer sk_live_xxx" \
  "https://nsnodes.com/api/v1/events?city=London&start_after=2025-02-01T00:00:00Z"

Example Response

{
  "success": true,
  "data": [
    {
      "id": "uuid",
      "title": "Network States Meetup",
      "description": "Join us for...",
      "start_at": "2025-02-15T18:00:00Z",
      "end_at": "2025-02-15T21:00:00Z",
      "timezone": "Europe/London",
      "location": {
        "venue_name": "The Example Venue",
        "address": "123 Example St",
        "city": "London",
        "country": "United Kingdom",
        "lat": 51.5074,
        "lng": -0.1278
      },
      "source": "luma",
      "source_url": "https://lu.ma/xxx",
      "organizers": [{ "name": "Network School" }],
      "tags": ["meetup", "networking"],
      "image_url": "https://...",
      "status": "scheduled",
      "updated_at": "2025-01-27T12:00:00Z"
    }
  ],
  "meta": {
    "pagination": {
      "limit": 20,
      "offset": 0,
      "total": 100,
      "has_more": true
    }
  }
}

Error Responses

All error responses follow the same format:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message"
  }
}

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Invalid or missing API key
DATABASE_ERROR500Database query failed
SERVER_ERROR500Unexpected server error

Need API Access?

Contact us to get your API key.

Contact Us