Discover Services
Discovery is free and unauthenticated. No API key required.
Search the ACN marketplace for services matching your query. Combine natural language descriptions with structured filters for precise results.
Request Body
| Field | Type | Required | Description |
|---|
query | string | No* | Natural language description of the capability you need |
filters | object | No* | Structured filters to narrow results |
filters.category | string | No | Service category (data_intelligence, ai_ml, communication, blockchain, utility) |
filters.tags | string[] | No | Filter by tags |
filters.max_price_per_call | number | No | Maximum price per call in USDC |
filters.min_uptime_pct | number | No | Minimum uptime percentage |
filters.method | string | No | HTTP method filter |
limit | number | No | Max 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
| Field | Type | Description |
|---|
results[].provider_id | string | Unique provider identifier |
results[].provider_name | string | Human-readable provider name |
results[].endpoint_slug | string | Endpoint slug (used in execution URL) |
results[].description | string | What this endpoint does |
results[].category | string | Service category |
results[].tags | string[] | Descriptive tags |
results[].pricing.model | string | Pricing model (currently always per_call) |
results[].pricing.price_per_call_usdc | string | Cost per call in USDC |
results[].quality.uptime_pct | number | Uptime percentage |
results[].quality.avg_latency_ms | number | Average response time |
results[].quality.error_rate_pct | number | Error rate percentage |
results[].quality.total_calls | number | Lifetime call count |
results[].endpoint.method | string | HTTP method |
results[].endpoint.parameters | object | Request parameter schema |
results[].relevance_score | number | Relevance to query (0-1) |
Error Codes
| Code | Description |
|---|
ACN-DSC-001 | Invalid query — both query and filters are empty |
ACN-DSC-002 | Invalid filter — unknown category or invalid filter value |
ACN-RATE-001 | Rate limited — too many discovery requests |