API Documentation
Programmatic access to microCafe's genomic sequence classification models.
Getting Access
API access is available for academic institutions, research labs, and enterprise teams. To request an API key, contact our team at api@microcafe.ai or fill out the access request form.
We’ll follow up within 1–2 business days to discuss your use case, expected volume, and appropriate tier.
Authentication
All API requests require an API key passed in the X-API-Key request header.
X-API-Key: mc_your_api_key_here
Base URL
https://microcafe.ai/api/v1
Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST |
/classify/genus |
Classify a single DNA sequence to genus level |
POST |
/classify/genus/batch |
Classify multiple sequences (max 100 per request) |
POST |
/classify/genus/file |
Upload a FASTA/FASTQ file (max 10MB, 100 sequences) |
Single Sequence Classification
cURL
curl -X POST "https://microcafe.ai/api/v1/classify/genus" \
-H "X-API-Key: mc_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"sequence": "ATCGATCGATCG...",
"top_k": 5
}'
Python
import requests
API_KEY = "mc_your_api_key_here"
BASE_URL = "https://microcafe.ai/api/v1"
response = requests.post(
f"{BASE_URL}/classify/genus",
headers={"X-API-Key": API_KEY},
json={
"sequence": "ATCGATCGATCG...",
"top_k": 5
}
)
result = response.json()
print(result["data"]["predictions"])
Response
{
"data": {
"predictions": [
{"genus": "Bacteroides", "confidence": 0.92},
{"genus": "Prevotella", "confidence": 0.05},
{"genus": "Parabacteroides", "confidence": 0.02}
],
"sequence_length": 250,
"model_version": "glm-genus-v1.0"
},
"meta": {
"request_id": "req_abc123",
"processing_time_ms": 45
}
}
Batch Classification
Classify up to 100 sequences in a single request.
Python
import requests
API_KEY = "mc_your_api_key_here"
BASE_URL = "https://microcafe.ai/api/v1"
response = requests.post(
f"{BASE_URL}/classify/genus/batch",
headers={"X-API-Key": API_KEY},
json={
"sequences": [
"ATCGATCGATCG...",
"GCTAGCTAGCTA...",
"TTAACCGGTTAA..."
],
"top_k": 3
}
)
result = response.json()
for i, item in enumerate(result["data"]["results"]):
print(f"Sequence {i}: {item['predictions']}")
File Upload
Upload a FASTA or FASTQ file directly for bulk classification.
Supported formats: .fasta, .fa, .fastq, .fq
Limits: Max 10MB · Max 100 sequences
cURL
curl -X POST "https://microcafe.ai/api/v1/classify/genus/file" \
-H "X-API-Key: mc_your_api_key_here" \
-F "file=@sequences.fasta" \
-F "top_k=5"
Python
import requests
API_KEY = "mc_your_api_key_here"
BASE_URL = "https://microcafe.ai/api/v1"
with open("sequences.fasta", "rb") as f:
response = requests.post(
f"{BASE_URL}/classify/genus/file",
headers={"X-API-Key": API_KEY},
files={"file": ("sequences.fasta", f, "text/plain")},
data={"top_k": 5}
)
result = response.json()
for item in result["data"]["results"]:
print(f"{item['sequence_id']}: {item['predictions']}")
Response
{
"data": {
"results": [
{
"sequence_id": "seq_001",
"sequence_length": 250,
"predictions": [
{"genus": "Bacteroides", "confidence": 0.92},
{"genus": "Prevotella", "confidence": 0.05}
]
},
{
"sequence_id": "seq_002",
"sequence_length": 180,
"predictions": [
{"genus": "Lactobacillus", "confidence": 0.88}
]
}
],
"model_version": "glm-genus-v1.0",
"file_name": "sequences.fasta",
"total_sequences": 2,
"successful": 2,
"failed": 0
},
"meta": {
"request_id": "req_xyz789",
"processing_time_ms": 120
}
}
Rate Limits
Default limits are applied per API key. Higher limits are available on enterprise plans.
| Limit | Default |
|---|---|
| Requests per minute | 60 |
| Requests per day | 10,000 |
Rate limit status is returned in response headers:
X-RateLimit-Remaining-Minute: 58
Error Codes
| Code | Meaning |
|---|---|
400 |
Bad Request — Invalid sequence or parameters |
401 |
Unauthorized — Missing or invalid API key |
403 |
Forbidden — Insufficient permissions |
429 |
Too Many Requests — Rate limit exceeded |
500 |
Server Error — Try again later |
Support
For questions, integration help, or to request increased limits, reach out at api@microcafe.ai.