Files Management
The Brevo CRM Files API enables you to upload and manage file attachments associated with contacts, companies, and deals within the Tajo platform.
Overview
File management is essential for:
- Deal documentation storing proposals, contracts, and agreements
- Customer records attaching invoices, receipts, and correspondence
- Loyalty program materials sharing program details and benefit summaries
- Compliance maintaining document audit trails for enterprise accounts
- Team collaboration sharing resources across sales team members
Quick Start
Upload File
POST https://api.brevo.com/v3/crm/filesContent-Type: multipart/form-dataapi-key: YOUR_API_KEY
--boundaryContent-Disposition: form-data; name="file"; filename="enterprise-proposal.pdf"Content-Type: application/pdf
[file content]--boundaryContent-Disposition: form-data; name="dealIds"
deal_abc123def456--boundaryContent-Disposition: form-data; name="companyIds"
comp_123456789--boundaryContent-Disposition: form-data; name="contactIds"
12345--boundary--Response
{ "id": "file_001", "name": "enterprise-proposal.pdf", "size": 245760, "contentType": "application/pdf", "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "contactIds": [12345], "created_at": "2026-01-25T14:30:00Z"}Get Files
List All Files
GET https://api.brevo.com/v3/crm/files?limit=50&offset=0&sort=descContent-Type: application/jsonapi-key: YOUR_API_KEYResponse
{ "items": [ { "id": "file_001", "name": "enterprise-proposal.pdf", "size": 245760, "contentType": "application/pdf", "dealIds": ["deal_abc123def456"], "companyIds": ["comp_123456789"], "created_at": "2026-01-25T14:30:00Z" } ], "total": 1}Filter Files
GET https://api.brevo.com/v3/crm/files?filters[dealIds]=deal_abc123def456&sort=created_at:descGet Single File
GET https://api.brevo.com/v3/crm/files/{file_id}Content-Type: application/jsonapi-key: YOUR_API_KEYDownload File
GET https://api.brevo.com/v3/crm/files/{file_id}/dataapi-key: YOUR_API_KEYFile Management Automation
Deal Document Workflow
Automatically manage documents throughout the deal lifecycle:
class DealDocumentManager { constructor() { this.filesApi = new FilesApi(); }
async attachProposal(dealId, proposalBuffer, companyName) { const fileName = `proposal-${companyName.toLowerCase().replace(/\s+/g, '-')}-${Date.now()}.pdf`;
const file = await this.filesApi.uploadFile({ file: proposalBuffer, fileName: fileName, dealIds: [dealId] });
// Create a note referencing the uploaded proposal await this.notesApi.createNote({ text: `Proposal uploaded: ${fileName}`, dealIds: [dealId] });
return file; }
async attachContract(dealId, contractBuffer, companyId) { const fileName = `contract-${dealId}-${new Date().toISOString().slice(0, 10)}.pdf`;
const file = await this.filesApi.uploadFile({ file: contractBuffer, fileName: fileName, dealIds: [dealId], companyIds: [companyId] });
return file; }
async getDealDocuments(dealId) { const files = await this.filesApi.getFiles({ filters: { dealIds: dealId }, sort: 'created_at:desc' });
return { proposals: files.items.filter(f => f.name.startsWith('proposal-')), contracts: files.items.filter(f => f.name.startsWith('contract-')), other: files.items.filter(f => !f.name.startsWith('proposal-') && !f.name.startsWith('contract-') ), totalSize: files.items.reduce((sum, f) => sum + f.size, 0) }; }}Loyalty Program Documents
class LoyaltyDocumentManager { async generateAndAttachBenefitsSummary(companyId, tier) { const company = await this.companiesApi.getCompany(companyId);
const summary = await this.generateBenefitsPDF({ companyName: company.name, tier: tier, benefits: this.getTierBenefits(tier), annualSpend: company.attributes.annual_spend, pointsBalance: company.attributes.loyalty_points });
return await this.filesApi.uploadFile({ file: summary, fileName: `loyalty-benefits-${tier.toLowerCase().replace(/\s+/g, '-')}.pdf`, companyIds: [companyId] }); }
async attachTierUpgradeDocuments(companyId, oldTier, newTier) { const documents = [ { name: 'tier-upgrade-confirmation', content: this.generateUpgradeConfirmation(oldTier, newTier) }, { name: 'new-benefits-guide', content: this.generateBenefitsGuide(newTier) } ];
const uploaded = []; for (const doc of documents) { const file = await this.filesApi.uploadFile({ file: doc.content, fileName: `${doc.name}-${Date.now()}.pdf`, companyIds: [companyId] }); uploaded.push(file); }
return uploaded; }}Supported File Types
| Category | Extensions | Max Size |
|---|---|---|
| Documents | .pdf, .doc, .docx, .txt | 10 MB |
| Spreadsheets | .xls, .xlsx, .csv | 10 MB |
| Images | .png, .jpg, .jpeg, .gif | 5 MB |
| Presentations | .ppt, .pptx | 10 MB |
API Methods Reference
// Upload a fileconst file = await filesApi.uploadFile({ file: fileBuffer, fileName: 'proposal.pdf', dealIds: ['deal_abc123'], companyIds: ['comp_123']});
// Get file metadataconst file = await filesApi.getFile('file_001');
// Download file dataconst fileData = await filesApi.downloadFile('file_001');
// Delete fileawait filesApi.deleteFile('file_001');
// List files with filteringconst files = await filesApi.getFiles({ filters: { dealIds: 'deal_abc123' }, sort: 'created_at:desc', limit: 50});Best Practices
- Naming conventions: Use descriptive file names with dates for easy identification
- Link records: Associate files with all related deals, companies, and contacts
- Version management: Include version numbers or dates in file names
- Size management: Compress large files before uploading
- Access control: Review file associations regularly to ensure proper access
- Clean up: Remove outdated documents to keep CRM records manageable
Error Handling
try { const file = await filesApi.uploadFile(fileData); console.log('File uploaded:', file.id);} catch (error) { if (error.status === 400) { console.error('Invalid file data:', error.message); } else if (error.status === 413) { console.error('File size exceeds maximum limit'); } else if (error.status === 415) { console.error('Unsupported file type'); } else { console.error('Unexpected error:', error); }}Next Steps
- Companies Management - Manage corporate accounts
- Deals Management - Track sales pipeline
- Task Management - Manage sales activities
- Notes - Document customer interactions