Getting Started con le API
Guida introduttiva per utilizzare le API di Emblema.
π Autenticazioneβ
Tutte le API di Emblema richiedono autenticazione. Supportiamo due metodi:
JWT Bearer Tokenβ
curl -X GET https://api.emblema.ai/v1/documents \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
API Keyβ
curl -X GET https://api.emblema.ai/v1/documents \
-H "X-API-Key: YOUR_API_KEY"
π Base URLβ
Production: https://api.emblema.ai
Staging: https://staging-api.emblema.ai
Development: http://localhost:3000/api
π API Disponibiliβ
REST APIβ
Endpoint principali:
/api/v1/documents- Gestione documenti/api/v1/chat- Conversazioni AI/api/v1/search- Ricerca semantica/api/v1/knowledge-bases- Knowledge bases/api/v1/users- Gestione utenti
GraphQL APIβ
Endpoint: /graphql
query GetDocuments {
documents(limit: 10) {
id
name
createdAt
chunks {
id
text
}
}
}
π Quick Startβ
1. Ottieni le Credenzialiβ
# Login per ottenere JWT
curl -X POST https://api.emblema.ai/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "your-password"
}'
Response:
{
"access_token": "eyJhbGc...",
"refresh_token": "eyJhbGc...",
"expires_in": 3600
}
2. Prima Chiamata APIβ
# Lista documenti
curl -X GET https://api.emblema.ai/api/v1/documents \
-H "Authorization: Bearer YOUR_TOKEN"
3. Upload Documentoβ
# Upload file
curl -X POST https://api.emblema.ai/api/v1/documents \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@document.pdf" \
-F "name=My Document"
π¬ Esempio Chat APIβ
Inizia Conversazioneβ
const response = await fetch(
"https://api.emblema.ai/api/v1/chat/conversations",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Nuova conversazione",
model: "gpt-4",
}),
},
);
const conversation = await response.json();
Invia Messaggioβ
const messageResponse = await fetch(
`https://api.emblema.ai/api/v1/chat/conversations/${conversationId}/messages`,
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
content: "Qual Γ¨ il contenuto del documento X?",
stream: true,
}),
},
);
// Handle streaming response
const reader = messageResponse.body.getReader();
π Ricerca Semanticaβ
import requests
# Ricerca nei documenti
response = requests.post(
'https://api.emblema.ai/api/v1/search',
headers={'Authorization': f'Bearer {token}'},
json={
'query': 'contratti con clausole di rinnovo automatico',
'limit': 10,
'filters': {
'document_type': ['contract'],
'date_range': {
'from': '2024-01-01',
'to': '2024-12-31'
}
}
}
)
results = response.json()
π Response Formatβ
Tutte le API seguono un formato standard:
Success Responseβ
{
"success": true,
"data": {
// Response data
},
"meta": {
"timestamp": "2024-01-15T10:30:00Z",
"version": "1.0"
}
}
Error Responseβ
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": {
"field": "email",
"reason": "Invalid email format"
}
}
}
π Rate Limitingβ
- Standard: 1000 richieste/ora
- Pro: 10000 richieste/ora
- Enterprise: Custom
Headers di risposta:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1642521600
π Best Practicesβ
- Usa HTTPS sempre in produzione
- Ruota le API keys regolarmente
- Gestisci i token in modo sicuro
- Implementa retry logic per errori temporanei
- Usa pagination per dataset grandi
π SDK Disponibiliβ
JavaScript/TypeScriptβ
npm install @emblema/sdk
import { EmblemaClient } from "@emblema/sdk";
const client = new EmblemaClient({
apiKey: "YOUR_API_KEY",
});
const documents = await client.documents.list();
Pythonβ
pip install emblema-sdk
from emblema import EmblemaClient
client = EmblemaClient(api_key='YOUR_API_KEY')
documents = client.documents.list()
π Supportoβ
- π§ Email: api-support@emblema.ai
- π API Reference Completa
- π¬ Community Discord
Pronto per iniziare? Esplora la documentazione completa delle API per tutti i dettagli! π