Skip to Content
MiCA API Reference

MiCA API Reference

Technical documentation for integrating VINCTA’s MiCA compliance automation into your crypto asset service platform.

Authentication

All API requests require authentication using your VINCTA API key.

const headers = { 'Authorization': `Bearer ${YOUR_API_KEY}`, 'Content-Type': 'application/json' };

Obtaining API Credentials:

  • Contact support@vincta.io to obtain your API key
  • API keys are organization-specific and should be kept secure
  • Store API keys in environment variables, never in code
  • Rotate API keys regularly (recommended: every 90 days)

Example Request:

const response = await fetch('https://api.vincta.io/api/mica/evaluate', { method: 'POST', headers: { 'Authorization': `Bearer sk_live_abc123def456`, 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: 'your-client-id', trigger_type: 'transaction', trigger_entity_type: 'transaction', trigger_entity_id: 'tx-001', data: { /* ... */ } }) });

Rule Evaluation API

Evaluate Transaction

Evaluate a transaction against all applicable MiCA rules in real-time.

Endpoint: POST /api/mica/evaluate

Request Body:

{ client_id: string; // Your VINCTA client ID trigger_type: 'transaction' | 'wallet_screen' | 'travel_rule' | 'periodic' | 'manual'; trigger_entity_type?: string; // 'transaction', 'wallet', 'transfer', 'customer' trigger_entity_id?: string; // External ID for tracking data: { // Context-specific fields (see below) } }

Response:

{ rules_evaluated: number; // Total rules checked rules_triggered: number; // Rules that triggered evaluation_id: string; // Unique evaluation ID timestamp: string; // ISO 8601 timestamp (UTC) results: Array<{ rule_id: string; // e.g., 'MICA-CDD-002' rule_name: string; // Human-readable name triggered: boolean; // Did this rule trigger? result: 'pass' | 'fail' | 'alert' | 'block'; conditions_met: { [key: string]: boolean; // Each condition evaluated }; actions_to_execute: string[]; // Actions to take severity: 'low' | 'medium' | 'high' | 'critical'; }>; highest_severity: 'low' | 'medium' | 'high' | 'critical' | null; actions_required: string[]; // e.g., ['block_transaction', 'create_case'] should_block: boolean; // Block the transaction? should_alert: boolean; // Generate alert? should_create_case: boolean; // Create compliance case? }

Example Request:

const result = await fetch('https://api.vincta.io/api/mica/evaluate', { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: 'f249472f-610c-4d45-b462-cd114829f214', trigger_type: 'transaction', trigger_entity_type: 'transaction', trigger_entity_id: 'tx-20260101-001', data: { customer_verified: true, customer_id: 'cust-12345', customer_country: 'DE', amount_eur: 1500, amount_crypto: 0.05, transaction_type: 'send', full_cdd_complete: false, self_hosted_wallet: true, ownership_verified: false, address_validation_status: 'passed', multiple_identities_detected: false, suspicious_activity_detected: false } }) }).then(r => r.json());

Example Response:

{ "rules_evaluated": 6, "rules_triggered": 1, "evaluation_id": "eval-uuid-12345", "timestamp": "2026-01-01T10:30:00Z", "results": [ { "rule_id": "MICA-CDD-002", "rule_name": "Full CDD Threshold", "triggered": true, "result": "block", "conditions_met": { "amount_eur_gte_1000": true, "full_cdd_complete": false }, "actions_to_execute": ["block_transaction", "create_case"], "severity": "high" }, { "rule_id": "MICA-CDD-001", "rule_name": "Identity Verification Required", "triggered": false, "result": "pass", "conditions_met": { "customer_verified": true }, "actions_to_execute": [], "severity": "critical" } ], "highest_severity": "high", "actions_required": ["block_transaction", "create_case"], "should_block": true, "should_alert": false, "should_create_case": true }

Evaluation Contexts

Transaction Context

For evaluating customer transactions (trigger_type: 'transaction').

Used for: CDD rules (MICA-CDD-001 through MICA-CDD-006)

Request:

{ client_id: string; trigger_type: 'transaction'; trigger_entity_type: 'transaction'; trigger_entity_id: string; // Unique transaction ID data: { // Customer fields customer_verified?: boolean; // Customer identity verified? customer_id?: string; // Unique customer identifier customer_country?: string; // ISO 3166-1 alpha-2 code // Transaction fields amount_eur?: number; // Transaction amount in EUR amount_crypto?: number; // Transaction amount in crypto transaction_type?: string; // 'send', 'receive', 'trade' // CDD fields full_cdd_complete?: boolean; // Full CDD completed? cdd_completion_date?: string; // ISO 8601 date // Wallet fields self_hosted_wallet?: boolean; // Is it self-hosted? ownership_verified?: boolean; // Ownership verified? wallet_address?: string; // Blockchain address // Address fields address_validation_status?: string; // 'passed', 'failed', 'pending' // Risk fields multiple_identities_detected?: boolean; suspicious_activity_detected?: boolean; } }

Complete Example:

const result = await evaluateMicaRules({ client_id: 'f249472f-610c-4d45-b462-cd114829f214', trigger_type: 'transaction', trigger_entity_type: 'transaction', trigger_entity_id: 'tx-20260101-001', data: { customer_verified: true, customer_id: 'cust-12345', customer_country: 'DE', amount_eur: 1500, amount_crypto: 0.05, transaction_type: 'send', full_cdd_complete: false, cdd_completion_date: '2025-12-15', self_hosted_wallet: true, ownership_verified: false, wallet_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f42bE', address_validation_status: 'passed', multiple_identities_detected: false, suspicious_activity_detected: false } });

Wallet Screening Context

For evaluating wallet risk profiles (trigger_type: 'wallet_screen').

Used for: Wallet screening rules (coming in Week 4)

Request:

{ client_id: string; trigger_type: 'wallet_screen'; trigger_entity_type: 'wallet'; trigger_entity_id: string; // Wallet address data: { wallet_address: string; // Blockchain wallet address blockchain: string; // 'bitcoin', 'ethereum', etc. wallet_risk_score?: number; // 0-100 risk score wallet_risk_level?: string; // 'low', 'medium', 'high', 'critical' associated_exchanges?: string[]; // Known exchange addresses associated_sanctions?: boolean; // Sanctioned entity exposure? associated_darknet?: boolean; // Darknet marketplace exposure? transaction_history_length?: number; // Days of transaction history transaction_frequency?: number; // Transactions per day self_hosted_wallet?: boolean; // Is it self-hosted? ownership_verified?: boolean; // Ownership verified? } }

Example:

const result = await evaluateMicaRules({ client_id: 'f249472f-610c-4d45-b462-cd114829f214', trigger_type: 'wallet_screen', trigger_entity_type: 'wallet', trigger_entity_id: '0x742d35Cc6634C0532925a3b844Bc9e7595f42bE', data: { wallet_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f42bE', blockchain: 'ethereum', wallet_risk_score: 45, wallet_risk_level: 'medium', associated_exchanges: ['0x1111111254fb6c44bac0bed2854e76f90643097d'], associated_sanctions: false, associated_darknet: false, transaction_history_length: 180, transaction_frequency: 2.5, self_hosted_wallet: true, ownership_verified: false } });

Travel Rule Context

For evaluating cross-border transfers (trigger_type: 'travel_rule').

Used for: Travel Rule validation rules (coming in Week 4)

Request:

{ client_id: string; trigger_type: 'travel_rule'; trigger_entity_type: 'transfer'; trigger_entity_id: string; // Transfer ID data: { transfer_id: string; // Unique transfer identifier direction: 'outbound' | 'inbound'; // Transfer direction amount_eur: number; // Transfer amount in EUR amount_crypto: number; // Transfer amount in crypto // Originator information originator_name?: string; // Full name originator_customer_id?: string; // Customer ID originator_country?: string; // ISO 3166-1 alpha-2 originator_wallet_address?: string; // Wallet address // Beneficiary information beneficiary_name?: string; // Full name beneficiary_customer_id?: string; // Customer ID (if internal) beneficiary_country?: string; // ISO 3166-1 alpha-2 beneficiary_wallet_address?: string; // Wallet address // Transfer details transfer_type: 'internal' | 'external'; // Internal or external transfer data_completeness: 'complete' | 'partial' | 'missing'; self_hosted_wallet: boolean; // Destination is self-hosted? ownership_verified?: boolean; // Ownership verified? } }

Example:

const result = await evaluateMicaRules({ client_id: 'f249472f-610c-4d45-b462-cd114829f214', trigger_type: 'travel_rule', trigger_entity_type: 'transfer', trigger_entity_id: 'tr-20260101-001', data: { transfer_id: 'tr-20260101-001', direction: 'outbound', amount_eur: 15000, amount_crypto: 0.5, originator_name: 'John Doe', originator_customer_id: 'cust-12345', originator_country: 'DE', originator_wallet_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f42bE', beneficiary_name: 'Jane Smith', beneficiary_country: 'FR', beneficiary_wallet_address: '0x8ba1f109551bD432803012645Ac136ddd64DBA72', transfer_type: 'external', data_completeness: 'complete', self_hosted_wallet: false, ownership_verified: true } });

Periodic Review Context

For periodic compliance reviews (trigger_type: 'periodic').

Used for: Governance rules (MICA-GOV-001 through MICA-GOV-004)

Request:

{ client_id: string; trigger_type: 'periodic'; trigger_entity_type: 'governance' | 'customer'; trigger_entity_id: string; data: { // Governance fields compliance_officer_board_access_documented?: boolean; third_party_oversight_active?: boolean; days_since_last_review?: number; days_since_last_training?: number; // Customer review fields customer_id?: string; days_since_last_cdd_review?: number; risk_profile_changed?: boolean; } }

Response Handling

When should_block = true

Action Required: Block the transaction immediately.

if (result.should_block) { // Step 1: Block transaction await blockTransaction(transactionId); // Step 2: Log to audit trail (automatic) // Engine automatically logs to mica_rule_evaluations table // Step 3: Notify compliance team await notifyCompliance({ type: 'transaction_blocked', evaluation_id: result.evaluation_id, rules_triggered: result.results .filter(r => r.result === 'block') .map(r => r.rule_id), transaction_id: transactionId, severity: result.highest_severity }); // Step 4: Return error to customer return { success: false, message: 'Transaction blocked by compliance rules', reference: transactionId, contact: 'support@yourcompany.com' }; }

Compliance Officer Actions:

  1. Review evaluation details in dashboard
  2. Investigate reason for block
  3. Request additional documentation if needed
  4. Approve or reject transaction
  5. Document decision in case file

SLA: 24 hours to review and respond

When should_alert = true

Action Required: Generate alert for compliance review.

if (result.should_alert) { // Step 1: Create alert in compliance system const alert = { id: generateUUID(), evaluation_id: result.evaluation_id, type: 'compliance_alert', severity: result.highest_severity, rules_triggered: result.results .filter(r => r.triggered) .map(r => r.rule_id), customer_id: customerId, transaction_id: transactionId, created_at: new Date(), assigned_to: 'compliance_team' }; // Step 2: Store alert in database await supabaseAdmin .from('compliance_alerts') .insert([alert]); // Step 3: Send notification await sendAlert({ recipient: 'compliance_team@company.com', subject: `Compliance Alert: ${result.rules_triggered.join(', ')}`, body: `Rules triggered: ${result.rules_triggered.join(', ')}\nSeverity: ${result.highest_severity}\nEvaluation ID: ${result.evaluation_id}`, evaluation_id: result.evaluation_id }); // Step 4: Allow transaction to proceed (unless also blocked) if (!result.should_block) { await processTransaction(transactionId); } }

Compliance Officer Actions:

  1. Review alert in dashboard
  2. Investigate underlying issue
  3. Determine if additional action needed
  4. Close alert or escalate to case
  5. Document findings

SLA:

  • Critical: 4 hours
  • High: 24 hours
  • Medium: 48 hours
  • Low: 5 business days

When should_create_case = true

Action Required: Create compliance case for investigation.

if (result.should_create_case) { // Step 1: Create compliance case const complianceCase = { id: generateUUID(), evaluation_id: result.evaluation_id, type: 'compliance_investigation', status: 'open', severity: result.highest_severity, rules_triggered: result.results .filter(r => r.triggered) .map(r => r.rule_id), customer_id: customerId, transaction_id: transactionId, created_at: new Date(), assigned_to: getNextAvailableOfficer(), due_date: addDays(new Date(), 5) // 5 business days }; // Step 2: Store case in database await supabaseAdmin .from('compliance_cases') .insert([complianceCase]); // Step 3: Assign to compliance officer await assignCase(complianceCase.id, complianceCase.assigned_to); // Step 4: Send notification await notifyComplianceOfficer({ case_id: complianceCase.id, rules_triggered: complianceCase.rules_triggered, priority: result.highest_severity, due_date: complianceCase.due_date, evaluation_id: result.evaluation_id }); // Step 5: Block transaction (if applicable) if (result.should_block) { throw new Error('Transaction blocked pending compliance review'); } }

Compliance Officer Actions:

  1. Review case details
  2. Gather additional evidence
  3. Interview customer if needed
  4. Determine if STR filing required
  5. Close case with findings
  6. Document all actions

Audit Trail Queries

Query the mica_rule_evaluations table for compliance reporting and BaFin audits.

Get All Evaluations for a Customer

SELECT rule_id, result, trigger_type, evaluated_at, transaction_blocked, alert_generated, conditions_met, actions_executed FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND trigger_entity_type = 'transaction' AND trigger_entity_id IN ( SELECT transaction_id FROM transactions WHERE customer_id = 'customer-123' ) ORDER BY evaluated_at DESC;

Get All Blocked Transactions (Last 30 Days)

SELECT rule_id, trigger_entity_id, evaluated_at, conditions_evaluated, conditions_met, actions_executed, severity FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND result = 'block' AND transaction_blocked = true AND evaluated_at >= NOW() - INTERVAL '30 days' ORDER BY evaluated_at DESC;
SELECT rule_id, trigger_entity_id, evaluated_at, conditions_met, actions_executed, severity FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND rule_id LIKE 'MICA-RPT%' AND result IN ('fail', 'alert', 'block') ORDER BY evaluated_at DESC;

Get CDD Rule Evaluations

SELECT rule_id, trigger_entity_id, evaluated_at, conditions_met, result, severity FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND rule_id LIKE 'MICA-CDD%' AND evaluated_at >= NOW() - INTERVAL '90 days' ORDER BY evaluated_at DESC;

Export for BaFin Audit

SELECT rule_id, trigger_type, trigger_entity_type, trigger_entity_id, result, conditions_evaluated, conditions_met, actions_executed, evaluated_at, transaction_blocked, alert_generated, severity, evaluation_id FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND evaluated_at BETWEEN '2024-01-01' AND '2024-12-31' ORDER BY evaluated_at ASC;

Count Rules Triggered by Type

SELECT rule_id, COUNT(*) as trigger_count, SUM(CASE WHEN result = 'block' THEN 1 ELSE 0 END) as blocks, SUM(CASE WHEN result = 'alert' THEN 1 ELSE 0 END) as alerts, AVG(CASE WHEN severity = 'critical' THEN 1 ELSE 0 END) as critical_rate FROM mica_rule_evaluations WHERE client_id = 'your-client-id' AND evaluated_at >= NOW() - INTERVAL '30 days' GROUP BY rule_id ORDER BY trigger_count DESC;

Wallet Screening API

Status: ✅ Production Ready

Automated wallet risk screening against sanctions lists, darknet exposure, and mixing services.

Endpoint: GET /api/mica/wallet-screening or POST /api/mica/wallet-screening

Features:

  • Sanctions list screening (OFAC, EU, UN)
  • Darknet marketplace detection
  • Mixing service exposure
  • Risk score calculation (0-100)
  • Transaction history analysis
  • Exchange association detection
  • Real-time risk assessment
  • 5-minute caching for performance

GET Request

Parameters:

  • wallet_address (required): Cryptocurrency wallet address
  • blockchain (required): ethereum, bitcoin, polygon, binance-smart-chain, solana

Example:

curl -H "Authorization: Bearer sk_live_abc123..." \ "https://app.vincta.io/api/mica/wallet-screening?wallet_address=0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb&blockchain=ethereum"

POST Request

Request Body:

{ "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "blockchain": "ethereum", "transaction_amount_eur": 5000, "originator_name": "John Doe", "beneficiary_name": "Jane Smith" }

Response

{ "risk_profile": { "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "blockchain": "ethereum", "risk_score": 85, "risk_category": "high", "sanctioned_exposure": 0, "darknet_exposure": 90, "mixer_exposure": 100, "last_activity_at": "2026-01-02T10:30:00Z" }, "rule_evaluation": { "rules_triggered": 2, "should_alert": true, "should_block": false, "actions": ["REVIEW"], "triggered_rules": [] } }

Performance

  • p50 Response Time: 85ms
  • p95 Response Time: 245ms
  • p99 Response Time: 380ms
  • Cached Response: 42ms (6.8x faster)
  • Cache Hit Rate: 72%
  • Success Rate: 98%

Travel Rule Validation API

Status: ✅ Production Ready

Automated Travel Rule compliance validation for cross-border crypto transfers.

Endpoint: POST /api/mica/travel-rule-validation

Features:

  • Originator/beneficiary verification
  • Cross-border transfer validation
  • Information completeness checking
  • Sanctions screening
  • Audit trail generation
  • Compliance reporting
  • Self-hosted wallet detection
  • CASP verification

Request

Request Body:

{ "transfer_id": "TRF-2026-001", "direction": "outbound", "amount_eur": 5000, "originator": { "name": "John Doe", "wallet_address": "0x123...", "geographic_address": "123 Main St, Berlin, Germany", "national_id": "DE123456789" }, "beneficiary": { "name": "Jane Smith", "wallet_address": "0x456...", "casp_name": "Example Exchange", "casp_lei": "123456789ABCDEFGHIJ12" } }

Response

{ "validation_result": { "transfer_id": "TRF-2026-001", "data_completeness": "complete", "required_fields": [], "self_hosted": false, "counterparty_verified": true }, "rule_evaluation": { "rules_triggered": 0, "should_alert": false, "should_block": false, "actions": ["ALLOW"] } }

Performance

  • p50 Response Time: 120ms
  • p95 Response Time: 310ms
  • p99 Response Time: 420ms
  • Cache Hit Rate: 68%
  • Success Rate: 96%

Production Infrastructure

Circuit Breaker Protection

All external vendor APIs (TRM Labs, Scorechain, NotaBene) are protected by circuit breakers to prevent cascading failures.

Circuit Breaker States:

  • CLOSED: Normal operation, requests pass through
  • OPEN: Vendor API unavailable, requests fail fast
  • HALF_OPEN: Testing recovery, limited requests allowed

Configuration:

  • Failure Threshold: 5 consecutive failures
  • Recovery Timeout: 30 seconds
  • Half-Open Requests: 1 test request per 30 seconds

Status Endpoint:

GET /api/mica/circuit-breaker/status

Response:

{ "breakers": { "trm_labs": { "state": "CLOSED", "failures": 0, "successes": 287, "last_failure": null }, "scorechain": { "state": "CLOSED", "failures": 0, "successes": 287, "last_failure": null }, "notabene": { "state": "CLOSED", "failures": 0, "successes": 287, "last_failure": null } } }

Caching Behavior

All wallet screening and travel rule validation results are cached for optimal performance.

Cache Configuration:

  • Wallet Screening TTL: 5 minutes (300 seconds)
  • Travel Rule TTL: 5 minutes (300 seconds)
  • Cache Key Format: {client_id}:{wallet_address}:{blockchain}
  • Cache Backend: Redis (distributed)
  • Eviction Policy: LRU (Least Recently Used)

Cache Performance:

  • Hit Rate: 68-75% typical
  • Hit Response Time: 42ms average
  • Miss Response Time: 285-310ms average
  • Speedup: 6.8x faster for cached requests

Cache Invalidation:

  • Automatic after TTL expires
  • Manual invalidation available via API (admin only)
  • Invalidation endpoint: POST /api/mica/cache/invalidate

Cache Stats Endpoint:

GET /api/mica/cache/stats

Response:

{ "wallet_screening": { "hit_rate": 0.72, "miss_rate": 0.28, "total_requests": 1247, "cache_size": 523, "memory_usage_mb": 4.2 }, "travel_rule": { "hit_rate": 0.68, "miss_rate": 0.32, "total_requests": 523, "cache_size": 287, "memory_usage_mb": 2.1 } }

Error Handling Patterns

Handling Circuit Breaker OPEN

When a circuit breaker is OPEN, the API returns a 503 Service Unavailable error:

{ "error": "Vendor API unavailable", "type": "VENDOR", "details": { "vendor": "trm_labs", "breaker_state": "OPEN", "retry_after": 30 }, "statusCode": 503 }

Recommended Action:

if (error.statusCode === 503 && error.type === 'VENDOR') { // Use cached data if available const cached = await getFromCache(wallet_address); if (cached) { return cached; } // Otherwise, wait and retry await sleep(error.details.retry_after * 1000); return retry(); }

Handling Rate Limiting

When rate limit is exceeded, the API returns a 429 Too Many Requests error:

{ "error": "Rate limit exceeded", "type": "RATE_LIMIT", "details": { "limit": 100, "remaining": 0, "reset_at": "2026-01-02T11:30:00Z" }, "statusCode": 429 }

Recommended Action:

if (error.statusCode === 429) { const resetTime = new Date(error.details.reset_at); const waitTime = resetTime.getTime() - Date.now(); // Implement exponential backoff await sleep(waitTime); return retry(); }

Handling Validation Errors

When request validation fails, the API returns a 400 Bad Request error:

{ "error": "Validation failed", "type": "VALIDATION", "details": { "errors": [ "wallet_address: Required", "blockchain: Must be one of: ethereum, bitcoin, polygon, binance-smart-chain, solana" ] }, "statusCode": 400 }

Recommended Action:

if (error.statusCode === 400 && error.type === 'VALIDATION') { // Fix validation errors and retry console.error('Validation errors:', error.details.errors); // Do not retry automatically - fix the request first }

Error Handling

Common Error Codes

CodeMeaningAction
400Invalid request bodyCheck request format and required fields
401UnauthorizedVerify API key is correct and not expired
404Client not foundCheck client_id is correct
429Rate limit exceededImplement exponential backoff
500Internal server errorContact support@vincta.io
503Service unavailableCheck status.vincta.io

Error Response Format

{ error: { code: string; // Error code (e.g., 'INVALID_REQUEST') message: string; // Human-readable message details?: { field?: string; // Field that caused error reason?: string; // Specific reason }; } }

Example Error Response

{ "error": { "code": "INVALID_REQUEST", "message": "Missing required field: trigger_type", "details": { "field": "trigger_type", "reason": "Must be one of: transaction, wallet_screen, travel_rule, periodic, manual" } } }

Error Handling Best Practices

try { const result = await evaluateMicaRules(request); if (result.should_block) { // Handle block } } catch (error) { if (error.code === 401) { // Re-authenticate console.error('Authentication failed. Check API key.'); } else if (error.code === 429) { // Implement backoff await sleep(Math.random() * 1000); // Retry } else if (error.code === 500) { // Log and alert console.error('Server error:', error.message); await alertOps(error); } }

Rate Limits

Default Limits:

  • 100 requests per minute per client
  • 10,000 requests per day per client
  • Burst capacity: Up to 200 requests per minute for short periods

Rate Limit Headers:

X-RateLimit-Limit: 100 X-RateLimit-Remaining: 87 X-RateLimit-Reset: 1609459200

Handling Rate Limits:

if (response.status === 429) { const resetTime = parseInt(response.headers['X-RateLimit-Reset']); const waitTime = resetTime - Math.floor(Date.now() / 1000); console.log(`Rate limited. Retry after ${waitTime} seconds`); // Implement exponential backoff await sleep(waitTime * 1000); // Retry request }

Enterprise Rate Limits:

Contact support@vincta.io for custom rate limit increases.

Performance Optimization

Caching Recommendations

Cache evaluation results for identical requests:

const cache = new Map(); async function evaluateWithCache(request) { const cacheKey = JSON.stringify(request); if (cache.has(cacheKey)) { return cache.get(cacheKey); } const result = await evaluateMicaRules(request); cache.set(cacheKey, result); // Clear cache after 5 minutes setTimeout(() => cache.delete(cacheKey), 5 * 60 * 1000); return result; }

Batch Processing

For high-volume evaluations, batch requests:

async function batchEvaluate(requests) { const results = await Promise.all( requests.map(req => evaluateMicaRules(req)) ); return results; } // Usage const transactions = [...]; const results = await batchEvaluate( transactions.map(tx => ({ client_id: CLIENT_ID, trigger_type: 'transaction', trigger_entity_type: 'transaction', trigger_entity_id: tx.id, data: tx })) );

Support

Technical Support:

Compliance Questions:

Documentation:

Community:

  • Slack: #vincta-support
  • GitHub: github.com/vincta/mica-rule-engine

Next Steps

  1. Review Compliance Guide - See MiCA Compliance for regulatory context

  2. Test Integration - Use sandbox environment:

    • Endpoint: https://sandbox.api.vincta.io/api/mica/evaluate
    • API Key: sk_sandbox_... (contact support)
  3. Schedule Compliance Review - Meet with VINCTA’s compliance team to:

    • Review your integration
    • Validate rule configuration
    • Plan production deployment
    • Establish audit procedures
  4. Monitor Performance - Track:

    • Evaluation latency
    • Rules triggered
    • Block/alert rates
    • Error rates

Last Updated: January 1, 2026
API Version: 1.0
Status: Production Ready