Envoyer un document par email

Pour envoyer un document (facture, devis, pièce jointe) vous devez utiliser l'endpoint /apps/:appId/email/document.

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "title": "Titre de mon email",
  "body": "Contenu de mon email",
  "from": "[email protected]",
  "documents": [
    {
      "type": "invoice", // Types : invoice ou quote ou attachment
      "id": "1" // ID de votre attachment (facture, devis ou pièce jointe)
    }
  ],
  "recipients": [
    "[email protected]",
    "[email protected]",
    "[email protected]"
  ],
  "recipients_cc": [
    "[email protected]",
    "[email protected]"
  ],
  "recipients_bcc": [
    "[email protected]",
    "[email protected]"
  ]
});

var requestOptions = {
		method: 'POST',
		headers: myHeaders,
		body: raw,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/apps/:appId/email/document", requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));

Pour ajouter des fichiers joints à cet email, vous devez suivre les étapes suivantes :

  1. Créer un attachment
  2. L'ajouter à la liste des documents à joindre dans l'array de la clé documents du body

lister les attachements

Si votre fichier a déjà été ajouté aux attachments, inutile de le renvoyer, seuls son id et type sont à ajouter à la requête

pour lister vos attachments, il faut envoyer la requête

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");
myHeaders.append("Content-Type", "application/json");

var requestOptions = {
		method: 'GET',
		headers: myHeaders,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/apps/:appId/attachments", requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));

la réponse sera :

{"data":[
  {"id":1,
		"name":"attestation-simplifiee-tva-10.pdf",
    "attachable_id":null,
   "type":"none",
	"email_sent_at":null,
	"created_at":"2026-01-06T14:38:19.000000Z","updated_at":"2026-01-06T14:38:19.000000Z"
  },{
    "id":2,
    "name":"F740.EVRD.407.pdf",
    "attachable_id":1,
    "type":"invoice",
    "email_sent_at":null,
		"created_at":"2026-01-08T15:03:15.000000Z","updated_at":"2026-01-08T15:03:15.000000Z"}
]

Vous prendrez donc l'id et le type de l'attachment à joindre.

Ajouter un attachment à la facture id #5

var myHeaders = new Headers();

const formData = new FormData();
formData.append("file", myFileInput.files[0]);

// type d'attachment possible
const available_types = [
  "invoice",
  "quote",
  "purchase",
]

myHeaders.append("Authorization", "Bearer <token>");
myHeaders.append("Content-Type", "application/json");

var requestOptions = {
		method: 'POST',
		headers: myHeaders,
  	redirect: 'follow',
		type: available_types[0],
  	attachable_id: 5 // id de la facture,
		is_multipart: true,
  	body : formData
};

fetch("https://api.sinao.app/v1/apps/:appId/attachments", requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));

exemple postman :


la réponse sera

{
    "type": "invoice",
    "attachable_id": 1,
    "name": "Invoice-B0860FF7-0033.pdf",
    "id": 3
}

Vous pouvez maintenant ajouter cet attachment id = 3 en fichier joint via la clé documents

var myHeaders = new Headers();

myHeaders.append("Authorization", "Bearer <token>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "title": "Titre de mon email",
  "body": "Contenu de mon email",
  "from": "[email protected]",
  "documents": [
    {
      "type": "invoice", // Types : invoice ou quote ou attachment
      "id": 3 // ID de votre attachment (facture, devis ou pièce jointe)
    }
  ],
  "recipients": [
    "[email protected]",
    "[email protected]",
    "[email protected]"
  ],
  "recipients_cc": [
    "[email protected]",
    "[email protected]"
  ],
  "recipients_bcc": [
    "[email protected]",
    "[email protected]"
  ]
});

var requestOptions = {
		method: 'POST',
		headers: myHeaders,
		body: raw,
		redirect: 'follow'
};

fetch("https://api.sinao.app/v1/apps/:appId/email/document", requestOptions)
		.then(response => response.text())
		.then(result => console.log(result))
		.catch(error => console.log('error', error));