node.js

Run npm i form-data node-fetch to install required packages.

const fs = require("fs");
const path = require("path");
const fetch = require("node-fetch");
const FormData = require("form-data");

const internals = {
  url: "https://api.taggun.io/api/receipt/v1/simple/file",
  filePath: "./sample.jpeg",
  taggunApiKey: "xxxx",
};

(async () => {
  const filePath = internals.filePath;

  try {
    const postBody = createFormData(filePath);

    const response = await fetch(internals.url, {
      headers: {
        accept: "application/json",
        apikey: internals.taggunApiKey,
        contentType: getContentType(filePath),
      },
      method: "POST",
      body: postBody,
    });

    const result = await response.json();
    console.log(result);
  } catch (err) {
    console.error(err);
  }
})();

function createFormData(filePath) {
  const filename = path.basename(filePath);
  const fileStream = fs.createReadStream(filePath, { autoClose: true });
  const formData = new FormData();

  // Add any other POST properties that you require
  // Go to https://api.taggun.io to see what other POST properties you require.
  formData.append("file", fileStream, {
    filename,
    contentType: getContentType(filePath),
  });

  formData.append("refresh", "false");

  return formData;
}

function getContentType(filePath) {
  const fileExt = path.extname(filePath);
  switch (fileExt.toLocaleLowerCase()) {
    case ".png":
      return "image/png";
    case ".pdf":
      return "application/pdf";
    default:
      return "image/jpg";
  }
}

Last updated