Skip to main content

Overview

The catalog endpoints let you discover what’s available on the Dancity platform before initiating any purchase. Always fetch catalog data dynamically — identifiers (plan IDs, product names) can change over time. The catalog has three levels:
LevelEndpointWhat it returns
ServicesGET /api/v1/servicesTop-level service categories (e.g., Airtime, Data, Cable TV)
ProductsGET /api/v1/productsSpecific providers within a service (e.g., MTN, DSTV)
PlansGET /api/v1/plans/data, .../cable, .../internetIndividual purchase options with prices

Authentication

All catalog endpoints use your merchant API key only.
Authorization: Bearer dcy_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Get services

GET /api/v1/services
Returns all service categories.
curl -sS "https://api.dancity.app/api/v1/services" \
  -H "Authorization: Bearer $DANCITY_API_KEY"

Get products

GET /api/v1/products
Returns products (providers/operators) within a service. Filter by service name to get only the products you need.
Query paramTypeDescription
servicestringService name from GET /api/v1/services (e.g. Airtime, Data)
# All airtime products
curl -sS "https://api.dancity.app/api/v1/products?service=AIRTIME" \
  -H "Authorization: Bearer $DANCITY_API_KEY"

Get data plans

GET /api/v1/plans/data
Returns data plans for purchase. Each plan includes a planId — pass that value as plan in POST /api/v1/data/buy.
FieldDescription
_idInternal Mongo id
productProduct name (e.g. MTN GIFTING)
planData size (e.g. 40MB, 1GB)
pricePrice in NGN
validityValidity period (e.g. 1 Day, 30 days)
planIdSend this to buy — e.g. 40GB_MTN_GIFTING_1Day
Query paramTypeDescription
productstringProduct name from GET /api/v1/products (e.g. MTN GIFTING, GLO GIFTING). Spaces, underscores, and hyphens all work: MTN GIFTING, MTN_GIFTING, MTN-GIFTING.
curl -sS "https://api.dancity.app/api/v1/plans/data?product=MTN%20GIFTING" \
  -H "Authorization: Bearer $DANCITY_API_KEY"

Get cable plans

GET /api/v1/plans/cable
Returns cable TV subscription plans. Each item includes a planId — pass that as cableplan in POST /api/v1/cable/buy.
FieldDescription
_idInternal Mongo id
productCable provider (e.g. GOTV, DSTV)
planPackage name (e.g. GOtv Supa Plus - monthly N16,800)
pricePrice in NGN
planIdSend this to buy — e.g. GOtv_Supa_monthly_N11_400
How planId is built: slugified package name. If the package already includes the brand (e.g. GOtv Supa), the product is not repeated — GOtv_Supa_monthly_N11_400. For packages without the brand, the product is appended: Nova_monthly_Startimes. Examples:
  • GOtv Supa Plus - monthly N16,800 + GOTVGOtv_Supa_Plus_monthly_N16_800
  • GOtv Max + GOTVGOtv_Max
Query paramTypeDescription
productstringProduct name from GET /api/v1/products (e.g. DSTV, GOTV, Startimes).
curl -sS "https://api.dancity.app/api/v1/plans/cable?product=GOTV" \
  -H "Authorization: Bearer $DANCITY_API_KEY"

Catalog data (services, products, plans) doesn’t change frequently, but prices and availability can. We recommend:
  • Cache catalog responses for 15–60 minutes in production
  • Re-fetch on cache miss or user-initiated refresh
  • Never hard-code plan IDs — always resolve them from the catalog at runtime
Use the product name returned from /products as the product field in buy requests (e.g. "MTN Airtime", "MTN-Airtime", or "MTN_Airtime"). Use the plan _id as the plan field for data/internet purchases.

Next steps