Your First Smart Services Request
Learn how to make your first call to Smart Services with practical examples.
Example Request: Document Analysis
We will use the AI document analysis service to extract information from an invoice.
1. Preparation
Make sure you have:
- API credentials configured
- A test document (PDF or image)
- Base endpoint:
https://tse.smart-api.teamsystem.cloud
2. Document Upload
curl -X POST \
https://tse.smart-api.teamsystem.cloud/v1/documents/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/your/invoice.pdf" \
-F "type=invoice"
Response:
{
"document_id": "doc_123456789",
"status": "uploaded",
"filename": "invoice.pdf",
"size": 245760,
"created_at": "2025-08-06T10:30:00Z"
}
3. Start AI Analysis
curl -X POST \
https://tse.smart-api.teamsystem.cloud/v1/ai/document-analysis \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_id": "doc_123456789",
"analysis_type": "invoice_extraction",
"language": "it"
}'
Response:
{
"analysis_id": "analysis_987654321",
"status": "processing",
"estimated_completion": "2025-08-06T10:32:00Z",
"webhook_url": null
}
4. Retrieve Results
curl -X GET \
https://tse.smart-api.teamsystem.cloud/v1/ai/document-analysis/analysis_987654321 \
-H "Authorization: Bearer YOUR_API_KEY"
Complete Response:
{
"analysis_id": "analysis_987654321",
"status": "completed",
"confidence": 0.95,
"extracted_data": {
"invoice_number": "INV-2025-001",
"invoice_date": "2025-08-01",
"supplier": {
"name": "Fornitore Esempio S.r.l.",
"vat_number": "IT12345678901",
"address": "Via Roma 123, 20100 Milano"
},
"total_amount": 1250.00,
"vat_amount": 250.00,
"net_amount": 1000.00,
"line_items": [
{
"description": "Servizio consulenza",
"quantity": 10,
"unit_price": 100.00,
"total": 1000.00
]
},
"processing_time": "2.3s"
}
JavaScript Example
const SmartServicesClient = require('@teamsystem/smart-services-sdk');
const client = new SmartServicesClient({
apiKey: 'YOUR_API_KEY',
environment: 'production' // or 'sandbox'
});
async function analyzeInvoice() {
try {
// 1. Upload document
const uploadResult = await client.documents.upload({
file: './invoice.pdf',
type: 'invoice'
});
console.log('Document uploaded:', uploadResult.document_id);
// 2. Start analysis
const analysis = await client.ai.analyzeDocument({
documentId: uploadResult.document_id,
analysisType: 'invoice_extraction',
language: 'it'
});
console.log('Analysis started:', analysis.analysis_id);
// 3. Wait for results
const result = await client.ai.waitForAnalysis(analysis.analysis_id);
console.log('Extracted data:', result.extracted_data);
} catch (error) {
console.error('Error:', error.message);
}
}
analyzeInvoice();
Error Handling
Common Error Codes
| Code | Meaning | Solution |
|---|---|---|
| 401 | Unauthorized | Check API credentials |
| 403 | Access denied | Check your account permissions |
| 429 | Too many requests | Implement retry with backoff |
| 500 | Server error | Try again later or contact support |
Error Handling Example
try {
const result = await client.ai.analyzeDocument(params);
} catch (error) {
switch (error.status) {
case 401:
console.error('Invalid credentials');
break;
case 429:
console.log('Rate limit reached, retrying in 60s');
setTimeout(() => analyzeDocument(), 60000);
break;
default:
console.error('Error:', error.message);
}
}
Next Steps
Now that you've made your first request:
- 🔍 Explore other available AI services
- Download the official SDKs
- Set up automations and workflows