Skip to main content

Discover Services

Discovery is free and unauthenticated. No API key required.
POST /v1/discover
Search the ACN marketplace for services matching your query. Combine natural language descriptions with structured filters for precise results.

Request Body

FieldTypeRequiredDescription
querystringNo*Natural language description of the capability you need
filtersobjectNo*Structured filters to narrow results
filters.categorystringNoService category (data_intelligence, ai_ml, communication, blockchain, utility)
filters.tagsstring[]NoFilter by tags
filters.max_price_per_callnumberNoMaximum price per call in USDC
filters.min_uptime_pctnumberNoMinimum uptime percentage
filters.methodstringNoHTTP method filter
limitnumberNoMax results to return (default: 10, max: 50)
At least one of query or filters must be provided.

Example: Natural Language Query

curl -X POST https://api.acn.exchange/v1/discover \
  -H "Content-Type: application/json" \
  -d '{
    "query": "get the current price of any cryptocurrency in USD"
  }'

Example: With Filters

curl -X POST https://api.acn.exchange/v1/discover \
  -H "Content-Type: application/json" \
  -d '{
    "query": "send transactional emails",
    "filters": {
      "category": "communication",
      "max_price_per_call": 0.01,
      "min_uptime_pct": 99.5
    },
    "limit": 5
  }'

Example: Filters Only

curl -X POST https://api.acn.exchange/v1/discover \
  -H "Content-Type: application/json" \
  -d '{
    "filters": {
      "category": "blockchain",
      "tags": ["ethereum", "nft"]
    }
  }'

Response

{
  "results": [
    {
      "provider_id": "coingecko",
      "provider_name": "CoinGecko",
      "endpoint_slug": "get-price",
      "description": "Get current cryptocurrency prices in any fiat or crypto denomination",
      "category": "data_intelligence",
      "tags": ["crypto", "prices", "market-data"],
      "pricing": {
        "model": "per_call",
        "price_per_call_usdc": "0.001"
      },
      "quality": {
        "uptime_pct": 99.8,
        "avg_latency_ms": 120,
        "error_rate_pct": 0.2,
        "total_calls": 50420
      },
      "endpoint": {
        "method": "POST",
        "parameters": {
          "ids": {
            "type": "string",
            "required": true,
            "description": "Comma-separated coin IDs (e.g., 'bitcoin,ethereum')"
          },
          "vs_currencies": {
            "type": "string",
            "required": true,
            "description": "Comma-separated target currencies (e.g., 'usd,eur')"
          }
        }
      },
      "relevance_score": 0.97
    }
  ],
  "meta": {
    "request_id": "req_abc123",
    "total_results": 1,
    "query_time_ms": 145
  }
}

Response Fields

FieldTypeDescription
results[].provider_idstringUnique provider identifier
results[].provider_namestringHuman-readable provider name
results[].endpoint_slugstringEndpoint slug (used in execution URL)
results[].descriptionstringWhat this endpoint does
results[].categorystringService category
results[].tagsstring[]Descriptive tags
results[].pricing.modelstringPricing model (currently always per_call)
results[].pricing.price_per_call_usdcstringCost per call in USDC
results[].quality.uptime_pctnumberUptime percentage
results[].quality.avg_latency_msnumberAverage response time
results[].quality.error_rate_pctnumberError rate percentage
results[].quality.total_callsnumberLifetime call count
results[].endpoint.methodstringHTTP method
results[].endpoint.parametersobjectRequest parameter schema
results[].relevance_scorenumberRelevance to query (0-1)

Error Codes

CodeDescription
ACN-DSC-001Invalid query — both query and filters are empty
ACN-DSC-002Invalid filter — unknown category or invalid filter value
ACN-RATE-001Rate limited — too many discovery requests