CRM Basic Batch - Name + Company
Process up to 10 profiles concurrently in a single request with basic tier analysis.
When to Use
See the consolidated guidance: When to Use Each Batch Endpoint
Endpoint Details
| Property | Value |
|---|---|
| Endpoint | POST /crm_basico_batch |
| Cost | 1 credit × number of profiles |
| Max Profiles | 10 per request |
| Tier Required | Basic or Complete |
| Processing Time | ~8-10 seconds for 5 profiles |
Overview
The CRM Basic Batch endpoint allows you to analyze multiple professional profiles simultaneously using name and company information. You only pay for successfully analyzed profiles (pay-per-success billing).
Key Features
- ✅ Concurrent Processing: Up to 10 profiles analyzed simultaneously
- ✅ Pay-per-Success: Only charged for successfully analyzed profiles
- ✅ Time Efficient: ~65% faster than sequential single requests
- ✅ Basic Analysis: Position, stakeholder type, buyer manual, impact language
Request
Headers
| Header | Required | Value |
|---|---|---|
Content-Type | Yes | application/json |
x-api-key | Yes | Your API key |
Request Body
{
"profiles": [
{
"primeiro_nome": "Satya",
"ultimo_nome": "Nadella",
"empresa": "Microsoft",
"contexto_adicional": "Optional context"
},
{
"primeiro_nome": "Sundar",
"ultimo_nome": "Pichai",
"empresa": "Google"
}
]
}
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
profiles | array | Yes | Array of profile objects (max 10) |
profiles[].primeiro_nome | string | Yes | First name |
profiles[].ultimo_nome | string | Yes | Last name |
profiles[].empresa | string | Yes | Company name |
profiles[].contexto_adicional | string | No | Additional context |
Example Request
cURL
curl -X POST "https://api.fluenceinsights.com/crm_basico_batch" \
-H "Content-Type: application/json" \
-H "x-api-key: your-api-key-here" \
-d '{
"profiles": [
{"primeiro_nome": "Satya", "ultimo_nome": "Nadella", "empresa": "Microsoft"},
{"primeiro_nome": "Sundar", "ultimo_nome": "Pichai", "empresa": "Google"}
]
}'
Python
import requests
API_URL = "https://api.fluenceinsights.com/crm_basico_batch"
API_KEY = "your-api-key-here"
profiles = [
{"primeiro_nome": "Satya", "ultimo_nome": "Nadella", "empresa": "Microsoft"},
{"primeiro_nome": "Sundar", "ultimo_nome": "Pichai", "empresa": "Google"},
{"primeiro_nome": "Tim", "ultimo_nome": "Cook", "empresa": "Apple"}
]
response = requests.post(
API_URL,
headers={
"Content-Type": "application/json",
"x-api-key": API_KEY
},
json={"profiles": profiles}
)
if response.status_code == 200:
data = response.json()
summary = data['batch_summary']
print(f"✅ Processed {summary['successful']}/{summary['total_profiles']} profiles")
print(f"⚡ Time: {summary['processing_time_ms']/1000:.1f}s")
print(f"💰 Credits: {data['billing_info']['creditos_utilizados']}")
else:
print(f"❌ Error: {response.json()}")
JavaScript/Node.js
const axios = require('axios');
const API_URL = 'https://api.fluenceinsights.com/crm_basico_batch';
const API_KEY = 'your-api-key-here';
async function analyzeBatch() {
const profiles = [
{ primeiro_nome: 'Satya', ultimo_nome: 'Nadella', empresa: 'Microsoft' },
{ primeiro_nome: 'Sundar', ultimo_nome: 'Pichai', empresa: 'Google' },
{ primeiro_nome: 'Tim', ultimo_nome: 'Cook', empresa: 'Apple' }
];
try {
const response = await axios.post(
API_URL,
{ profiles },
{
headers: {
'Content-Type': 'application/json',
'x-api-key': API_KEY
}
}
);
const { batch_summary, results, billing_info } = response.data;
console.log(`✅ ${batch_summary.successful}/${batch_summary.total_profiles} profiles`);
console.log(`⚡ Time: ${(batch_summary.processing_time_ms/1000).toFixed(1)}s`);
console.log(`💰 Credits: ${billing_info.creditos_utilizados}`);
} catch (error) {
console.error('❌ Error:', error.response?.data || error.message);
}
}
analyzeBatch();
Response
Success Response (200)
{
"success": true,
"batch_summary": {
"total_profiles": 2,
"successful": 2,
"failed": 0,
"processing_time_ms": 4698.18
},
"results": [
{
"success": true,
"profile_index": 0,
"input": {
"primeiro_nome": "Satya",
"ultimo_nome": "Nadella",
"empresa": "Microsoft"
},
"analise": {
"cargo": "Chairman and CEO",
"tipo_stakeholder": "C-Level Executive",
"manual_comprador": {
"dores": [
"Digital transformation challenges",
"Cloud migration complexity"
],
"ganhos_procurados": [
"Innovation acceleration",
"Business growth"
]
},
"linguagem_impacto": [
"Innovation drives growth",
"Empowering transformation"
]
}
},
{
"success": true,
"profile_index": 1,
"input": {
"primeiro_nome": "Sundar",
"ultimo_nome": "Pichai",
"empresa": "Google"
},
"analise": {
"cargo": "CEO",
"tipo_stakeholder": "C-Level Executive",
"manual_comprador": {...},
"linguagem_impacto": [...]
}
}
],
"billing_info": {
"creditos_por_perfil": 1,
"perfis_processados": 2,
"creditos_utilizados": 2,
"creditos_restantes": 198,
"tipo_plano": "complete"
}
}
Response Fields
Batch Summary
| Field | Type | Description |
|---|---|---|
total_profiles | integer | Total number of profiles in batch |
successful | integer | Number of successfully analyzed profiles |
failed | integer | Number of failed analyses |
processing_time_ms | float | Total processing time in milliseconds |
Individual Results
| Field | Type | Description |
|---|---|---|
success | boolean | Whether analysis was successful |
profile_index | integer | Index of profile in original batch |
input | object | Original input data for this profile |
analise | object | Analysis results (if successful) |
error | string | Error message (if failed) |
error_code | string | Error code (if failed) |
Billing Info
| Field | Type | Description |
|---|---|---|
creditos_por_perfil | integer | Credits charged per successful profile (1) |
perfis_processados | integer | Number of profiles successfully processed |
creditos_utilizados | integer | Total credits used in this batch |
creditos_restantes | integer | Remaining credits after this batch |
tipo_plano | string | Current subscription plan |
Error Responses
Insufficient Credits (402)
{
"error": "Insufficient credits",
"message": "Batch requires 10 credits but you have 5",
"profiles_requested": 10,
"credits_per_profile": 1,
"credits_available": 5
}
Batch Size Exceeded (400)
{
"error": "Batch size exceeds maximum",
"message": "Maximum 10 profiles per batch, received 15",
"max_batch_size": 10,
"profiles_received": 15
}
Partial Batch Failure (200)
{
"success": true,
"batch_summary": {
"total_profiles": 3,
"successful": 2,
"failed": 1
},
"results": [
{
"success": true,
"profile_index": 0,
"analise": {...}
},
{
"success": false,
"profile_index": 1,
"input": {"primeiro_nome": "John", "empresa": "Unknown"},
"error": "Profile not found",
"error_code": "PROFILE_NOT_FOUND"
},
{
"success": true,
"profile_index": 2,
"analise": {...}
}
],
"billing_info": {
"creditos_utilizados": 2
}
}
Credit Calculation
| Scenario | Calculation | Total Credits |
|---|---|---|
| 5 profiles, all successful | 1 × 5 | 5 credits |
| 10 profiles, all successful | 1 × 10 | 10 credits |
| 10 profiles, 8 successful | 1 × 8 | 8 credits |
Note: You are only charged for successfully analyzed profiles. Failed analyses do not consume credits.
Performance Benchmarks
| Profiles | Single Requests | Batch Request | Time Saved |
|---|---|---|---|
| 5 profiles | ~20-25 sec | ~8-10 sec | 60% faster |
| 10 profiles | ~40-50 sec | ~15-20 sec | 65% faster |
Best Practices
1. Batch Size Optimization
- Recommended: 10 profiles per batch (maximum)
- For large datasets: Process in sequential batches of 10
- Add delays: 0.5-1s between batches for large-scale processing
2. Handling Partial Failures
def process_batch_results(batch_response):
"""Separate successful and failed results"""
successful = []
failed = []
for result in batch_response['results']:
if result['success']:
successful.append({
'input': result['input'],
'analysis': result['analise']
})
else:
failed.append({
'input': result['input'],
'error': result['error']
})
return successful, failed
3. Processing Large Datasets
def process_large_dataset(profiles, batch_size=10):
"""Process large datasets in optimized batches"""
results = []
for i in range(0, len(profiles), batch_size):
batch = profiles[i:i + batch_size]
response = requests.post(API_URL, json={"profiles": batch}, headers=headers)
if response.status_code == 200:
batch_results = response.json()['results']
results.extend(batch_results)
print(f"Progress: {min(i + batch_size, len(profiles))}/{len(profiles)}")
time.sleep(0.5) # Rate limiting
return results
When to Use This Endpoint
✅ Use CRM Basic Batch When:
- Processing 2-10 profiles at once
- You have name + company information
- Time efficiency is important
- Building sales intelligence databases
- Bulk CRM enrichment needed
❌ Use Single Endpoint When:
- Analyzing only 1 profile
- Real-time interactive analysis needed
- Immediate feedback required