Quick Examples

Basic Function

async function getRecommendations(query, agentId) {
  const response = await fetch('https://api.useadmesh.com/agent/recommend', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.ADMESH_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: query,
      agent_id: agentId
    })
  });

  if (!response.ok) {
    throw new Error(`API Error: ${response.status}`);
  }

  const data = await response.json();
  return data.recommendations;
}

// Usage
const recommendations = await getRecommendations('best CRM for startups', 'your_agent_id');

Express.js API Route

app.post('/api/recommendations', async (req, res) => {
  const { query } = req.body;

  const response = await fetch('https://api.useadmesh.com/agent/recommend', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.ADMESH_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: query,
      agent_id: process.env.ADMESH_AGENT_ID
    })
  });

  const data = await response.json();
  res.json(data.recommendations);
});

Next.js API Route

// pages/api/recommendations.js
export default async function handler(req, res) {
  const { query } = req.body;

  const response = await fetch('https://api.useadmesh.com/agent/recommend', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.ADMESH_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      query: query,
      agent_id: process.env.ADMESH_AGENT_ID
    })
  });

  const data = await response.json();
  res.json(data.recommendations);
}

React Frontend Component

import React, { useState } from 'react';
import { AdMeshLayout } from 'admesh-ui-sdk';

function RecommendationSearch() {
  const [recommendations, setRecommendations] = useState([]);

  const searchRecommendations = async (query) => {
    const response = await fetch('/api/recommendations', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ query })
    });
    
    const recs = await response.json();
    setRecommendations(recs);
  };

  return (
    <div>
      <input 
        placeholder="Search for products..."
        onKeyPress={(e) => {
          if (e.key === 'Enter') searchRecommendations(e.target.value);
        }}
      />
      
      <AdMeshLayout
        recommendations={recommendations}
        layout="auto"
        onRecommendationClick={(adId, admeshLink) => window.open(admeshLink)}
      />
    </div>
  );
}

Basic Function

import requests
import os

def get_recommendations(query, agent_id):
    response = requests.post(
        'https://api.useadmesh.com/agent/recommend',
        headers={'Authorization': f'Bearer {os.environ.get("ADMESH_API_KEY")}'},
        json={
            'query': query,
            'agent_id': agent_id
        }
    )

    response.raise_for_status()
    data = response.json()
    return data['recommendations']

# Usage
recommendations = get_recommendations('best CRM for startups', 'your_agent_id')
for rec in recommendations:
    print(f"{rec['title']}: {rec['reason']}")

Flask API Route

from flask import Flask, request, jsonify
import requests
import os

@app.route('/api/recommendations', methods=['POST'])
def get_recommendations():
    data = request.get_json()
    query = data.get('query')

    response = requests.post(
        'https://api.useadmesh.com/agent/recommend',
        headers={'Authorization': f'Bearer {os.environ.get("ADMESH_API_KEY")}'},
        json={
            'query': query,
            'agent_id': os.environ.get("ADMESH_AGENT_ID")
        }
    )

    return jsonify(response.json()['recommendations'])

Django View

from django.http import JsonResponse
import requests
import json
import os

@csrf_exempt
def get_recommendations(request):
    data = json.loads(request.body)
    query = data.get('query')

    response = requests.post(
        'https://api.useadmesh.com/agent/recommend',
        headers={'Authorization': f'Bearer {os.environ.get("ADMESH_API_KEY")}'},
        json={
            'query': query,
            'agent_id': os.environ.get("ADMESH_AGENT_ID")
        }
    )

    return JsonResponse(response.json()['recommendations'], safe=False)

Basic Function

<?php
function getRecommendations($query, $agentId) {
    $data = json_encode([
        'query' => $query,
        'agent_id' => $agentId
    ]);

    $context = stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => [
                'Authorization: Bearer ' . $_ENV['ADMESH_API_KEY'],
                'Content-Type: application/json'
            ],
            'content' => $data
        ]
    ]);

    $response = file_get_contents('https://api.useadmesh.com/agent/recommend', false, $context);
    $result = json_decode($response, true);
    return $result['recommendations'];
}

// Usage
$recommendations = getRecommendations('best CRM for startups', 'your_agent_id');
foreach ($recommendations as $rec) {
    echo $rec['title'] . ": " . $rec['reason'] . "\n";
}
?>

Laravel Controller

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;

class RecommendationController extends Controller
{
    public function getRecommendations(Request $request)
    {
        $response = Http::withHeaders([
            'Authorization' => 'Bearer ' . env('ADMESH_API_KEY')
        ])->post('https://api.useadmesh.com/agent/recommend', [
            'query' => $request->query,
            'agent_id' => env('ADMESH_AGENT_ID')
        ]);

        $data = $response->json();
        return response()->json($data['recommendations']);
    }
}

Framework Examples

JavaScript with Retry Logic

async function getRecommendationsWithRetry(query, maxRetries = 3) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const response = await fetch('https://api.useadmesh.com/agent/recommend', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.ADMESH_API_KEY}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          query: query,
          agent_id: process.env.ADMESH_AGENT_ID
        })
      });

      if (!response.ok) {
        if (response.status === 401) {
          throw new Error('Invalid API key');
        }
        if (response.status >= 500 && attempt < maxRetries) {
          await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
          continue;
        }
        throw new Error(`API Error: ${response.status}`);
      }

      const data = await response.json();
      return data.recommendations;
    } catch (error) {
      if (attempt === maxRetries) {
        console.error('Failed after retries:', error);
        return [];
      }
    }
  }
}

Python with Error Handling

import requests
import time
from typing import List, Dict

def get_recommendations_with_retry(query: str, max_retries: int = 3) -> List[Dict]:
    """Get recommendations with retry logic"""
    for attempt in range(1, max_retries + 1):
        try:
            response = requests.post(
                'https://api.useadmesh.com/agent/recommend',
                headers={'Authorization': f'Bearer {os.environ.get("ADMESH_API_KEY")}'},
                json={
                    'query': query,
                    'agent_id': os.environ.get("ADMESH_AGENT_ID")
                },
                timeout=30
            )
            
            if response.status_code == 401:
                raise ValueError('Invalid API key')
            
            if response.status_code >= 500 and attempt < max_retries:
                time.sleep(attempt)  # Exponential backoff
                continue
                
            response.raise_for_status()
            data = response.json()
            return data['recommendations']
            
        except requests.exceptions.RequestException as e:
            if attempt == max_retries:
                print(f"Failed after {max_retries} attempts: {e}")
                return []
            time.sleep(attempt)
    
    return []

Vue.js Component

<template>
  <div>
    <input 
      v-model="query"
      @keyup.enter="searchRecommendations"
      placeholder="Search for products..."
    />
    
    <div v-if="loading">Loading recommendations...</div>
    
    <div v-for="rec in recommendations" :key="rec.ad_id" class="recommendation">
      <h3>{{ rec.title }}</h3>
      <p>{{ rec.reason }}</p>
      <a :href="rec.admesh_link" target="_blank">Learn More</a>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      query: '',
      recommendations: [],
      loading: false
    }
  },
  methods: {
    async searchRecommendations() {
      this.loading = true;
      try {
        const response = await fetch('/api/recommendations', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ query: this.query })
        });
        this.recommendations = await response.json();
      } catch (error) {
        console.error('Failed to get recommendations:', error);
      } finally {
        this.loading = false;
      }
    }
  }
}
</script>

Angular Service

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class RecommendationService {
  constructor(private http: HttpClient) {}

  getRecommendations(query: string): Observable<any[]> {
    return this.http.post<any[]>('/api/recommendations', { query });
  }
}

// Component usage
export class SearchComponent {
  recommendations: any[] = [];

  constructor(private recommendationService: RecommendationService) {}

  searchRecommendations(query: string) {
    this.recommendationService.getRecommendations(query)
      .subscribe(recommendations => {
        this.recommendations = recommendations;
      });
  }
}

Environment Configuration

# Environment variables
ADMESH_API_KEY=admesh_prod_abc123xyz789
ADMESH_AGENT_ID=your_agent_id
ADMESH_BASE_URL=https://api.useadmesh.com

Next Steps