Ready-to-use code examples for different languages and frameworks
JavaScript/Node.js
async function getRecommendations(query, agentId) {
const response = await fetch('https://api.useadmesh.com/agent/recommendations', {
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');
app.post('/api/recommendations', async (req, res) => {
const { query } = req.body;
const response = await fetch('https://api.useadmesh.com/agent/recommendations', {
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);
});
// pages/api/recommendations.js
export default async function handler(req, res) {
const { query } = req.body;
const response = await fetch('https://api.useadmesh.com/agent/recommendations', {
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);
}
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>
);
}
Python
import requests
import os
def get_recommendations(query, agent_id):
response = requests.post(
'https://api.useadmesh.com/agent/recommendations',
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']}")
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/recommendations',
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'])
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/recommendations',
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)
PHP
<?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/recommendations', 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";
}
?>
<?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/recommendations', [
'query' => $request->query,
'agent_id' => env('ADMESH_AGENT_ID')
]);
$data = $response->json();
return response()->json($data['recommendations']);
}
}
Error Handling
async function getRecommendationsWithRetry(query, maxRetries = 3) {
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
const response = await fetch('https://api.useadmesh.com/agent/recommendations', {
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 [];
}
}
}
}
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/recommendations',
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 []
Frontend Integration Patterns
<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>
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 variables
ADMESH_API_KEY=admesh_prod_abc123xyz789
ADMESH_AGENT_ID=your_agent_id
ADMESH_BASE_URL=https://api.useadmesh.com