# Integration Patterns ## Enable Argo + Tiered Cache ```typescript async function enableOptimalPerformance(client: Cloudflare, zoneId: string) { await Promise.all([ client.argo.smartRouting.edit({ zone_id: zoneId, value: 'on' }), client.argo.tieredCaching.edit({ zone_id: zoneId, value: 'on' }), ]); } ``` **Flow:** Visitor → Edge (Lower-Tier) → [Cache Miss] → Upper-Tier → [Cache Miss + Argo] → Origin **Impact:** Argo ~30% latency reduction + Tiered Cache 50-80% origin offload ## Usage Analytics (GraphQL) ```graphql query ArgoAnalytics($zoneTag: string!) { viewer { zones(filter: { zoneTag: $zoneTag }) { httpRequestsAdaptiveGroups(limit: 1000) { sum { argoBytes, bytes } } } } } ``` **Billing:** ~$0.10/GB. DDoS-mitigated and WAF-blocked traffic NOT charged. ## Spectrum TCP Integration Enable Argo for non-HTTP traffic (databases, game servers, IoT): ```typescript // Update existing app await client.spectrum.apps.update(appId, { zone_id: zoneId, argo_smart_routing: true }); // Create new app with Argo await client.spectrum.apps.create({ zone_id: zoneId, dns: { type: 'CNAME', name: 'tcp.example.com' }, origin_direct: ['tcp://origin.example.com:3306'], protocol: 'tcp/3306', argo_smart_routing: true, }); ``` **Use cases:** MySQL/PostgreSQL (3306/5432), game servers, MQTT (1883), SSH (22) ## Pre-Flight Validation ```typescript async function validateArgoEligibility(client: Cloudflare, zoneId: string) { const status = await client.argo.smartRouting.get({ zone_id: zoneId }); const zone = await client.zones.get({ zone_id: zoneId }); const issues: string[] = []; if (!status.editable) issues.push('Zone not editable'); if (['free', 'pro'].includes(zone.plan.legacy_id)) issues.push('Requires Business+ plan'); if (zone.status !== 'active') issues.push('Zone not active'); return { canEnable: issues.length === 0, issues }; } ``` ## Post-Enable Verification ```typescript async function verifyArgoEnabled(client: Cloudflare, zoneId: string): Promise { await new Promise(r => setTimeout(r, 2000)); // Wait for propagation const status = await client.argo.smartRouting.get({ zone_id: zoneId }); return status.value === 'on'; } ``` ## Full Setup Pattern ```typescript async function setupArgo(client: Cloudflare, zoneId: string) { // 1. Validate const { canEnable, issues } = await validateArgoEligibility(client, zoneId); if (!canEnable) throw new Error(issues.join(', ')); // 2. Enable both features await Promise.all([ client.argo.smartRouting.edit({ zone_id: zoneId, value: 'on' }), client.argo.tieredCaching.edit({ zone_id: zoneId, value: 'on' }), ]); // 3. Verify const [argo, cache] = await Promise.all([ client.argo.smartRouting.get({ zone_id: zoneId }), client.argo.tieredCaching.get({ zone_id: zoneId }), ]); return { argo: argo.value === 'on', tieredCache: cache.value === 'on' }; } ``` **When to combine:** High-traffic sites (>1TB/mo), global users, cacheable content.