{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"cfe420bf-55dc-416c-9955-aa8068c6011a","name":"Neurolabs API v2","description":"# Neurolabs API Workflows\n\nWelcome to the Postman documentation for the Neurolabs API. This guide is designed to provide a detailed overview of the API functionalities, empowering you with the knowledge to seamlessly integrate and effectively utilize our cutting-edge synthetic image recognition services. Learn more at [neurolabs.ai](https://www.neurolabs.ai)\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [API Workflows](#api-workflows)\n    - [Pre-requisite Terms](#pre-requisite-terms)\n- [Catalog Onboarding Workflows](#catalog-onboarding-workflows)\n- [Image Recognition Workflows](#image-recognition-workflows)\n    - [Asynchronous Image Recognition](#asynchronous-image-recognition)\n    - [Synchronous Image Recognition](#synchronous-image-recognition)\n    - [Retrieving Image Recognition Results](#retrieving-image-recognition-results)\n- [Upkeep Workflows](#upkeep-workflows)\n    \n\n- [Item Catalog](#item-catalog)\n- [Task Management](#task-management)\n- [Start Image Recognition](#start-image-recognition)\n- [Image Recognition Results](#image-recognition-results)\n    \n\n## Introduction\n\nThe Neurolabs API offers robust solutions for image recognition, enabling seamless integration and utilization of advanced AI capabilities.\n\nAccess the Open API documentation at [Neurolabs API v2 Docs](https://api.neurolabs.ai/v2/docs) and find additional resources at [Neurolabs Documentation](https://docs.neurolabs.ai/).\n\n## API Workflows\n\n### Pre-requisite Terms\n\nFamiliarize yourself with key terms used in this documentation:\n\n1. **Image Recognition Result (**`IR Result`**)**: The output of an image recognition request, detailing the identified items.\n2. **Image Recognition Task (**`IR Task`**)**: A job created for processing images for recognition.\n3. **Item Catalog**: A repository of items that the API can recognize, including metadata and reference images.\n4. **Item Catalog - Reference Images**: Images that help in identifying items in the catalog.\n5. **Item Catalog - 3D Asset**: 3D models of catalog items to improve recognition accuracy.\n6. **Zia-Capture App**: An application facilitating image capture and catalog integration.\n    \n\n## Catalog Onboarding Workflows\n\nOnboard catalogs and create image recognition tasks efficiently:\n\n1. **Onboard Catalog & Create IR Task**\n    \n    - **Step 1**: Initiate catalog onboarding by iterating over your source of truth and sending catalog details via POST `/catalog-items`.\n        \n        - Using `Zia-Capture` will automatically pull details, setting `Status: Processing`.\n        - Without `Zia-Capture`, the status remains `Ready` until updated to `Capture Needed`.\n            \n    - **Step 2**: Retrieve all catalog items using GET `/catalog-items` and select a list of relevant ones for image recognition.\n        \n    - **Step 3**: Create an IR task with selected `catalog_items` via POST `/image-recognition/tasks`.\n2. **Updating Catalog & IR Tasks**  \n    Regularly update both the catalog and IR tasks to maintain accuracy and efficiency. This is a process often used to match to the customer image capture workflows, i.e sending images from different geographies, field reps, customers.\n    \n    - **Step 1**: Add new items to an existing IR Task using the PUT `/image-recognition/tasks/{task_uuid}`.\n    - **Step 2**: Exclude irrelevant items from IR Tasks to improve IR Results, using the same PUT method. Onboarding items in an IR task that are outside of the scope of image recognition, can result in worse `IR Results`, in which case you can exclude items from an IR task such that it's not processed by the image recognition process.\n\nCongratulations, you are ready for detecting items!\n\n## Image Recognition Workflows\n\nDive into the core of image recognition with these workflows:\n\n### Asynchronous Image Recognition\n\n1. **Step 1**: Retrieve the `IR Task` ID (`task_uuid`).\n2. **Step 2**: Start recognizing images asynchronously with POST `/image-recognition/tasks/{task_uuid}/urls`. Provide images as publicly accessible URLs.\n3. **Step 3**: Each image gets an `IR Result`. Image recognition can take longer, depending on the amount of images you're sending and the SLAs agreed upon.\n4. **Step 4**: Track these using GET `/v2/image-recognition/tasks/{task_uuid}/results/{result_uuid}`.\n5. **Step 5 (Optional)**: Providing a `callback` URL in the payload triggers an HTTP POST request with the `IR result` to that URL once each prediction is complete.\n6. **Step 6 (Optional)**: For private images, upload them using POST `/image-recognition/tasks/{task_uuid}/images` with **multipart/form-data** encoding.\"\n    \n\n### Synchronous Image Recognition\n\n1. **Step 1**: Obtain the relevant `IR Task` (`task_uuid`).\n2. **Step 2**: Recognize images synchronously via POST `/image-recognition/tasks/{task_uuid}/sync-image`. Upload images directly for immediate processing. If the image processing takes longer than the timeout, the response will be returned with empty `IR Results` and a 408 status code. However, the processing will continue running in the background.\n3. **Step 3**: Retrieve the `IR Results` using GET `/image-recognition/tasks/{task_uuid}/results/{result_uuid}`.\n    \n\n### Retrieving Image Recognition Results\n\nObtain detailed IR Results for comprehensive analysis and utilization:\n\n- Use GET `/image-recognition/tasks/{task_uuid}/results/` to fetch results for an entire IR Task or specific images.\n    \n\nA sample response for IR Results can be found below\n\n``` json\n{\n\"uuid\": \"123455ab-123\",\n\"task_uuid\": \"5454ad-123\",\n\"image_url\": \"https://storage.googleapis.com/nlb-dev/public/demo.jpeg\",\n\"duration\": 3.5,\n\"created_at\": \"2024-01-01T12:00:00.000Z\",\n\"updated_at\": \"2024-01-01T12:00:00.000Z\",\n\"postprocessing_results\": {\n   \"realogram\": [...],\n   \"shares\": [...]\n},\n\"coco\": {...},\n\"confidence_score\": 0.98\n}\n\n ```\n\n## Upkeep Workflows\n\nMaintain the integrity and accuracy of your image recognition system:\n\n1. **Catalog Management Validation & Improvements**  \n    Ensure the performance of the IR system through regular validation and improvement of the catalog and IR tasks. In order to get an accuracy metric in our web app UI, you need to validate and correct predicted items. This is a crucial part of the catalog management & up-keep, and it further gives you the ability to manually add new items from processed images. The validated images will appear in the catalog Item `Improve Accuracy` window, where you can add them as real reference crops for such that the image recognition process learns & improves.\n    - **Step 1**: Validate IR Results using the web app UI or your interface.\n    - **Step 2**: Enhance item recognition by uploading real-reference images or crops via UI or use POST `/catalog-items/{item_uuid}/reference-images`. Both of these workflows have been designed to enhance the capabilities of the image labelling process.\n2. **Image Recognition Re-processing**  \n    In some situations, there is a need to re-process images, either as soon as the previous step has finished, or in order to re-run certain reports within a new & updated IR task. This is currently in development, and users will be given the ability to re-process images given certain filters, such as processing intervals.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"13254294","team":6109837,"collectionId":"cfe420bf-55dc-416c-9955-aa8068c6011a","publishedId":"2sA35A7k1j","public":true,"publicUrl":"https://postman.neurolabs.ai","privateUrl":"https://go.postman.co/documentation/13254294-cfe420bf-55dc-416c-9955-aa8068c6011a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":"Neurolabs API Workflows "}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2024-03-22T03:23:58.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Neurolabs API Workflows ","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/f0dd68366caa4ee2951dbe5980726da9ee1da143cbaf01580a6a8f82a3e9d401","favicon":"https://neurolabs.ai/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://postman.neurolabs.ai/view/metadata/2sA35A7k1j"}