{"basePath":"/api/v2","consumes":["application/json"],"definitions":{"Bndbox":{"example":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"properties":{"xmax":{"description":"","example":100,"format":"int","type":"integer"},"xmin":{"description":"","example":1,"format":"int","type":"integer"},"ymax":{"description":"","example":100,"format":"int","type":"integer"},"ymin":{"description":"","example":1,"format":"int","type":"integer"}},"required":["xmin","ymin","xmax","ymax"],"title":"Bndbox","type":"object"},"CreateNewModelrequest":{"example":{"categories":["{{category1}}","{{category2}}"],"model_type":["ocr"]},"properties":{"categories":{"description":"","example":["{{category1}}","{{category2}}"],"items":{"type":"string"},"type":"array"},"model_type":{"description":"Type of model, 'ocr' for OCR model","example":"ocr","type":"string"}},"required":["categories"],"title":"Create New Model Body","type":"object"},"Datum":{"example":{"filename":"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg","object":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"{{category1}}"}]},"properties":{"filename":{"description":"","example":"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg","type":"string"},"object":{"description":"","example":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"{{category1}}"}],"items":{"$ref":"#/definitions/Object3"},"type":"array"}},"required":["filename","object"],"title":"Annotation Object","type":"object"},"Object3":{"example":{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"{{category1}}"},"properties":{"bndbox":{"$ref":"#/definitions/Bndbox"},"name":{"description":"","example":"{{category1}}","type":"string"}},"required":["name","bndbox"],"title":"Annotations","type":"object"},"UploadTrainingImagesByUrlrequest":{"example":{"data":[{"filename":"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg","object":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"{{category1}}"}]}],"urls":["https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg"]},"properties":{"data":{"description":"","example":[{"filename":"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg","object":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"{{category1}}"}]}],"items":{"$ref":"#/definitions/Datum"},"type":"array"},"urls":{"description":"","example":["https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg"],"items":{"type":"string"},"type":"array"}},"required":["data","urls"],"title":"Upload Training Images Body","type":"object"}},"host":"app.nanonets.com","info":{"contact":{"email":"support@nanonets.com","name":"NanoNets","url":"https://nanonets.com"},"description":"Welcome to the NanoNets API! You can use our API to build custom deep learning models.\u003cbr/\u003e\nWe have language bindings in Shell, Ruby, Golang, Java, C# and Python. You can view code examples in the dark area to the right, and you can switch the programming language for the examples with the tabs in the top right. \u003cbr/\u003e In the documentation, you will find ready to fire code samples in these languages as well as detailed API specs for different endpoints.\u003cbr/\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n### \u003cspan style=\"vertical-align: middle;\"\u003eWant to quickly test our APIs? \u0026nbsp;\u003c/span\u003e \u003ca style=\"vertical-align: middle; display: inline-flex;\" href=\"https://elements.getpostman.com/redirect?entityId=4900737-80d490dc-a342-43be-8160-c9b5bab3c629\u0026entityType=collection\" target=\"_blank\"\u003e\u003cimg src=\"https://run.pstmn.io/button.svg\" alt=\"Run in Postman\" /\u003e\u003c/a\u003e\u003cbr/\u003e\u003cbr/\u003e\nHelpful links to get you started:\u003cbr/\u003e\u003cbr/\u003e\n**Postman collection variables** - \u003ca href=\"https://learning.postman.com/docs/postman/variables-and-environments/variables/#defining-collection-variables\" target=\"_blank\"\u003ehttps://learning.postman.com/docs/postman/variables-and-environments/variables/#defining-collection-variables\u003c/a\u003e\u003cbr/\u003e\u003cbr/\u003e\n**To get your API key** \u003ca href=\"https://app.nanonets.com/#keys\" target=\"_blank\"\u003efollow this link.\u003c/a\u003e\u003cbr/\u003e\u003cbr/\u003e\n\n# Model Object\nA model Object has 3 main attributes\u003cbr/\u003e\n### model_id\n\u003cb\u003eDefinition:\u003c/b\u003e Unique ID for the model \u003cbr/\u003e\u003cbr/\u003e\n### model_type\n\u003cb\u003eDefinition:\u003c/b\u003e Type of model. Possible values are: \u003cbr/\u003e\n\u003ctable\u003e\n \u003ctr\u003e\n \u003ctd\u003eclassification\u003c/td\u003e\n \u003ctd\u003eImage classification model\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003eocr\u003c/td\u003e\n \u003ctd\u003eOCR model\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e \u003cbr/\u003e\n\n### state\n\u003cb\u003eDefinition:\u003c/b\u003e Current state of model. Possible values are:\u003cbr/\u003e\n\u003ctable\u003e\n \u003ctr\u003e\n \u003ctd\u003e-1\u003c/td\u003e\n \u003ctd\u003eError in model training\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e0\u003c/td\u003e\n \u003ctd\u003eModel created. No training data uploaded yet\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e1\u003c/td\u003e\n \u003ctd\u003eTraining data uploaded. Need to annotate data\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e2\u003c/td\u003e\n \u003ctd\u003eTraining data annotated. Need to start training\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e3\u003c/td\u003e\n \u003ctd\u003eModel in training queue\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e4\u003c/td\u003e\n \u003ctd\u003eModel currently training\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e5\u003c/td\u003e\n \u003ctd\u003eModel hosted. Can be used for prediction\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003e6\u003c/td\u003e\n \u003ctd\u003eModel is retraining with new data. Can be used for prediction\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n","license":{"name":"MIT","url":"http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT"},"title":"NanoNets","version":"2.0.0","x-logo":{"url":"https://nanonets.com/logo2.png"}},"paths":{"/ImageCategorization/LabelFile/":{"post":{"consumes":["multipart/form-data"],"description":"Use the model to predict which one of the categories an image (given an image file) belongs to.","operationId":"ImageCategorizationLabelFilePost","parameters":[{"description":"","in":"formData","name":"modelId","required":true,"type":"string"},{"description":"","in":"formData","name":"file","required":true,"type":"file"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"message":"Success","model_id":"00000000-0000-0000-0000-000000000000","result":[{"file":"string","message":"Success","prediction":[{"label":"category1","probability":0.9},{"label":"category2","probability":0.1}]}]}}},"400":{"description":"File missing. Check if you have included a file in the request\n\nOR\n\nIncorrect image. Check if file you included is a valid PNG or JPEG"},"402":{"description":"Exhausted Free API Calls. You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Prediction for image File","tags":["Image Classification Model Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar fs = require('fs')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID', 'file' : fs.createReadStream('REPLACE_IMAGE_PATH.jpg')}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/',\n formData: form_data,\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/'\n\ndata = {'file': open('REPLACE_IMAGE_PATH.jpg', 'rb'), 'modelId': ('', 'REPLACE_MODEL_ID')}\n\nresponse = requests.post(url, auth= requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/' \\\n --header 'accept: multipart/form-data' \\\n -u 'REPLACE_API_KEY' \\\n -F 'modelId=REPLACE_MODEL_ID' \\\n -F 'file=@REPLACE_IMAGE_PATH.jpg'"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n \"os\"\n \"path/filepath\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/\"\n\n file, err := os.Open(\"test.jpg\")\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer file.Close()\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n\n part, err := writer.CreateFormFile(\"file\", filepath.Base(\"test.jpg\"))\n if err != nil {\n fmt.Println(err)\n return\n }\n _, err = io.Copy(part, file)\n\n writer.WriteField(\"modelId\", \"REPLACE_MODEL_ID\")\n\n contentType := writer.FormDataContentType()\n\n err = writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req, _ := http.NewRequest(\"POST\", url, body)\n\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n output, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(output))\n\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('modelId', 'REPLACE_MODEL_ID');\ndata.append('file', file); // file is a Blob object\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'net/http/post/multipart'\n\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nFile.open('test.jpg') do |jpg|\nrequest = Net::HTTP::Post::Multipart.new(url.path,\n 'file' =\u003e UploadIO.new(jpg, 'image/jpeg', 'test.jpg'),\n 'modelId' =\u003e 'REPLACE_MODEL_ID')\nrequest.basic_auth 'REPLACE_API_KEY', ''\nresponse = Net::HTTP.start(url.host, url.port) do |http|\n http.request(request)\nend\nputs response.read_body\nend\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"Multipart/form-data\");\nrequest.AddParameter(\"modelId\", \"REPLACE_MODEL_ID\");\nrequest.AddFile(\"file\", \"REPLACE_IMAGE_PATH.jpg\");\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\nprivate static final MediaType MEDIA_TYPE_JPG = MediaType.parse(\"image/jpeg\");\n\nOkHttpClient client = new OkHttpClient();\n\nRequestBody requestBody = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"modelId\", \"REPLACE_MODEL_ID\")\n .addFormDataPart(\"file\", \"REPLACE_IMAGE_PATH.jpg\", RequestBody.create(MEDIA_TYPE_JPG, new File(\"REPLACE_IMAGE_PATH.jpg\")))\n .build();\n\nrequest = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/LabelFile/\")\n .post(requestBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"modelId={{model_id}}\u0026file=","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/LabelFile/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Prediction for image file","x-testShouldPass":true}]}},"/ImageCategorization/LabelUrls/":{"post":{"consumes":["multipart/form-data"],"description":"Use the model to predict which one of the categories an image (given the image url) belongs to. You can specify multiple image urls.","operationId":"ImageCategorizationLabelUrlsPost2","parameters":[{"description":"","in":"formData","name":"modelId","required":true,"type":"string"},{"description":"","in":"formData","name":"urls","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"message":"Success","model_id":"00000000-0000-0000-0000-000000000000","result":[{"file":"string","message":"Success","page":0,"prediction":[{"label":"category1","probability":0.9},{"label":"category2","probability":0.1}]}]}}},"202":{"description":"Request partially successful. One or more urls might not be correct or got no response"},"400":{"description":"Urls missing. Check if you have an included array of image urls"},"402":{"description":"Exhausted Free API Calls You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Prediction for image URLs","tags":["Image Classification Model Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'modelId': 'REPLACE_MODEL_ID', 'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/'\n\nheaders = {\n 'accept': 'application/x-www-form-urlencoded'\n}\n\ndata = {'modelId': 'REPLACE_MODEL_ID', 'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\n\nresponse = requests.request('POST', url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/' \\\n --header 'accept: application/x-www-form-urlencoded' \\\n -d 'modelId=REPLACE_MODEL_ID\u0026urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n\n labelUrl := \"https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/\"\n\n data := url.Values{}\n data.Set(\"modelId\", \"REPLACE_MODEL_ID\")\n data.Add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\")\n\n req, _ := http.NewRequest(\"POST\", labelUrl, bytes.NewBufferString(data.Encode()))\n\n req.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}\n"},{"lang":"JavaScript","source":"var data = 'modelId=REPLACE_MODEL_ID\u0026urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg';\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/\");\nxhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Post.new(url) request[\"accept\"] = 'application/x-www-form-urlencoded' request.basic_auth 'REPLACE_API_KEY', '' request.set_form_data({'modelId' =\u003e 'REPLACE_MODEL_ID', 'urls' =\u003e ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}) response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"application/x-www-form-urlencoded\");\nrequest.AddParameter(\"modelId\", \"REPLACE_MODEL_ID\");\nrequest.AddParameter(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\");\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequestBody formBody = new FormBody.Builder()\n .add(\"modelId\", \"REPLACE_MODEL_ID\")\n .add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\").build();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/\")\n .post(formBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"modelId={{model_id}}\u0026file=","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/LabelUrls/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Prediction for image file","x-testShouldPass":true}]}},"/ImageCategorization/Model":{"get":{"description":"This endpoint retrieves a specific model's details given it's id","operationId":"ImageCategorizationModelGet","parameters":[{"description":"","in":"query","name":"id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}}},"404":{"description":"Model does not exists. Check if you have entered correct model id with valid API key"}},"security":[{"ApiKey":[]}],"summary":"Get Model by Id","tags":["Image Classification Model"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/Model/?modelId=REPLACE_MODEL_ID',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/Model/'\n\nquerystring = {'modelId': 'REPLACE_MODEL_ID'}\n\nresponse = requests.request('GET', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY',''), params=querystring)\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID\"\n\n req, err := http.NewRequest(\"GET\", url, nil)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, err := http.DefaultClient.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer res.Body.Close()\n body, err := ioutil.ReadAll(res.Body)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID\");\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/Model/?id=REPLACE_MODEL_ID\")\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"method":"GET","uri":"/ImageCategorization/Model?id={{model_id}}"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Get Model by Id","x-testShouldPass":true}]}},"/ImageCategorization/Model/":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"You can create a new model using this endpoint. A successful API call will return the json structure of the newly created model. You can then use the model's id to upload images for each category and then retrain the model.","operationId":"ImageCategorizationModelPost","parameters":[{"description":"","in":"formData","name":"categories","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}}},"400":{"description":"Zero or One category in request. Add two or more categories in parameters"}},"security":[{"ApiKey":[]}],"summary":"Create New Model","tags":["Image Classification Model"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'categories' : ['category1', 'category2']}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/Model/',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/Model/'\n\nheaders = {\n 'accept': 'application/x-www-form-urlencoded'\n}\n\ndata = {'categories' : ['category1', 'category2']}\n\nresponse = requests.request(\"POST\", url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/Model/' \\\n -u 'REPLACE_API_KEY' \\\n -F 'categories=category1' \\\n -F 'categories=category2'\n"},{"lang":"Golang","source":"package main\n\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n)\n\n\nfunc main() {\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/Model/\"\n\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n\n\n writer.WriteField(\"categories\", \"category1\")\n writer.WriteField(\"categories\", \"category2\")\n\n\n contentType := writer.FormDataContentType()\n err := writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req, _ := http.NewRequest(\"POST\", url, body)\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n\n res, err := http.DefaultClient.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n defer res.Body.Close()\n\n\n output, _ := ioutil.ReadAll(res.Body)\n fmt.Println(res)\n fmt.Println(string(output))\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('categories', 'category1');\ndata.append('categories', 'category2');\n\n\nvar xhr = new XMLHttpRequest();\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/Model/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'net/http/post/multipart'\nrequire 'json'\nrequire 'active_support/time'\n\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/Model/')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = 'application/x-www-form-urlencoded'\nrequest.basic_auth 'REPLACE_API_KEY', ''\n\nrequest.set_form_data({'categories' =\u003e ['category1', 'category2']})\nresponse = http.request(request)\n# puts response.read_body\napiModel = JSON.parse(response.read_body)\nmodelId = apiModel['model_id']\nputs(\"New model created. Model id is #{modelId}\")\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/Model/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"application/x-www-form-urlencoded\");\nrequest.AddParameter(\"categories\", \"category1\");\nrequest.AddParameter(\"categories\", \"category2\");\nIRestResponse response = client.Execute(request);"},{"lang":"java","source":"OkHttpClient client = new OkHttpClient();\n\nRequestBody formBody = new FormBody.Builder()\n .add(\"categories\", \"category1\")\n .add(\"categories\", \"category2\").build();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/Model/\")\n .post(formBody)\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute(); \n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"categories={{category1}}","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/Model/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Create New Model","x-testShouldPass":true}]}},"/ImageCategorization/Models/":{"get":{"description":"This endpoint returns information of all models created by user","operationId":"ImageCategorizationModelsGet","parameters":[],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":[{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}]}}},"security":[{"ApiKey":[]}],"summary":"Get All Models","tags":["Image Classification Model"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/Models/',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/Models/'\n\nresponse = requests.request('GET', url, auth= requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''))\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url https://app.nanonets.com/api/v2/ImageCategorization/Models/ \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/Models/\"\n\n req, err := http.NewRequest(\"GET\", url, nil)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, err := http.DefaultClient.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer res.Body.Close()\n body, err := ioutil.ReadAll(res.Body)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/ImageCategorization/Models/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/Models/')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/Models/\");\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/Models/\")\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"method":"GET","uri":"/ImageCategorization/Models/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Get All Models","x-testShouldPass":true}]}},"/ImageCategorization/Train/":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"You can use this endpoint to train a model after uploading images for each category. You can use the same endpoint to retrain a model after uploading more images to improve the model.","operationId":"ImageCategorizationTrainPost","parameters":[{"description":"","in":"formData","name":"modelId","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}}},"400":{"description":"Model not ready for training. Check if the images for the model are uploaded"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Train Model","tags":["Image Classification Model Train"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID'}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/Train/',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/Train/'\n\nquerystring = {'modelId': 'REPLACE_MODEL_ID'}\n\nresponse = requests.request('POST', url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), params=querystring)\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID\"\n\n req, _ := http.NewRequest(\"POST\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Post.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/Train/?modelId=REPLACE_MODEL_ID\")\n .post(null)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"modelId={{model_id}}","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/Train/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Train Model","x-testShouldPass":true}]}},"/ImageCategorization/UploadFile/":{"post":{"consumes":["multipart/form-data"],"description":"You can use this endpoint to upload training images for a category (for the specified model) using locally stored files. You will receive model information along with total number of images per category on successful execution. \u003cbr\u003eNote: Filename in Data must be the same as that of the uploaded image name.","operationId":"ImageCategorizationUploadFilePost","parameters":[{"description":"","in":"formData","name":"modelId","required":true,"type":"string"},{"description":"","in":"formData","name":"category","required":true,"type":"string"},{"description":"","in":"formData","name":"file","required":true,"type":"file"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}}},"400":{"description":"Category not valid for model. Check if this model has the category used in the request\n\nOR\n\nFile missing. Check if you have included the file in the request\n\nOR\n\nIncorrect image. Check if file you included is valid PNG or JPEG file"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Upload training images by File","tags":["Image Classification Model Upload"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar fs = require('fs')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID', 'category': 'category1', 'file': fs.createReadStream('REPLACE_IMAGE_PATH.jpg')}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/',\n formData: form_data,\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/'\n\n\ndata = {'file' :open('REPLACE_IMAGE_PATH.jpg', 'rb'),'category' :('', 'category1'), 'modelId' :('', 'REPLACE_MODEL_ID')}\n\n\nresponse = requests.post(url, auth= requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)\nprint(response.text)"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/' \\\n --header 'accept: multipart/form-data' \\\n -u 'REPLACE_API_KEY' \\\n -F 'category=category1' \\\n -F 'modelId=REPLACE_MODEL_ID' \\\n -F 'file=@REPLACE_IMAGE_PATH.jpg'"},{"lang":"Golang","source":"package main\n\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n \"os\"\n \"path/filepath\"\n)\n\n\nfunc main() {\n url := \"https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/\"\n file, err := os.Open(\"REPLACE_IMAGE_PATH.jpg\")\n if err != nil {\n fmt.Println(err)\n return\n }\n defer file.Close()\n\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n part, err := writer.CreateFormFile(\"file\", filepath.Base(\"REPLACE_IMAGE_PATH.jpg\"))\n if err != nil {\n fmt.Println(err)\n return\n }\n\n _, err = io.Copy(part, file)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n\n writer.WriteField(\"category\", \"category1\")\n writer.WriteField(\"modelId\", \"REPLACE_MODEL_ID\")\n contentType := writer.FormDataContentType()\n err = writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n req, _ := http.NewRequest(\"POST\", url, body)\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n output, _ := ioutil.ReadAll(res.Body)\n fmt.Println(res)\n fmt.Println(string(output))\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('category', 'category1');\ndata.append('modelId', 'REPLACE_MODEL_ID');\ndata.append('file', file); // file is a Blob object\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\nif (this.readyState === this.DONE) {\n console.log(this.responseText);\n}\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri' require 'net/http' require 'net/http/post/multipart'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nFile.open('REPLACE_IMAGE_PATH.jpg') do |jpg|\n request = Net::HTTP::Post::Multipart.new(url.path,\n 'file' =\u003e UploadIO.new(jpg, 'image/jpeg', 'REPLACE_IMAGE_PATH.jpg')\n 'modelId' =\u003e 'REPLACE_MODEL_ID',\n 'category' =\u003e 'category1')\n request.basic_auth 'REPLACE_API_KEY', ''\n response = Net::HTTP.start(url.host, url.port) do |http|\n http.request(request)\n end\n puts response.read_body\nend"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"Multipart/form-data\");\nrequest.AddParameter(\"modelId\", \"REPLACE_MODEL_ID\");\nrequest.AddParameter(\"category\", \"category1\");\nrequest.AddFile(\"file\", \"REPLACE_IMAGE_PATH.jpg\");\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"private static final MediaType MEDIA_TYPE_JPG = MediaType.parse(\"image/jpeg\");\n\nOkHttpClient client = new OkHttpClient();\n\nRequestBody requestBody = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"modelId\", \"REPLACE_MODEL_ID\")\n .addFormDataPart(\"category\", \"category1\")\n .addFormDataPart(\"file\", \"REPLACE_IMAGE_PATH.jpg\", RequestBody.create(MEDIA_TYPE_JPG, new File(\"REPLACE_IMAGE_PATH.jpg\")))\n .build();\n\nrequest = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/UploadFile/\")\n .post(requestBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"modelId={{model_id}}\u0026category=category2\u0026file=","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/UploadFile/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Upload training images by File","x-testShouldPass":true}]}},"/ImageCategorization/UploadUrls/":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"You can use this endpoint to upload training images for a category (for the specified model) by image urls. You can upload multiple images in the same request by adding an array of urls. You will receive model information along with total number of images per category on successful execution.","operationId":"ImageCategorizationUploadUrlsPost","parameters":[{"description":"","in":"formData","name":"modelId","required":true,"type":"string"},{"description":"","in":"formData","name":"category","required":true,"type":"string"},{"description":"","in":"formData","name":"urls","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"classification","state":0}}},"202":{"description":"Request partially successful. One or more urls might not be correct or got no response"},"400":{"description":"Category not valid for model. Check if this model has the category used in the request\n\nOR\n\nUrls missing Check if you have included an array of image urls"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Upload training images by Url","tags":["Image Classification Model Upload"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID', 'category': 'category1', 'urls': ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/'\n\nheaders = {\n 'accept': 'application/x-www-form-urlencoded'\n}\n\ndata = {'modelId' : 'REPLACE_MODEL_ID', 'category': 'category1', 'urls': ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\n\nresponse = requests.request('POST', url, headers=headers, auth= requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/' \\\n --header 'accept: application/x-www-form-urlencoded' \\\n -d 'modelId=REPLACE_MODEL_ID\u0026category=category1\u0026urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"net/url\"\n)\n\n\nfunc main() {\n UploadUrl := \"https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/\"\n\n\n data := url.Values{}\n data.Set(\"modelId\", \"REPLACE_MODEL_ID\")\n data.Add(\"category\", \"category1\")\n data.Add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\")\n\n\n req, err := http.NewRequest(\"POST\", UploadUrl, bytes.NewBufferString(data.Encode()))\n if err != nil {\n fmt.Println(err)\n return\n }\n\n\n req.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n\n res, err := http.DefaultClient.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n defer res.Body.Close()\n\n\n body, err := ioutil.ReadAll(res.Body)\n if err != nil {\n fmt.Println(err)\n return\n }\n\n\n fmt.Println(res)\n fmt.Println(string(body))\n}\n"},{"lang":"JavaScript","source":"var data = 'modelId=REPLACE_MODEL_ID\u0026category=category1\u0026urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg';\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/\");\nxhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Post.new(url) request[\"accept\"] = 'application/x-www-form-urlencoded' request.basic_auth 'REPLACE_API_KEY', '' request.set_form_data({'modelId' =\u003e 'REPLACE_MODEL_ID', 'category' =\u003e 'category1', 'urls' =\u003e ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}) response = http.request(request)\nputs response.read_body\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"application/x-www-form-urlencoded\");\nrequest.AddParameter(\"modelId\", \"REPLACE_MODEL_ID\");\nrequest.AddParameter(\"category\", \"category1\");\nrequest.AddParameter(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\");\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequestBody formBody = new FormBody.Builder()\n .add(\"modelId\", \"REPLACE_MODEL_ID\")\n .add(\"category\", \"category1\")\n .add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\").build();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/ImageCategorization/UploadUrls/\")\n .post(formBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"modelId={{model_id}}\u0026category={{category1}}\u0026urls=http://r.ddmcdn.com/w_830/s_f/o_1/cx_0/cy_66/cw_288/ch_162/APL/uploads/2014/10/cat_5-1.jpg","headers":{"Content-Type":"application/x-www-form-urlencoded"},"method":"POST","uri":"/ImageCategorization/UploadUrls/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Upload training images by Url","x-testShouldPass":true}]}},"/Inferences/Model/{model_id}/ImageLevelInferences/{id}":{"get":{"description":"This endpoint retrieves the results of a particular file by page id ","operationId":"OCRModelGetPredictionFileByPageId","parameters":[{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"The ID of the page that was received from the async prediction endpoint","in":"path","name":"id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"message":"Success","result":[{"input":"string","message":"Success","prediction":[{"id":"uuid","label":"category1","ocr_text":"string","score":0.9,"status":"correctly_predicted","type":"field","xmax":100,"xmin":0,"ymax":100,"ymin":0},{"cells":[{"col":1,"col_span":1,"failed_validation":"string","id":"uuid","label":"col 1","row":1,"row_label":"optional","row_span":1,"score":99.99,"status":"string","text":"ocr text 1","verification_status":"correctly_predicted","xmax":258,"xmin":159,"ymax":1357,"ymin":1258},{"col":2,"col_span":1,"failed_validation":"string","id":"uuid","label":"col 2","row":1,"row_label":"optional","row_span":1,"score":99.99,"status":"string","text":"ocr text 2","verification_status":"correctly_predicted","xmax":380,"xmin":258,"ymax":1357,"ymin":1258},{"col":1,"col_span":1,"label":"col 1","row":2,"row_span":1,"score":99.99,"text":"ocr text 3","xmax":258,"xmin":159,"ymax":1439,"ymin":1357},{"col":2,"col_span":1,"failed_validation":"string","id":"uuid","label":"col 2","row":2,"row_label":"optional","row_span":1,"score":99.99902,"status":"string","text":"ocr text 4","verification_status":"correctly_predicted","xmax":380,"xmin":258,"ymax":1439,"ymin":1357}],"id":"uuid","label":"","ocr_text":"table 1","score":99.99,"status":"correctly_predicted","type":"table","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]}]}}},"404":{"description":"Model does not exists. Check if you have entered correct model id with valid API key"}},"security":[{"ApiKey":[]}],"summary":"Get Prediction File By Page ID","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}'\n\nresponse = requests.request('GET', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY',''))\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}\"\n\n req, _ := http.NewRequest(\"GET\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}\")\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}\");\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences/{{id}}\")\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/Inferences/Model/{model_id}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}":{"get":{"description":"This endpoint retrieves the files that have been processed by the prediction endpoints ","operationId":"OCRModelListPredictionFiles","parameters":[{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"The number of days since 1st Jan 1970 GMT which represents the start of the period","in":"query","name":"start_day_interval","required":true,"type":"integer"},{"description":"The number of days since 1st Jan 1970 GMT which represents the end of the period","in":"query","name":"current_batch_day","required":true,"type":"integer"}],"produces":["application/json"],"responses":{"200":{"description":"Images Object","examples":{"application/json":{"moderated_images":[{"day_since_epoch":18564,"file_url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/original_file_name-xxxx.jpeg","hour_of_day":15,"id":"00000000-0000-0000-0000-000000000000","is_moderated":true,"model_id":"category1","predicted_boxes":[{"label":"invoice_id","ocr_text":"877541","xmax":984,"xmin":616,"ymax":357,"ymin":321}],"url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/0000000001.jpeg"}],"moderated_images_count":55,"unmoderated_images":[{"day_since_epoch":18565,"file_url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/original_file_name-xxxx.jpeg","hour_of_day":23,"id":"00000000-0000-0000-0000-000000000000","is_moderated":false,"model_id":"00000000-0000-0000-0000-000000000000","predicted_boxes":[{"label":"seller_name","ocr_text":"Apple","xmax":984,"xmin":616,"ymax":357,"ymin":321}],"url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/0000000002.jpeg"}],"unmoderated_images_count":156}}},"404":{"description":"Model does not exists. Check if you have entered correct model id with valid API key"}},"security":[{"ApiKey":[]}],"summary":"Get All Prediction Files","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/Inferences/Model/' + 'REPLACE_MODEL_ID' + '/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/Inferences/Model/' + 'REPLACE_MODEL_ID' + '/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}'\n\nresponse = requests.request('GET', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY',''))\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}\"\n\n req, _ := http.NewRequest(\"GET\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}\")\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}\");\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/ImageLevelInferences?start_day_interval={start_day}\u0026current_batch_day={end_day}\")\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/Inferences/Model/{model_id}/InferenceRequestFiles/GetPredictions/{request_file_id}":{"get":{"description":"This endpoint retrieves the results of a particular file by file id ","operationId":"OCRModelGetPredictionFileByFileId","parameters":[{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"The ID of the file that was received from the async prediction endpoint","in":"path","name":"request_file_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"moderated_images":[{"day_since_epoch":0,"file_url":"uploadedfiles/\u003cid\u003e/PredictionImages/\u003coriginal_image_name\u003e\u003ctimestamp_based_string\u003e","hour_of_day":0,"id":"uuid","is_moderated":true,"model_id":"\u003cmodel_id\u003e","moderated_boxes":[null],"original_file_name":"\u003cfilename\u003e","page":0,"predicted_boxes":[{"id":"uuid","label":"category1","ocr_text":"string","score":0.9,"status":"correctly_predicted","type":"field|table","xmax":100,"xmin":0,"ymax":100,"ymin":0},{"cells":[{"col":1,"col_span":1,"label":"col 1","row":1,"row_span":1,"score":99.99,"text":"ocr text 1","xmax":258,"xmin":159,"ymax":1357,"ymin":1258},{"col":2,"col_span":1,"label":"col 2","row":1,"row_span":1,"score":99.99,"text":"ocr text 2","xmax":380,"xmin":258,"ymax":1357,"ymin":1258},{"col":1,"col_span":1,"label":"col 1","row":2,"row_span":1,"score":99.99,"text":"ocr text 3","xmax":258,"xmin":159,"ymax":1439,"ymin":1357},{"col":2,"col_span":1,"label":"col 2","row":2,"row_span":1,"score":99.99902,"text":"ocr text 4","xmax":380,"xmin":258,"ymax":1439,"ymin":1357}],"label":"","ocr_text":"table 1","score":99.99,"type":"table","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}],"request_file_id":"uuid","request_metadata":"metadata sent during prediction","status":"Success","updated_at":"timeuuid","url":"uploadedfiles/\u003cid\u003e/PredictionImages/\u003cimage_name\u003e","verified_at":"timeuuid","verified_by":"\u003cperson_name\u003e"}],"moderated_images_count":0,"signed_urls":[null],"unmoderated_images":[null],"unmoderated_images_count":1}}},"404":{"description":"Model does not exists. Check if you have entered correct model id with valid API key"}},"security":[{"ApiKey":[]}],"summary":"Get Prediction File By File ID","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}'\n\nresponse = requests.request('GET', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY',''))\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url 'https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}\"\n\n req, _ := http.NewRequest(\"GET\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}\")\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}\");\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/Inferences/Model/{{model_id}}/InferenceRequestFiles/GetPredictions/{{request_file_id}}\")\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/FullText":{"post":{"consumes":["multipart/form-data"],"description":"Use this API to recieve the word and full text information in a file. More info on https://nanonets.com","operationId":"GetFullText","parameters":[{"description":"Comma separated page numbers which needs to be processed from the list of Files uploaded. ex: '1,2' ","in":"formData","name":"file","required":true,"type":"file"},{"description":"language hints eg: en, vi (not specifying generally gives best results)","in":"formData","name":"urls","required":false,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"result":[{"filename":"MY_FILE_NAME_1.pdf","page_data":[{"page":0,"raw_text":"this contains all the text in the page","words":[{"text":"text of word 1","xmax":380,"xmin":159,"ymax":1439,"ymin":1258},{"text":"text of word 2","xmax":380,"xmin":159,"ymax":1439,"ymin":1258},{"text":"text of word 3","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]},{"page":1,"raw_text":"this contains all the text in the page","words":[{"text":"text of word 1","xmax":380,"xmin":159,"ymax":1439,"ymin":1258},{"text":"text of word 2","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]},{"page":2,"raw_text":"this contains all the text in the page","words":[{"text":"text of word 3","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]}]},{"filename":"MY_FILE_NAME_2.jpg","page_data":[{"page":0,"raw_text":"this contains all the text in the page","words":[{"text":"text of word 1","xmax":380,"xmin":159,"ymax":1439,"ymin":1258},{"text":"text of word 2","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]}]}]}}},"400":{"description":"File missing. Check if you have included a file in the request\n\nOR\n\nIncorrect image. Check if file you included is a valid PNG or JPEG or PDF"}},"security":[{"ApiKey":[]}],"summary":"Get Full Text","tags":["Get Full Text"],"x-code-samples":[{"lang":"Nodejs","source":"var axios = require('axios');\nvar FormData = require('form-data');\nvar fs = require('fs');\nvar data = new FormData();\ndata.apend('urls','FILE_URL')\ndata.append('file', fs.createReadStream('FILE_PATH'));\nvar config = {\n method: 'post',\n url: 'https://app.nanonets.com/api/v2/OCR/FullText',\n headers: { \n 'Authorization': 'Basic ' + Buffer.from(\"MY_API_KEY\" + \":\").toString('base64'), \n ...data.getHeaders()\n },\n data : data\n};\naxios(config) .then(function (response) {\n console.log(JSON.stringify(response.data));\n}) .catch(function (error) {\n console.log(error);\n});\n"},{"lang":"Python","source":"import requests\nimport base64\n\nurl = \"https://app.nanonets.com/api/v2/OCR/FullText\"\n\npayload={'urls': ['MY_IMAGE_URL']}\nfiles=[\n ('file',('FILE_NAME',open('FILE_PATH','rb'),'application/pdf')))\n]\nheaders = {}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload, files=files, auth=requests.auth.HTTPBasicAuth('REPLACE_YOUR_API_KEY', ''))\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --location --request POST 'https://app.nanonets.com/api/v2/OCR/FullText' \\\n--u 'REPLACE_API_KEY:' \\\n--form 'file=@\"FILE_PATH\"' \n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/FullText\");\nclient.Timeout = -1;\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"Authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_YOUR_API_KEY:\")));\nrequest.AddFile(\"file\", \"FILE_PATH\");\nIRestResponse response = client.Execute(request);\nConsole.WriteLine(response.Content); \n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/":{"post":{"description":"You can create a new model using this endpoint. A successful API call will return the json structure of the newly created model. You can then use the model's id to upload images for each category and then retrain the model.","operationId":"OCRModelPost","parameters":[{"description":"","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/CreateNewModelrequest"}},{"description":"","in":"header","name":"Content-Type","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"ocr","state":0}}},"400":{"description":"Zero or One category in request. Add two or more categories in parameters"}},"security":[{"ApiKey":[]}],"summary":"Create New Model","tags":["OCR Model"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst form_data = {'categories' : ['category1', 'category2'], 'model_type': 'ocr'}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/',\n body: JSON.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': \"application/json\",\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = \"https://app.nanonets.com/api/v2/OCR/Model/\"\n\npayload = \"{\\\"categories\\\" : [\\\"category1\\\", \\\"category2\\\"], \\\"model_type\\\": \\\"ocr\\\"}\"\nheaders = {\n 'Content-Type': \"application/json\",\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=payload)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl -X POST https://app.nanonets.com/api/v2/OCR/Model/ \\\n -H 'Content-Type: application/json' \\\n -u 'REPLACE_API_KEY' \\\n -d '{\"categories\" : [\"category1\", \"category2\"], \"model_type\": \"ocr\"}'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"strings\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/\"\n\n payload := strings.NewReader(\"{\\\"categories\\\" : [\\\"category1\\\", \\\"category2\\\"], \\\"model_type\\\": \\\"ocr\\\"}\")\n\n req, _ := http.NewRequest(\"POST\", url, payload)\n\n req.Header.Add(\"Content-Type\", \"application/json\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = JSON.stringify({\n \"categories\": [\n \"category1\",\n \"category2\"\n ], \n \"model_type\": \"ocr\"\n});\n\nvar xhr = new XMLHttpRequest();\nxhr.withCredentials = true;\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === 4) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/\");\nxhr.setRequestHeader(\"Content-Type\", \"application/json\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\n\nurl = URI(\"https://app.nanonets.com/api/v2/OCR/Model/\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = 'application/json'\nrequest.basic_auth 'REPLACE_API_KEY', ''\nrequest.body = \"{\\\"categories\\\" :[\\\"category1\\\", \\\"category2\\\"], \\\"model_type\\\": \\\"ocr\\\"}\"\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nrequest.AddHeader(\"Content-Type\", \"application/json\");\nrequest.AddParameter(\"undefined\", \"{\"categories\" :[\"category1\", \"category2\"], \"model_type\": \"ocr\"}\", ParameterType.RequestBody);\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\"categories\" : [\"category1\", \"category2\"], \"model_type\": \"ocr\"}\");\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/\")\n .post(body)\n .addHeader(\"Content-Type\", \"application/json\")\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[{"expectedResponse":{"headers":{},"x-allowExtraHeaders":true,"x-arrayCheckCount":false,"x-arrayOrderedMatching":false,"x-bodyMatchMode":"NONE","x-matchResponseSchema":true},"request":{"body":"{\"categories\" : [\"{{category1}}\", \"{{category2}}\"], \"model_type\": \"ocr\"}","headers":{"Content-Type":"application/json"},"method":"POST","uri":"/OCR/Model/"},"x-testDescription":"","x-testEnabled":true,"x-testName":"Create New Model1","x-testShouldPass":true}]}},"/OCR/Model/{model_id}":{"get":{"description":"This endpoint retrieves a specific model's details given it's id.","operationId":"OCRModelGetAllPredictionFiles","parameters":[{"description":"","in":"path","name":"model_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"ocr","state":0}}},"404":{"description":"Model does not exists. Check if you have entered correct model id with valid API key"}},"security":[{"ApiKey":[]}],"summary":"Get Model by Id","tags":["OCR Model"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/' + 'REPLACE_MODEL_ID',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.get(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/' + {{model_id}}\n\nresponse = requests.request('GET', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY',''))\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request GET \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}' \\\n -u 'REPLACE_API_KEY'"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/\" + {{model_id}}\n\n req, _ := http.NewRequest(\"GET\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"https://app.nanonets.com/api/v2/OCR/Model/\" + {{model_id}});\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/' + {{model_id}})\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Get.new(url) request.basic_auth 'REPLACE_API_KEY', '' response = http.request(request)\nputs response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/\" + {{model_id}});\nvar request = new RestRequest(Method.GET);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/\" + {{model_id}})\n .get()\n .addHeader(\"authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/LabelFile/":{"post":{"consumes":["multipart/form-data"],"description":"Use the model to predict which one of the categories an image (given an image file) belongs to.","operationId":"OCRModelLabelFileByModelIdPost","parameters":[{"description":"","in":"formData","name":"file","required":true,"type":"file"},{"description":"","in":"formData","name":"base64_data","required":false,"type":"string"},{"description":"metadata to save with the document","in":"formData","name":"request_metadata","required":false,"type":"string"},{"description":"Comma separated page numbers which needs to be processed from the list of Files uploaded. ex: '1,2' ","in":"formData","name":"pages_to_process","required":false,"type":"string"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"language hints eg: en, vi (not specifying generally gives best results)","in":"path","name":"l","required":false,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"message":"Success","result":[{"input":"string","message":"Success","prediction":[{"label":"category1","ocr_text":"string","score":0.9,"xmax":100,"xmin":0,"ymax":100,"ymin":0},{"cells":[{"col":1,"col_span":1,"label":"col 1","row":1,"row_span":1,"score":99.99,"text":"ocr text 1","xmax":258,"xmin":159,"ymax":1357,"ymin":1258},{"col":2,"col_span":1,"label":"col 2","row":1,"row_span":1,"score":99.99,"text":"ocr text 2","xmax":380,"xmin":258,"ymax":1357,"ymin":1258},{"col":1,"col_span":1,"label":"col 1","row":2,"row_span":1,"score":99.99,"text":"ocr text 3","xmax":258,"xmin":159,"ymax":1439,"ymin":1357},{"col":2,"col_span":1,"label":"col 2","row":2,"row_span":1,"score":99.99902,"text":"ocr text 4","xmax":380,"xmin":258,"ymax":1439,"ymin":1357}],"label":"","ocr_text":"table 1","score":99.99,"type":"table","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]}]}}},"400":{"description":"File missing. Check if you have included a file in the request\n\nOR\n\nIncorrect image. Check if file you included is a valid PNG or JPEG"},"402":{"description":"Exhausted Free API Calls. You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Prediction for image file","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar fs = require('fs')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID', \n 'file' : fs.createReadStream('REPLACE_IMAGE_PATH.jpg'),\n // for base64 of file instead of file\n //'base64_data' : fs.readFileSync(\"REPLACE_IMAGE_PATH.jpg\").toString('base64')\n }\n\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/LabelFile/',\n formData: form_data,\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/LabelFile/'\n\ndata = {'file': open('REPLACE_IMAGE_PATH.jpg', 'rb')}\n\nresponse = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)\n# for base64 of file instead of file\n# with open('REPLACE_IMAGE_PATH.jpg', 'rb') as file:\n# encoded_file = base64.b64encode(file.read())\n# data = {'base64_data': encoded_file}\n# response = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/' \\\n --header 'accept: multipart/form-data' \\\n -u 'REPLACE_API_KEY' \\\n -F 'file=@REPLACE_IMAGE_PATH.jpg'\n # -d 'base64_data=base64OfFile' # for base64 of file instead of file\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n // \"net/url\"\n \"os\"\n \"path/filepath\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/\"\n\n file, err := os.Open(\"REPLACE_IMAGE_PATH.jpg\")\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer file.Close()\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n\n part, err := writer.CreateFormFile(\"file\", filepath.Base(\"REPLACE_IMAGE_PATH.jpg\"))\n if err != nil {\n fmt.Println(err)\n return\n }\n _, err = io.Copy(part, file)\n\n contentType := writer.FormDataContentType()\n\n err = writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req, _ := http.NewRequest(\"POST\", url, body)\n\n // for base64 of file instead of file\n // data := url.Values{}\n // data.Add(\"base64_data\", base64OfFile)\n // req, _ := http.NewRequest(\"POST\", url, bytes.NewBufferString(data.Encode()))\n\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n respBody, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(respBody))\n\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('file', fileBLob); // This is file object\n//data.append('base64_data', base64EncodedFile); // Can use this for base64 of the file\n\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'net/http/post/multipart'\n\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nFile.open('test.jpg') do |jpg|\nrequest = Net::HTTP::Post::Multipart.new(url.path,\n 'file' =\u003e UploadIO.new(jpg, 'image/jpeg', 'test.jpg'))\n# for base64 of file instead of file\n# request = Net::HTTP::Post.new(url)\n# request.set_form_data({'base64_data' =\u003e base64OfFile})\nrequest.basic_auth 'REPLACE_API_KEY', ''\nresponse = Net::HTTP.start(url.host, url.port) do |http|\n http.request(request)\nend\nputs response.read_body\nend\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"Multipart/form-data\");\nrequest.AddFile(\"file\", \"REPLACE_IMAGE_PATH.jpg\");\n// for base64 of file instead of file\n// request.AddParameter(\"base64_data\", base64OfFile);\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\nprivate static final MediaType MEDIA_TYPE_JPG = MediaType.parse(\"image/jpeg\");\n\nOkHttpClient client = new OkHttpClient();\n\nRequestBody requestBody = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"file\", \"REPLACE_IMAGE_PATH.jpg\", RequestBody.create(MEDIA_TYPE_JPG, new File(\"REPLACE_IMAGE_PATH.jpg\")))\n .build();\n\n# for base64 of file instead of file\n# RequestBody formBody = new FormBody.Builder()\n# .add(\"base64_data\", base64OfFile).build();\nrequest = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/\")\n .post(requestBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();\n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/LabelFile/?async=true":{"post":{"consumes":["multipart/form-data"],"description":"Use the model to predict which one of the categories an image (given an image file) belongs to.","operationId":"OCRModelLabelFileAsyncByModelIdPost","parameters":[{"description":"","in":"formData","name":"file","required":true,"type":"file"},{"description":"","in":"formData","name":"base64_data","required":false,"type":"string"},{"description":"metadata to save with the document","in":"formData","name":"request_metadata","required":false,"type":"string"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"This parameter specifies whether you'd like to upload the file for processing and then query the results with a unique id at a later point in time","in":"query","name":"async","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"message can contain 3 status messages\n1. success - file has been successfully processed\n2. pending - file is in the queue and will be processed\n3. failure - There was an issue while processing the file. It has been retrried 3 times. It is recommended to reupload the file and if the issue persists, please contact support ","examples":{"application/json":{"message":"Success","result":[{"message":"Success","result":[{"file_url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/original_file_name-xxxx.jpeg","filepath":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/filename.jpeg","id":"00000000-0000-0000-0000-000000000000","input":"filename.jpg","message":"Success","page":55,"prediction":[],"request_file_id":"00000000-0000-0000-0000-000000000000","request_metadata":"metadata sent during prediction"}]}]}}},"400":{"description":"File missing. Check if you have included a file in the request\n\nOR\n\nIncorrect image. Check if file you included is a valid PNG or JPEG"},"402":{"description":"Exhausted Free API Calls. You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Async Prediction for image file","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar fs = require('fs')\nconst form_data = {'modelId' : 'REPLACE_MODEL_ID', \n 'file' : fs.createReadStream('REPLACE_IMAGE_PATH.jpg'),\n // for base64 of file instead of file\n //'base64_data' : fs.readFileSync(\"REPLACE_IMAGE_PATH.jpg\").toString('base64')\n }\n\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/LabelFile/?async=true',\n formData: form_data,\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/LabelFile/?async=true'\n\ndata = {'file': open('REPLACE_IMAGE_PATH.jpg', 'rb')}\n\nresponse = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)\n\n# for base64 of file instead of file\n# with open('REPLACE_IMAGE_PATH.jpg', 'rb') as file:\n# encoded_file = base64.b64encode(file.read())\n# data = {'base64_data': encoded_file}\n# response = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true' \\\n --header 'accept: multipart/form-data' \\\n -u 'REPLACE_API_KEY' \\\n -F 'file=@REPLACE_IMAGE_PATH.jpg'\n # -d 'base64_data=base64OfFile' # for base64 of file instead of file\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n // \"net/url\"\n \"os\"\n \"path/filepath\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true\"\n\n file, err := os.Open(\"REPLACE_IMAGE_PATH.jpg\")\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer file.Close()\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n\n part, err := writer.CreateFormFile(\"file\", filepath.Base(\"REPLACE_IMAGE_PATH.jpg\"))\n if err != nil {\n fmt.Println(err)\n return\n }\n _, err = io.Copy(part, file)\n\n contentType := writer.FormDataContentType()\n\n err = writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req, _ := http.NewRequest(\"POST\", url, body)\n\n // for base64 of file instead of file\n // data := url.Values{}\n // data.Add(\"base64_data\", base64OfFile)\n // req, _ := http.NewRequest(\"POST\", url, bytes.NewBufferString(data.Encode()))\n\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n respBody, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(respBody))\n\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('file', fileBLob); // This is file object\n//data.append('base64_data', base64EncodedFile); // Can use this for base64 of the file\n\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'net/http/post/multipart'\n\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nFile.open('test.jpg') do |jpg|\nrequest = Net::HTTP::Post::Multipart.new(url.path,\n 'file' =\u003e UploadIO.new(jpg, 'image/jpeg', 'test.jpg'))\n# for base64 of file instead of file\n# request = Net::HTTP::Post.new(url)\n# request.set_form_data({'base64_data' =\u003e base64OfFile})\nrequest.basic_auth 'REPLACE_API_KEY', ''\nresponse = Net::HTTP.start(url.host, url.port) do |http|\n http.request(request)\nend\nputs response.read_body\nend\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic \" + Convert.ToBase64String(Encoding.Default.GetBytes(\"REPLACE_API_KEY:\")));\nrequest.AddHeader(\"accept\", \"Multipart/form-data\");\nrequest.AddFile(\"file\", \"REPLACE_IMAGE_PATH.jpg\");\n// for base64 of file instead of file\n// request.AddParameter(\"base64_data\", base64OfFile);\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\nprivate static final MediaType MEDIA_TYPE_JPG = MediaType.parse(\"image/jpeg\");\n\nOkHttpClient client = new OkHttpClient();\n\nRequestBody requestBody = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"file\", \"REPLACE_IMAGE_PATH.jpg\", RequestBody.create(MEDIA_TYPE_JPG, new File(\"REPLACE_IMAGE_PATH.jpg\")))\n .build();\n\n# for base64 of file instead of file\n# RequestBody formBody = new FormBody.Builder()\n# .add(\"base64_data\", base64OfFile).build();\n\nrequest = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelFile/?async=true\")\n .post(requestBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();\n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/LabelUrls/":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"Use the model to predict which one of the categories an image (given the image url) belongs to. You can specify multiple image urls.","operationId":"OCRModelLabelUrlsByModelIdPost","parameters":[{"description":"","in":"formData","name":"urls","required":true,"type":"string"},{"description":"","in":"formData","name":"base64_data","required":false,"type":"string"},{"description":"metadata to save with the document","in":"formData","name":"request_metadata","required":false,"type":"string"},{"description":"Comma separated page numbers which needs to be processed from the list of URL's ex: '1,2' ","in":"formData","name":"pages_to_process","required":false,"type":"string"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"language hints eg: en, vi (not specifying generally gives best results)","in":"path","name":"l","required":false,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"message":"Success","result":[{"input":"string","message":"Success","prediction":[{"label":"category1","ocr_text":"string","score":0.9,"xmax":100,"xmin":0,"ymax":100,"ymin":0},{"cells":[{"col":1,"col_span":1,"label":"col 1","row":1,"row_span":1,"score":99.99,"text":"ocr text 1","xmax":258,"xmin":159,"ymax":1357,"ymin":1258},{"col":2,"col_span":1,"label":"col 2","row":1,"row_span":1,"score":99.99,"text":"ocr text 2","xmax":380,"xmin":258,"ymax":1357,"ymin":1258},{"col":1,"col_span":1,"label":"col 1","row":2,"row_span":1,"score":99.99,"text":"ocr text 3","xmax":258,"xmin":159,"ymax":1439,"ymin":1357},{"col":2,"col_span":1,"label":"col 2","row":2,"row_span":1,"score":99.99902,"text":"ocr text 4","xmax":380,"xmin":258,"ymax":1439,"ymin":1357}],"label":"","ocr_text":"table 1","score":99.99,"type":"table","xmax":380,"xmin":159,"ymax":1439,"ymin":1258}]}]}}},"202":{"description":"Request partially successful. One or more urls might not be correct or got no response"},"400":{"description":"Urls missing. Check if you have an included array of image urls"},"402":{"description":"Exhausted Free API Calls You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Prediction for image url","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg'], \n // for base64 of file instead of url\n //'base64_data' : fs.readFileSync(\"REPLACE_IMAGE_PATH.jpg\").toString('base64')\n }\n\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/'\n\nheaders = {\n 'accept': 'application/x-www-form-urlencoded'\n}\n\ndata = {'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\n\n# for base64 of file instead of url\n# with open('REPLACE_IMAGE_PATH.jpg', 'rb') as file:\n# encoded_file = base64.b64encode(file.read())\n# data = {'base64_data': encoded_file}\n\nresponse = requests.request('POST', url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/' \\\n --header 'accept: application/x-www-form-urlencoded' \\\n -d 'urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg' \\\n -u 'REPLACE_API_KEY'\n # -d 'base64_data=base64OfFile' # for base64 of file instead of urls\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n\n labelUrl := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/\"\n\n data := url.Values{}\n data.Add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\")\n // for base64 of file instead of url\n // data.Add(\"base64_data\", base64OfFile)\n\n req, _ := http.NewRequest(\"POST\", labelUrl, bytes.NewBufferString(data.Encode()))\n\n req.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}\n"},{"lang":"JavaScript","source":"var data = 'urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg';\n//var data='base64_data=base64EncodedFile'// Can use this for base64 of the url\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/\");\nxhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\n\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = 'application/x-www-form-urlencoded'\nrequest.basic_auth 'REPLACE_API_KEY', ''\n\nrequest.set_form_data({'urls' =\u003e ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']})\n# for base64 of file instead of urls\n# request.set_form_data({'base64_data' =\u003e base64OfFile})\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nrequest.AddHeader(\"accept\", \"application/x-www-form-urlencoded\");\nrequest.AddParameter(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\");\n// for base64 of file instead of url\n// request.AddParameter(\"base64_data\", base64OfFile);\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequestBody formBody = new FormBody.Builder()\n .add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\").build();\n\n# for base64 of file instead of urls\n# RequestBody formBody = new FormBody.Builder()\n# .add(\"base64_data\", base64OfFile).build();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/\")\n .post(formBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();\n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/LabelUrls/?async=true":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"This endpoint allows you to process a file on your OCR model and get the results","operationId":"OCRModelLabelUrlsAsyncByModelIdPost","parameters":[{"description":"","in":"formData","name":"urls","required":true,"type":"string"},{"description":"","in":"formData","name":"base64_data","required":false,"type":"string"},{"description":"metadata to save with the document","in":"formData","name":"request_metadata","required":false,"type":"string"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"},{"description":"This parameter specifies whether you'd like to upload the file for processing and then query the results with a unique id at a later point in time","in":"path","name":"async","required":true,"type":"boolean"}],"produces":["application/json"],"responses":{"200":{"description":"message can contain 3 status messages\n1. success - File has been successfully processed\n2. pending - File is in the queue and will be processed\n3. failure - There was an issue while processing the file. It has been retried 3 times. It is recommended to reupload the file and if the issue persists, please contact support ","examples":{"application/json":{"message":"Success","result":[{"input":"string","message":"Success","result":[{"file_url":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/original_file_name-xxxx.jpeg","filepath":"uploadedfiles/00000000-0000-0000-0000-000000000000/PredictionImages/filename.jpeg","id":"00000000-0000-0000-0000-000000000000","input":"filename.jpg","message":"Success","page":55,"prediction":[],"request_file_id":"00000000-0000-0000-0000-000000000000","request_metadata":"metadata sent during prediction"}]}]}}},"202":{"description":"Request partially successful. One or more urls might not be correct or got no response"},"400":{"description":"Urls missing. Check if you have an included array of image urls"},"402":{"description":"Exhausted Free API Calls You have exhausted your free API calls please change your plan \u003ca href=\"https://app.nanonets.com/user/apps\"\u003ehere\u003c/a\u003e"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Async Prediction for image url","tags":["OCR Predict"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar querystring = require('querystring')\nconst form_data = {'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg'], \n // for base64 of file instead of url\n //'base64_data' : fs.readFileSync(\"REPLACE_IMAGE_PATH.jpg\").toString('base64')\n }\n\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true',\n body: querystring.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true'\n\nheaders = {\n 'accept': 'application/x-www-form-urlencoded'\n}\n\ndata = {'urls' : ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']}\n\n# for base64 of file instead of url\n# with open('REPLACE_IMAGE_PATH.jpg', 'rb') as file:\n# encoded_file = base64.b64encode(file.read())\n# data = {'base64_data': encoded_file}\n\nresponse = requests.request('POST', url, headers=headers, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=data)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true' \\\n --header 'accept: application/x-www-form-urlencoded' \\\n -d 'urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg' \\\n -u 'REPLACE_API_KEY'\n # -d 'base64_data=base64OfFile' # for base64 of file instead of urls\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n\n labelUrl := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true\"\n\n data := url.Values{}\n data.Add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\")\n // for base64 of file instead of url\n // data.Add(\"base64_data\", base64OfFile)\n\n req, _ := http.NewRequest(\"POST\", labelUrl, bytes.NewBufferString(data.Encode()))\n\n req.Header.Add(\"Content-Type\", \"application/x-www-form-urlencoded\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}\n"},{"lang":"JavaScript","source":"var data = 'urls=https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg';\n//var data='base64_data=base64EncodedFile'// Can use this for base64 of the url\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true\");\nxhr.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\n\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = 'application/x-www-form-urlencoded'\nrequest.basic_auth 'REPLACE_API_KEY', ''\n\nrequest.set_form_data({'urls' =\u003e ['https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg']})\n# for base64 of file instead of urls\n# request.set_form_data({'base64_data' =\u003e base64OfFile})\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nrequest.AddHeader(\"accept\", \"application/x-www-form-urlencoded\");\nrequest.AddParameter(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\");\n// for base64 of file instead of url\n// request.AddParameter(\"base64_data\", base64OfFile);\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequestBody formBody = new FormBody.Builder()\n .add(\"urls\", \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\").build();\n\n# for base64 of file instead of urls\n# RequestBody formBody = new FormBody.Builder()\n# .add(\"base64_data\", base64OfFile).build();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/LabelUrls/?async=true\")\n .post(formBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();\n"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/Train/":{"post":{"consumes":["application/x-www-form-urlencoded"],"description":"You can use this endpoint to train a model after uploading images for each category. You can use the same endpoint to retrain a model after uploading more images to improve the model.","operationId":"OCRModelTrainByModelIdPost","parameters":[{"description":"","in":"path","name":"model_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"model_id":"00000000-0000-0000-0000-000000000000","model_type":"ocr","state":0}}},"400":{"description":"Model not ready for training. Check if the images for the model are uploaded"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Train Model","tags":["OCR Train"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/',\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/'\nresponse = requests.request('POST', url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''))\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/REPLACE_MODEL_ID/Train/' \\\n -u 'REPLACE_API_KEY'\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/\"\n\n req, _ := http.NewRequest(\"POST\", url, nil)\n\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}"},{"lang":"JavaScript","source":"var data = null;\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\nif (this.readyState === this.DONE) {\n console.log(this.responseText);\n}\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/REPLACE_MODEL_ID/Train/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri' require 'net/http'\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/')\nhttp = Net::HTTP.new(url.host, url.port) http.use_ssl = true\nrequest = Net::HTTP::Post.new(url) request.basic_auth 'REPLACE_API_KEY', ''\nresponse = http.request(request) puts response.read_body"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nIRestResponse response = client.Execute(request);"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/Train/\")\n .post(null)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}},"/OCR/Model/{model_id}/UploadFile/":{"post":{"consumes":["multipart/form-data"],"description":"You can use this endpoint to upload training images for a category (for the specified model) using locally stored files. You will receive model information along with total number of images per category on successful execution. \u003cbr\u003eNote: Filename in Data must be the same as that of the uploaded image name.","operationId":"OCRModelUploadFileByModelIdPost","parameters":[{"description":"","in":"formData","name":"data","required":true,"type":"string"},{"description":"","in":"formData","name":"file","required":true,"type":"file"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"Data":[{"filename":"example.jpeg","id":"00000000-0000-0000-0000-000000000000","object":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"category1"}],"size":{"height":1024,"width":1024}}],"Meta":{"Accuracy":0,"Categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"ModelID":"00000000-0000-0000-0000-000000000000","ModelType":"localization","State":0,"Status":"Current Status"}}}},"400":{"description":"Category not valid for model. Check if this model has the category used in the request\n\nOR\n\nFile missing. Check if you have included the file in the request\n\nOR\n\nIncorrect image. Check if file you included is valid PNG or JPEG file"},"404":{"description":"Model does not exists. Check if the model id exists"}},"summary":"Upload training images by File","tags":["OCR Upload"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nvar fs = require('fs')\nconst form_data = {'file' : fs.createReadStream('REPLACE_IMAGE_PATH.jpg'), 'data' : JSON.stringify([\n {\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\":[{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\":1,\"xmax\": 100, \"ymax\": 100}}]}])}\n\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/',\n formData: form_data,\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64')\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/'\n\ndata = {'file' :open('REPLACE_IMAGE_PATH.jpg', 'rb'), 'data' :('', '[{\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}]')}\n\nresponse = requests.post(url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), files=data)\n\nprint(response.text)"},{"lang":"Shell","source":"curl --request POST \\\n --url 'https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/' \\\n --header 'accept: multipart/form-data' \\\n -u 'REPLACE_API_KEY' \\\n -F 'data=[{\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}]' \\\n -F 'file=@REPLACE_IMAGE_PATH.jpg'\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"bytes\"\n \"fmt\"\n \"io\"\n \"io/ioutil\"\n \"mime/multipart\"\n \"net/http\"\n \"os\"\n \"path/filepath\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/\"\n\n file, err := os.Open(\"test.jpg\")\n if err != nil {\n fmt.Println(err)\n return\n }\n\n defer file.Close()\n\n body := \u0026bytes.Buffer{}\n writer := multipart.NewWriter(body)\n\n part, err := writer.CreateFormFile(\"file\", filepath.Base(\"test.jpg\"))\n if err != nil {\n fmt.Println(err)\n return\n }\n _, err = io.Copy(part, file)\n\n writer.WriteField(\"data\", `[{\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}]`)\n contentType := writer.FormDataContentType()\n\n err = writer.Close()\n if err != nil {\n fmt.Println(err)\n return\n }\n\n req, _ := http.NewRequest(\"POST\", url, body)\n\n req.Header.Add(\"Content-Type\", contentType)\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n outputBody, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(outputBody))\n\n}\n"},{"lang":"JavaScript","source":"var data = new FormData();\ndata.append('data', '[{\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}]');\ndata.append('file', file); // file is a Blob object\n\nvar xhr = new XMLHttpRequest();\n\nvar xhr = new XMLHttpRequest();\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === this.DONE) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);\n"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'net/http/post/multipart'\n\nurl = URI('https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nFile.open('REPLACE_IMAGE_PATH.jpg') do |jpg|\n request = Net::HTTP::Post::Multipart.new url.path,\n 'file' =\u003e UploadIO.new(jpg, 'image/jpeg', 'REPLACE_IMAGE_PATH.jpg'),\n 'data' =\u003e '[{\"filename\":\"REPLACE_IMAGE_FILENAME.jpg\", \"object\":[{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\":{\"xmin\":1,\"ymin\":1,\"xmax\":100, \"ymax\":100}}]}]'\n request.basic_auth 'REPLACE_API_KEY', ''\n response = Net::HTTP.start(url.host, url.port) do |http|\n http.request(request)\n end\n puts response.read_body\nend\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/UploadFile/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nrequest.AddHeader(\"accept\", \"Multipart/form-data\");\nrequest.AddParameter(\"data\", \"[{\\\"filename\\\":\\\"REPLACE_IMAGE_FILENAME.jpg\\\", \\\"object\\\": [{\\\"name\\\":\\\"category1\\\", \\\"ocr_text\\\":\\\"text inside the bounding box\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}]}]\");\nrequest.AddFile(\"file\", \"REPLACE_IMAGE_PATH.jpg\");\nIRestResponse response = client.Execute(request);\"\n"},{"lang":"Java","source":"private static final MediaType MEDIA_TYPE_JPG = MediaType.parse(\"image/jpeg\");\n\nOkHttpClient client = new OkHttpClient();\n\nRequestBody requestBody = new MultipartBody.Builder()\n .setType(MultipartBody.FORM)\n .addFormDataPart(\"data\", \"[{\\\"filename\\\":\\\"REPLACE_IMAGE_FILENAME.jpg\\\", \\\"object\\\": [{\\\"name\\\":\\\"category1\\\", \\\"ocr_text\\\":\\\"text inside the bounding box\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}]}]\")\n .addFormDataPart(\"file\", \"REPLACE_IMAGE_PATH.jpg\", RequestBody.create(MEDIA_TYPE_JPG, new File(\"REPLACE_IMAGE_PATH.jpg\")))\n .build();\n\nrequest = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/{{model_id}}/UploadFile/\")\n .post(requestBody)\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();\"\n"}]}},"/OCR/Model/{model_id}/UploadUrls/":{"post":{"description":"You can use this endpoint to upload training images for a category (for the specified model) by image urls. You can upload multiple images in the same request by adding an array of urls. You will receive model information along with total number of images per category on successful execution.","operationId":"OCRModelUploadUrlsByModelIdPost","parameters":[{"description":"","in":"body","name":"Body","required":true,"schema":{"$ref":"#/definitions/UploadTrainingImagesByUrlrequest"}},{"description":"","in":"header","name":"Content-Type","required":true,"type":"string"},{"description":"","in":"path","name":"model_id","required":true,"type":"string"}],"produces":["application/json"],"responses":{"200":{"description":"Model Object","examples":{"application/json":{"Data":[{"filename":"example.jpeg","id":"00000000-0000-0000-0000-000000000000","object":[{"bndbox":{"xmax":100,"xmin":1,"ymax":100,"ymin":1},"name":"category1","ocr_text":"text inside the bounding box"}],"size":{"height":1024,"width":1024}}],"Meta":{"Accuracy":0,"Categories":[{"count":0,"name":"category1"},{"count":0,"name":"category2"}],"ModelID":"00000000-0000-0000-0000-000000000000","ModelType":"ocr","State":0,"Status":"Current Status"}}}},"202":{"description":"Request partially successful. One or more urls might not be correct or got no response"},"400":{"description":"Category not valid for model. Check if this model has the category used in the request\n\nOR\n\nUrls missing. Check if you have included an array of image urls"},"404":{"description":"Model does not exists. Check if the model id exists"}},"security":[{"ApiKey":[]}],"summary":"Upload training images by Url","tags":["OCR Upload"],"x-code-samples":[{"lang":"Nodejs","source":"var request = require('request')\nconst form_data = {\"data\": [{\"filename\":\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}, {\"name\":\"category2\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}], \"urls\": [\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\"]}\nconst options = {\n url : 'https://app.nanonets.com/api/v2/OCR/Model/{model_id}/UploadUrls/',\n body: JSON.stringify(form_data),\n headers: {\n 'Authorization' : 'Basic ' + Buffer.from('REPLACE_API_KEY' + ':').toString('base64'),\n 'Content-Type': \"application/json\"\n }\n}\nrequest.post(options, function(err, httpResponse, body) {\n\n console.log(body)\n});\n"},{"lang":"Python","source":"import requests\n\nurl = \"https://app.nanonets.com/api/v2/OCR/Model/{model_id}/UploadUrls/\"\n\npayload = \"{\\\"data\\\": [{\\\"filename\\\":\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\", \\\"object\\\": [{\\\"name\\\":\\\"category1\\\", \\\"ocr_text\\\":\\\"text inside the bounding box\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}, {\\\"name\\\":\\\"category2\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}]}], \\\"urls\\\": [\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\"]}\"\nheaders = {\n 'Content-Type': \"application/json\"\n}\n\nresponse = requests.request(\"POST\", url, auth=requests.auth.HTTPBasicAuth('REPLACE_API_KEY', ''), data=payload, headers=headers)\n\nprint(response.text)\n"},{"lang":"Shell","source":"curl --request POST \\\n --url https://app.nanonets.com/api/v2/OCR/Model/{model_id}/UploadUrls/ \\\n -u 'REPLACE_API_KEY' \\\n -H 'Content-Type: application/json' \\\n --data '{\"data\": [{\"filename\":\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\":\"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}, {\"name\":\"category2\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}], \"urls\": [\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\"]}'\n"},{"lang":"Golang","source":"package main\n\nimport (\n \"fmt\"\n \"io/ioutil\"\n \"net/http\"\n \"strings\"\n)\n\nfunc main() {\n\n url := \"https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/UploadUrls/\"\n\n payload := strings.NewReader(\"{\\\"data\\\": [{\\\"filename\\\":\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\", \\\"object\\\": [{\\\"name\\\":\\\"category1\\\", \\\"ocr_text\\\":\\\"text inside the bounding box\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}, {\\\"name\\\":\\\"category2\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}]}], \\\"urls\\\": [\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\"]}\")\n\n req, _ := http.NewRequest(\"POST\", url, payload)\n\n req.Header.Add(\"Content-Type\", \"application/json\")\n req.SetBasicAuth(\"REPLACE_API_KEY\", \"\")\n\n res, _ := http.DefaultClient.Do(req)\n\n defer res.Body.Close()\n body, _ := ioutil.ReadAll(res.Body)\n\n fmt.Println(res)\n fmt.Println(string(body))\n\n}\n"},{"lang":"JavaScript","source":"var data = JSON.stringify({\n \"data\": [\n {\n \"filename\": \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\",\n \"object\": [\n {\n \"name\": \"category1\",\n \"bndbox\": {\n \"xmin\": 1,\n \"ymin\": 1,\n \"xmax\": 100,\n \"ymax\": 100\n },\n \"ocr_text\" : \"text inside the bounding box\",\n },\n {\n \"name\": \"category2\",\n \"bndbox\": {\n \"xmin\": 1,\n \"ymin\": 1,\n \"xmax\": 100,\n \"ymax\": 100\n },\n \"ocr_text\" : \"text inside the bounding box\",\n }\n ]\n }\n ],\n \"urls\": [\n \"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\"\n ]\n});\n\nvar xhr = new XMLHttpRequest();\nxhr.withCredentials = true;\n\nxhr.addEventListener(\"readystatechange\", function () {\n if (this.readyState === 4) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"POST\", \"https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/UploadUrls/\");\nxhr.setRequestHeader(\"Content-Type\", \"application/json\");\nxhr.setRequestHeader(\"authorization\", \"Basic \" + btoa(\"REPLACE_API_KEY:\"));\n\nxhr.send(data);"},{"lang":"Ruby","source":"require 'uri'\nrequire 'net/http'\n\nurl = URI(\"https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/UploadUrls/\")\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Content-Type\"] = 'application/json'\nrequest.basic_auth 'REPLACE_API_KEY', ''\nrequest.body = \"{\\\"data\\\": [{\\\"filename\\\":\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\", \\\"object\\\": [{\\\"name\\\":\\\"category1\\\", \\\"ocr_text\\\":\\\"text inside the bounding box\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}, {\\\"name\\\":\\\"category2\\\", \\\"bndbox\\\": {\\\"xmin\\\": 1,\\\"ymin\\\": 1,\\\"xmax\\\": 100, \\\"ymax\\\": 100}}]}], \\\"urls\\\": [\\\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\\\"]}\"\n\nresponse = http.request(request)\nputs response.read_body\"\n"},{"lang":"C#","source":"var client = new RestClient(\"https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/UploadUrls/\");\nvar request = new RestRequest(Method.POST);\nrequest.AddHeader(\"authorization\", \"Basic REPLACE_API_KEY\");\nrequest.AddHeader(\"Content-Type\", \"application/json\");\nrequest.AddParameter(\"undefined\", \" {\"data\": [{\"filename\":\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\": \"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}, {\"name\":\"category2\", \"ocr_text\": \"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}], \"urls\": [\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\"]}\", ParameterType.RequestBody);\nIRestResponse response = client.Execute(request);\n"},{"lang":"Java","source":"OkHttpClient client = new OkHttpClient();\n\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"\n{\"data\": [{\"filename\":\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\", \"object\": [{\"name\":\"category1\", \"ocr_text\": \"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}, {\"name\":\"category2\", \"ocr_text\": \"text inside the bounding box\", \"bndbox\": {\"xmin\": 1,\"ymin\": 1,\"xmax\": 100, \"ymax\": 100}}]}], \"urls\": [\"https://nanonets.s3-us-west-2.amazonaws.com/test-images/test1.jpg\"]}\");\nRequest request = new Request.Builder()\n .url(\"https://app.nanonets.com/api/v2/OCR/Model/REPLACE_MODEL_ID/UploadUrls/\")\n .post(body)\n .addHeader(\"Content-Type\", \"application/json\")\n .addHeader(\"Authorization\", Credentials.basic(\"REPLACE_API_KEY\", \"\"))\n .build();\n\nResponse response = client.newCall(request).execute();"}],"x-operation-settings":{"AllowDynamicFormParameters":false,"AllowDynamicQueryParameters":false,"CollectParameters":false,"IsMultiContentStreaming":false},"x-unitTests":[]}}},"produces":["application/json"],"schemes":["https"],"securityDefinitions":{"ApiKey":{"description":"When you sign up for an account, you are given your first API key. To do so please [follow this link.](https://app.nanonets.com/#keys)\n\nAlso you can generate additional API keys, and delete API keys (as you may need to rotate your keys in the future). NanoNets expects for the API key to be included in all API requests to the server in a header that looks like the following:\n\n\u003cspan style=\"color:red\"\u003eAuthorization: REPLACE_API_KEY\u003c/span\u003e\n\nAll API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.","type":"basic","x-skip-client-authentication":false,"x-testValue":[]}},"swagger":"2.0","tags":[{"description":"You can create new image classification model [here](https://app.nanonets.com/#/ic/create)","name":"Image Classification Model"}],"x-tagGroups":[{"name":"OCR","tags":["OCR Model","OCR Upload","OCR Train","OCR Predict"]},{"name":"Free Full Text OCR","tags":["Get Full Text"]},{"name":"Image Classification","tags":["Image Classification Model","Image Classification Model Upload","Image Classification Model Train","Image Classification Model Predict"]}]}