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.