npm package: @nanonets/image-classification
Description: NanoNets' Image Classification Node.js SDK.
Author: NanoNets
Latest version: 1.0.1

# NanoNets Image Classification Node.js SDK

The [NanoNets](https://nanonets.com) Image Classification (IC) Node.js SDK.

> NOTE:
>
> -   This package supports both CommonJS and ES Module systems.
> -   All API requests from the browser will fail due to CORS policies.
> -   API Keys have full access to the user's account. **Please do not expose API Keys on the client.**
>     -   Please note that compiling, obfuscating, minifying or bundling (for example in React.js, Angular, Vue.js, React Native, etc.) **does not** hide the API Key and **it can still be extracted from the final application**.
>     -   The API Key should only be known to the server code and all client requests to the API must go through a server.

## Installation

```
npm install @nanonets/image-classification
```

## Use the NanoNets SDK

> NOTE: A fully working example using the SDK can be found in the [example](example) directory.

1. Import/require the Image Classification package.

```javascript
// ES Modules
import ImageClassification from "@nanonets/image-classification";

// CommonJS
const ImageClassification = require("@nanonets/image-classification");
```

2. Instantiate the Image Classification (IC) class.

```javascript
const ic = new ImageClassification(apiKey, modelId);
```

> NOTE:
>
> -   The API Key can be found in the user's [NanoNets Account section](https://app.nanonets.com/#/keys) and Model ID can be found in the model's settings in the NanoNets web app.
> -   Models need to be created and trained from [the NanoNets web app](https://app.nanonets.com) before being able to make predictions.

3. Use the [Image Classification API](#image-classification-api) to get prediction results from the model(s).

## Image Classification API

### Table of Contents

-   [Class Instantiation (Constructor)](#class-instantiation-constructor)
-   [Get Model Details](#get-model-details)
-   [Predict Using URLs](#predict-using-urls)
-   [Predict Using File](#predict-using-file)

### Class Instantiation (Constructor)

```javascript
const ic = new ImageClassification(apiKey, modelId);
```

#### Parameters

-   `apiKey`
    -   Type: String
    -   Required: True
-   `modelId`
    -   Type: String
    -   Required: True

> NOTE:
>
> -   Class Instantiation is mandatory.
> -   The API Key can be found in the user's [NanoNets Account section](https://app.nanonets.com/#/keys) and Model ID can be found in the model's settings in the NanoNets web app.
> -   API Keys have full access to the user's account. **Please do not expose API Keys on the client.**
>     -   Please note that compiling, obfuscating, minifying or bundling (for example in React.js, Angular, Vue.js, React Native, etc.) **does not** hide the API Key and **it can still be extracted from the final application**.
>     -   The API Key should only be known to the server code and all client requests to the API must go through a server.

### Get Model Details

```javascript
await ic.getModelDetails();
```

[Response example and other details](https://nanonets.com/documentation/#operation/ImageCategorizationModelGet)

> The `getModelDetails` function returns a promise, so it needs to be awaited.

### Predict Using URLs

```javascript
await ic.predictUsingUrls(urlArray);
```

#### Parameters

-   `urlArray`
    -   Type: Array of Strings
    -   Required: True

[Response example and other details](https://nanonets.com/documentation/#operation/ImageCategorizationLabelUrlsPost2)

> The `predictUsingUrls` function returns a promise, so it needs to be awaited.

### Predict Using File

```javascript
await ic.predictUsingFile(filePath);
```

#### Parameters

-   `filePath`
    -   Type: String
    -   Required: True

[Response example and other details](https://nanonets.com/documentation/#operation/ImageCategorizationLabelFilePost)

> The `predictUsingFile` function returns a promise, so it needs to be awaited.