API Reference
Complete REST API for AI agents and developers. Browse public data with read-only keys, or manage listings and subscriptions with write keys.
Authentication
All API requests require an API key passed in the Authorization header. There are two types of keys:
Access public data: listings, articles, categories, cities. Anyone can generate one — no login required.
Full partner operations: create listings, manage clients, purchase subscriptions. Requires an active Marketing Agent account.
# Pass your API key in the Authorization header
curl -H "Authorization: Bearer id_your_key_here" \
https://intelldirectories.com/api/v1/listingsRate limit: 30 requests per hour per key. Rate limit headers are included in every response.
Key Management
/api/v1/api-keysGenerate a read-only API key (3 per day per IP)
/api/v1/api-keys/writeGenerate a write API key (requires active Marketing Agent)
/api/v1/api-keysList your API keys
/api/v1/api-keysRevoke an API key
Read Endpoints
Public data accessible with any API key (read-only or write).
/api/v1/listingsSearch and list business listings
/api/v1/listings/{id}Get full listing details with articles and reviews
/api/v1/articlesList published articles
/api/v1/articles/{slug}Get article with full content
/api/v1/categoriesList all categories with listing counts
/api/v1/citiesList all cities with listing counts
Example: Search Listings
curl -H "Authorization: Bearer id_xxx" \
"https://intelldirectories.com/api/v1/listings?q=restaurant&city=London&limit=10"
# Response:
{
"data": [
{
"id": "uuid",
"businessName": "The Italian Kitchen",
"category": "Restaurants",
"city": "London",
"slug": "the-italian-kitchen-london",
"rating": 4.5,
...
}
],
"meta": { "total": 42, "page": 1, "limit": 10, "totalPages": 5 }
}Write Endpoints — Listings
Manage listings and client accounts. Requires a write key (idw_xxx).
/api/v1/listingsCreate listing + client account (3-day free trial)
/api/v1/listings/mineList your partner's listings with subscription status
/api/v1/listings/{id}Update listing details (businessName, websiteUrl, city, category, phone, address)
/api/v1/listings/{id}Deactivate a listing (soft delete)
Example: Create a Listing
curl -X POST -H "Authorization: Bearer idw_xxx" \
-H "Content-Type: application/json" \
-d '{
"clientName": "John Smith",
"clientEmail": "[email protected]",
"businessName": "Smith Bakery",
"websiteUrl": "https://smithbakery.com",
"city": "Amsterdam",
"category": "Bakeries"
}' \
https://intelldirectories.com/api/v1/listings
# Response (201):
{
"data": {
"userId": "uuid",
"listingId": "uuid",
"clientEmail": "[email protected]",
"temporaryPassword": "Abc123xyz",
"trialEndsAt": "2026-02-19T12:00:00.000Z",
"upgradeLink": "https://intelldirectories.com/upgrade/uuid"
}
}Write Endpoints — Partner
/api/v1/partner/profileGet your partner profile and dashboard stats
/api/v1/partner/pricingUpdate pricing tiers (must be >= base price)
Payment Methods & Subscriptions
Save a payment method to enable auto-charging when purchasing subscriptions via the API. You pay the base price (wholesale) per tier.
/api/v1/payment-methods/setupCreate Stripe SetupIntent to save a card
/api/v1/payment-methods/confirmConfirm and save payment method as default
/api/v1/payment-methodsList saved payment methods
/api/v1/payment-methods/{id}Remove a saved payment method
/api/v1/subscriptionsPurchase/upgrade subscription (auto-charges saved card)
Pricing
Tier 1: Starter
25 EUR
5 articles/month
Tier 2: Professional
50 EUR
15 articles/month
Tier 3: Enterprise
80 EUR
30 articles/month
Example: Purchase Subscription
curl -X POST -H "Authorization: Bearer idw_xxx" \
-H "Content-Type: application/json" \
-d '{ "listingId": "uuid", "tier": 2 }' \
https://intelldirectories.com/api/v1/subscriptions
# Response (201):
{
"data": {
"listingId": "uuid",
"tier": 2,
"planName": "Professional",
"articlesPerMonth": 15,
"status": "ACTIVE",
"amountCharged": 50,
"currency": "EUR",
"stripePaymentIntentId": "pi_xxx"
}
}Error Codes
| Status | Meaning |
|---|---|
| 401 | Invalid or missing API key |
| 402 | Payment required or failed (no saved card, card declined) |
| 403 | Read-only key on write endpoint, or inactive partner |
| 404 | Resource not found or not owned by your account |
| 409 | Conflict (duplicate email, already active subscription) |
| 429 | Rate limit exceeded (30 req/hour) |