{"_id":"590a25acd47da32300b68bde","order":0,"slug":"introduction-to-the-einstein-predictive-vision-service","body":"Artificial Intelligence (AI) is already part of our lives. Whenever you pick up your smartphone, you’re already seeing what AI can do for you, from tailored recommendations to relevant search results. With Einstein Vision, developers can harness the power of image recognition to build AI-powered apps fast. All without a data science degree!\n\nEinstein Vision is part of the Einstein Platform Services technologies, and you can use it to AI-enable your apps. Leverage pre-trained classifiers, or train your own custom classifiers to solve a vast array of specialized image-recognition use cases. Developers can bring the power of image recognition to CRM and third-party applications so that end users across sales, service, and marketing can discover new insights about their customers and predict outcomes that lead to smarter decisions.\n\nEinstein Vision includes these APIs:\n\n- Einstein Image Classification—Enables developers to train deep learning models to recognize and classify images at scale.\n\n- Einstein Object Detection (Pilot)—Enables developers to train models to recognize and count multiple distinct objects within an image, providing granular details like the size and location of each object.\n\n\n<sub>Rights of ALBERT EINSTEIN are used with permission of The Hebrew University of Jerusalem. Represented exclusively by Greenlight.</sub>\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"body\": \"There's a new API endpoint in town! You can now reference the Einstein Platform Services APIs by using this endpoint: **https://<span></span>api.einstein.ai**. The old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint.\"\n}\n[/block]","githubsync":"","link_external":false,"link_url":"","sync_unique":"","user":"573b5a1f37fcf72000a2e683","excerpt":"","hidden":false,"isReference":false,"next":{"pages":[],"description":""},"parentDoc":null,"category":"590a25abd47da32300b68bd6","createdAt":"2016-09-15T21:28:44.503Z","api":{"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"project":"552d474ea86ee20d00780cd7","title":"Introduction to Salesforce Einstein Vision","type":"basic","updates":["59aa1edec250f8000f836ae5"],"version":"590a25abd47da32300b68bd5","__v":1,"childrenPages":[]}

Introduction to Salesforce Einstein Vision


Artificial Intelligence (AI) is already part of our lives. Whenever you pick up your smartphone, you’re already seeing what AI can do for you, from tailored recommendations to relevant search results. With Einstein Vision, developers can harness the power of image recognition to build AI-powered apps fast. All without a data science degree! Einstein Vision is part of the Einstein Platform Services technologies, and you can use it to AI-enable your apps. Leverage pre-trained classifiers, or train your own custom classifiers to solve a vast array of specialized image-recognition use cases. Developers can bring the power of image recognition to CRM and third-party applications so that end users across sales, service, and marketing can discover new insights about their customers and predict outcomes that lead to smarter decisions. Einstein Vision includes these APIs: - Einstein Image Classification—Enables developers to train deep learning models to recognize and classify images at scale. - Einstein Object Detection (Pilot)—Enables developers to train models to recognize and count multiple distinct objects within an image, providing granular details like the size and location of each object. <sub>Rights of ALBERT EINSTEIN are used with permission of The Hebrew University of Jerusalem. Represented exclusively by Greenlight.</sub> [block:callout] { "type": "danger", "body": "There's a new API endpoint in town! You can now reference the Einstein Platform Services APIs by using this endpoint: **https://<span></span>api.einstein.ai**. The old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint." } [/block]
Artificial Intelligence (AI) is already part of our lives. Whenever you pick up your smartphone, you’re already seeing what AI can do for you, from tailored recommendations to relevant search results. With Einstein Vision, developers can harness the power of image recognition to build AI-powered apps fast. All without a data science degree! Einstein Vision is part of the Einstein Platform Services technologies, and you can use it to AI-enable your apps. Leverage pre-trained classifiers, or train your own custom classifiers to solve a vast array of specialized image-recognition use cases. Developers can bring the power of image recognition to CRM and third-party applications so that end users across sales, service, and marketing can discover new insights about their customers and predict outcomes that lead to smarter decisions. Einstein Vision includes these APIs: - Einstein Image Classification—Enables developers to train deep learning models to recognize and classify images at scale. - Einstein Object Detection (Pilot)—Enables developers to train models to recognize and count multiple distinct objects within an image, providing granular details like the size and location of each object. <sub>Rights of ALBERT EINSTEIN are used with permission of The Hebrew University of Jerusalem. Represented exclusively by Greenlight.</sub> [block:callout] { "type": "danger", "body": "There's a new API endpoint in town! You can now reference the Einstein Platform Services APIs by using this endpoint: **https://<span></span>api.einstein.ai**. The old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint." } [/block]
{"_id":"590a25acd47da32300b68bdf","category":"590a25abd47da32300b68bd6","createdAt":"2016-09-15T21:40:16.560Z","hidden":false,"isReference":false,"link_external":false,"link_url":"","next":{"pages":[],"description":""},"order":1,"slug":"what-is-the-predictive-vision-service","user":"573b5a1f37fcf72000a2e683","project":"552d474ea86ee20d00780cd7","sync_unique":"","__v":0,"api":{"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"body":"Einstein Vision enables you to tap into the power of AI and train deep learning models to recognize and classify images at scale. You can use pre-trained classifiers or train your own custom classifiers to solve unique use cases.\n\nFor example, Salesforce Social Studio integrates with this service to expand a marketer’s view beyond just keyword listening. You can “visually listen” to detect attributes about an image, such as detecting your brand logo or that of your competitor in a customer’s photo. You can use these attributes to learn more about your customers' lifestyles and preferences.\n \nImages contain contextual clues about all aspects of your business, including your customers’ preferences, your inventory levels, and the quality of your products. You can use these clues to enrich what you know about your sales, service, and marketing efforts to gain new insights about your customers and take action. The possibilities are limitless with applications that include:\n\n- Visual search—Expand the ways that your customers can discover your products and increase sales.\n - Provide customers with visual filters to find products that best match their preferences while browsing online.\n - Allow customers to take photos of your products to discover where they can make purchases online or in-store.\n\n\n- Brand detection—Monitor your brand across all your channels to increase your marketing reach and preserve brand integrity.\n - Better understand customer preferences and lifestyle through their social media images.\n -  Monitor user-generated images through communities and review boards to improve products and quality of service.\n - Evaluate banner advertisement exposure during broadcast events to drive higher ROI.\n\n\n- Product identification—Increase the ways that you can identify your products to streamline sales processes and customer service.\n - Identify product issues before sending out a field technician to increase case resolution time.\n - Discover which products are out of stock or misplaced to streamline inventory restocking.\n - Measure retail shelf-share to optimize product mix and represent top-selling products among competitors.\n\n\n#Deep Learning in a Nutshell#\nDeep learning is a branch of machine learning, so let’s first define that term. Machine learning is a type of AI that provides computers with the ability to learn without being explicitly programmed. Machine learning algorithms can tell you something interesting about a set of data without writing custom code specific to a problem. Instead, you feed data to generic algorithms, and these algorithms build their own logic as it relates to the patterns within the data.\n\nIn deep learning, you create and train a neural network in a specific way. A neural network is a set of algorithms designed to recognize patterns. In deep learning, the neural network has multiple layers. At the top layer, the network trains on a specific set of features and then sends that information to the next layer. The network takes that information, combines it with other features and passes it to the next layer, and so on. \n\nDeep learning has increased in popularity because it has proven to outperform other methodologies for machine learning. Due to the advancement of distributed compute resources and businesses generating an influx of image, text, and voice data, deep learning can deliver insights that weren’t previously possible.","excerpt":"","githubsync":"","parentDoc":null,"updates":[],"title":"What is Einstein Vision?","type":"basic","version":"590a25abd47da32300b68bd5","childrenPages":[]}

What is Einstein Vision?


Einstein Vision enables you to tap into the power of AI and train deep learning models to recognize and classify images at scale. You can use pre-trained classifiers or train your own custom classifiers to solve unique use cases. For example, Salesforce Social Studio integrates with this service to expand a marketer’s view beyond just keyword listening. You can “visually listen” to detect attributes about an image, such as detecting your brand logo or that of your competitor in a customer’s photo. You can use these attributes to learn more about your customers' lifestyles and preferences. Images contain contextual clues about all aspects of your business, including your customers’ preferences, your inventory levels, and the quality of your products. You can use these clues to enrich what you know about your sales, service, and marketing efforts to gain new insights about your customers and take action. The possibilities are limitless with applications that include: - Visual search—Expand the ways that your customers can discover your products and increase sales. - Provide customers with visual filters to find products that best match their preferences while browsing online. - Allow customers to take photos of your products to discover where they can make purchases online or in-store. - Brand detection—Monitor your brand across all your channels to increase your marketing reach and preserve brand integrity. - Better understand customer preferences and lifestyle through their social media images. - Monitor user-generated images through communities and review boards to improve products and quality of service. - Evaluate banner advertisement exposure during broadcast events to drive higher ROI. - Product identification—Increase the ways that you can identify your products to streamline sales processes and customer service. - Identify product issues before sending out a field technician to increase case resolution time. - Discover which products are out of stock or misplaced to streamline inventory restocking. - Measure retail shelf-share to optimize product mix and represent top-selling products among competitors. #Deep Learning in a Nutshell# Deep learning is a branch of machine learning, so let’s first define that term. Machine learning is a type of AI that provides computers with the ability to learn without being explicitly programmed. Machine learning algorithms can tell you something interesting about a set of data without writing custom code specific to a problem. Instead, you feed data to generic algorithms, and these algorithms build their own logic as it relates to the patterns within the data. In deep learning, you create and train a neural network in a specific way. A neural network is a set of algorithms designed to recognize patterns. In deep learning, the neural network has multiple layers. At the top layer, the network trains on a specific set of features and then sends that information to the next layer. The network takes that information, combines it with other features and passes it to the next layer, and so on. Deep learning has increased in popularity because it has proven to outperform other methodologies for machine learning. Due to the advancement of distributed compute resources and businesses generating an influx of image, text, and voice data, deep learning can deliver insights that weren’t previously possible.
Einstein Vision enables you to tap into the power of AI and train deep learning models to recognize and classify images at scale. You can use pre-trained classifiers or train your own custom classifiers to solve unique use cases. For example, Salesforce Social Studio integrates with this service to expand a marketer’s view beyond just keyword listening. You can “visually listen” to detect attributes about an image, such as detecting your brand logo or that of your competitor in a customer’s photo. You can use these attributes to learn more about your customers' lifestyles and preferences. Images contain contextual clues about all aspects of your business, including your customers’ preferences, your inventory levels, and the quality of your products. You can use these clues to enrich what you know about your sales, service, and marketing efforts to gain new insights about your customers and take action. The possibilities are limitless with applications that include: - Visual search—Expand the ways that your customers can discover your products and increase sales. - Provide customers with visual filters to find products that best match their preferences while browsing online. - Allow customers to take photos of your products to discover where they can make purchases online or in-store. - Brand detection—Monitor your brand across all your channels to increase your marketing reach and preserve brand integrity. - Better understand customer preferences and lifestyle through their social media images. - Monitor user-generated images through communities and review boards to improve products and quality of service. - Evaluate banner advertisement exposure during broadcast events to drive higher ROI. - Product identification—Increase the ways that you can identify your products to streamline sales processes and customer service. - Identify product issues before sending out a field technician to increase case resolution time. - Discover which products are out of stock or misplaced to streamline inventory restocking. - Measure retail shelf-share to optimize product mix and represent top-selling products among competitors. #Deep Learning in a Nutshell# Deep learning is a branch of machine learning, so let’s first define that term. Machine learning is a type of AI that provides computers with the ability to learn without being explicitly programmed. Machine learning algorithms can tell you something interesting about a set of data without writing custom code specific to a problem. Instead, you feed data to generic algorithms, and these algorithms build their own logic as it relates to the patterns within the data. In deep learning, you create and train a neural network in a specific way. A neural network is a set of algorithms designed to recognize patterns. In deep learning, the neural network has multiple layers. At the top layer, the network trains on a specific set of features and then sends that information to the next layer. The network takes that information, combines it with other features and passes it to the next layer, and so on. Deep learning has increased in popularity because it has proven to outperform other methodologies for machine learning. Due to the advancement of distributed compute resources and businesses generating an influx of image, text, and voice data, deep learning can deliver insights that weren’t previously possible.
{"_id":"590a25acd47da32300b68be0","updates":["580664694ea93f3700b5f1ab"],"body":"We’re now in the world of AI and deep learning, and this space has lots of new terms to become familiar with. Understanding these terms and how they relate to each other makes it easier to work with Einstein Vision.\n\n- **Dataset**—The training data, which consists of inputs and outputs. Training the dataset creates the model used to make predictions. For an image recognition problem, the image examples you provide train the model on the desired output labels that you want the model to predict. For example, in the Create a Custom Classifier [Scenario](doc:scenario), you create a model named Beach and Mountain Model from a binary training dataset consisting of two labels: Beaches (images of beach scenes) and Mountains (images of mountain scenes). A non-binary dataset contains three or more labels.\n\n- **Label**—A group of similar data inputs in a dataset that your model is trained to recognize. A label references the output name you want your model to predict. For example, for our Beach and Mountain model, the training data contains images of beaches and that label is  “Beaches.” Images of mountains have a label of “Mountains.” The food classifier, which is trained from a multi-label dataset, contains labels like chocolate cake, pasta, macaroons, and so on.\n\n- **Model**—A machine learning construct used to solve a classification problem. Developers design a classification model by creating a dataset and then defining labels and providing positive examples of inputs that belong to these labels. When you train the dataset, the system then determines the commonalities and differences between the various labels to generalize the characteristics that define each label. The model predicts which class a new input falls into based on the predefined classes specified in your training dataset.\n \n- **Training**—The process through which a model is created and learns the classification rules based on a given set of training inputs (dataset).\n\n- **Prediction**—The results that the model returns as to how closely the input matches data in the dataset.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/0089e22-vision_terms_graphic.png\",\n        \"vision_terms_graphic.png\",\n        2000,\n        800,\n        \"#f3f3f3\"\n      ]\n    }\n  ]\n}\n[/block]","category":"590a25abd47da32300b68bd6","githubsync":"","isReference":false,"type":"basic","createdAt":"2016-09-15T21:49:11.143Z","hidden":false,"slug":"predictive-vision-service-terminology","title":"Einstein Vision Terminology","version":"590a25abd47da32300b68bd5","order":2,"parentDoc":null,"project":"552d474ea86ee20d00780cd7","sync_unique":"","user":"573b5a1f37fcf72000a2e683","next":{"pages":[],"description":""},"__v":0,"api":{"params":[],"url":"","results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"status":400,"name":"","code":"{}","language":"json"}]},"settings":"","auth":"required"},"excerpt":"","link_external":false,"link_url":"","childrenPages":[]}

Einstein Vision Terminology


We’re now in the world of AI and deep learning, and this space has lots of new terms to become familiar with. Understanding these terms and how they relate to each other makes it easier to work with Einstein Vision. - **Dataset**—The training data, which consists of inputs and outputs. Training the dataset creates the model used to make predictions. For an image recognition problem, the image examples you provide train the model on the desired output labels that you want the model to predict. For example, in the Create a Custom Classifier [Scenario](doc:scenario), you create a model named Beach and Mountain Model from a binary training dataset consisting of two labels: Beaches (images of beach scenes) and Mountains (images of mountain scenes). A non-binary dataset contains three or more labels. - **Label**—A group of similar data inputs in a dataset that your model is trained to recognize. A label references the output name you want your model to predict. For example, for our Beach and Mountain model, the training data contains images of beaches and that label is “Beaches.” Images of mountains have a label of “Mountains.” The food classifier, which is trained from a multi-label dataset, contains labels like chocolate cake, pasta, macaroons, and so on. - **Model**—A machine learning construct used to solve a classification problem. Developers design a classification model by creating a dataset and then defining labels and providing positive examples of inputs that belong to these labels. When you train the dataset, the system then determines the commonalities and differences between the various labels to generalize the characteristics that define each label. The model predicts which class a new input falls into based on the predefined classes specified in your training dataset. - **Training**—The process through which a model is created and learns the classification rules based on a given set of training inputs (dataset). - **Prediction**—The results that the model returns as to how closely the input matches data in the dataset. [block:image] { "images": [ { "image": [ "https://files.readme.io/0089e22-vision_terms_graphic.png", "vision_terms_graphic.png", 2000, 800, "#f3f3f3" ] } ] } [/block]
We’re now in the world of AI and deep learning, and this space has lots of new terms to become familiar with. Understanding these terms and how they relate to each other makes it easier to work with Einstein Vision. - **Dataset**—The training data, which consists of inputs and outputs. Training the dataset creates the model used to make predictions. For an image recognition problem, the image examples you provide train the model on the desired output labels that you want the model to predict. For example, in the Create a Custom Classifier [Scenario](doc:scenario), you create a model named Beach and Mountain Model from a binary training dataset consisting of two labels: Beaches (images of beach scenes) and Mountains (images of mountain scenes). A non-binary dataset contains three or more labels. - **Label**—A group of similar data inputs in a dataset that your model is trained to recognize. A label references the output name you want your model to predict. For example, for our Beach and Mountain model, the training data contains images of beaches and that label is “Beaches.” Images of mountains have a label of “Mountains.” The food classifier, which is trained from a multi-label dataset, contains labels like chocolate cake, pasta, macaroons, and so on. - **Model**—A machine learning construct used to solve a classification problem. Developers design a classification model by creating a dataset and then defining labels and providing positive examples of inputs that belong to these labels. When you train the dataset, the system then determines the commonalities and differences between the various labels to generalize the characteristics that define each label. The model predicts which class a new input falls into based on the predefined classes specified in your training dataset. - **Training**—The process through which a model is created and learns the classification rules based on a given set of training inputs (dataset). - **Prediction**—The results that the model returns as to how closely the input matches data in the dataset. [block:image] { "images": [ { "image": [ "https://files.readme.io/0089e22-vision_terms_graphic.png", "vision_terms_graphic.png", 2000, 800, "#f3f3f3" ] } ] } [/block]
{"_id":"59307506111ec8003b91ec9f","project":"552d474ea86ee20d00780cd7","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bd6","user":"573b5a1f37fcf72000a2e683","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-06-01T20:11:50.777Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":3,"body":"##July 31, 2017##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"0-1\": \"**Pass parameters as JSON when classifying text using the Einstein Language APIs.** You can now pass text in JSON when calling the `/intent` and `/sentiment` resources. See [Prediction for Intent](doc:prediction-intent) and [Prediction for Sentiment](doc:prediction-sentiment).\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]\n##July 27, 2017##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"0-1\": \"**Einstein Image Classification API limits updated. **\\n\\n- The image file name maximum length increased from 100 to 150 characters.\\n\\n- There's no longer a maximum number of examples you can create using the [Create an Example](doc:create-an-example) call.\",\n    \"1-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"1-1\": \"**Add single examples to a dataset.** You can use the  [Create an Example](doc:create-an-example) call to add an example to a dataset that was created from a .zip file.\",\n    \"2-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"2-1\": \"**Unicode characters now supported in all APIs.** These elements can now contain unicode characters:\\n- .zip file name\\n- directory or label name\\n- file or example name\\n- dataset name\",\n    \"3-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"3-1\": \"**Default split ratio changed.** In the Einstein Language APIs, the default split ratio used during training is now 0.8. With this split ratio, 80% of the data is used to create the model and 20% is used to test the model.\",\n    \"4-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"4-1\": \"**The minimum number of examples changed in the Einstein Language APIs.**\\n- A dataset with a type of `text-intent` must have at least five examples per label.\\n- A dataset with a type of `text-sentiment` must have at least five examples per label.\"\n  },\n  \"cols\": 2,\n  \"rows\": 5\n}\n[/block]\n##June 28, 2017##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"0-1\": \"**Einstein Language (Beta) released.** Einstein Language includes two APIs that you can use to unlock powerful insights within text.\\n\\n- Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish.\\n\\n- Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes.\\n\\nSee [Introduction to Salesforce Einstein Language](doc:intro-to-einstein-language).\"\n  },\n  \"cols\": 2,\n  \"rows\": 1\n}\n[/block]\n##June 27, 2017##\n\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"0-1\": \"**Einstein Image Classification API version 2.0 released.** This table lists all the changes to the API in the new version. Einstein Vision is now the umbrella term for all of the image recognition APIs. The Einstein Vision API is now called the Image Classification API.\\n\\nUse the version selector at the top of this page to switch to the documentation for another version.\",\n    \"2-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"2-1\": \"**Optimize your model using feedback.** Use the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. \\n- Use the new API call to add a feedback example. See [Create a Feedback Example](doc:create-a-feedback-example).\\n\\n- The call to get all examples now has three new query parameters: `feedback`, `upload`, and `all`. Use these query parameters to refine the examples that are returned. See [Get All Examples](doc:get-all-examples).\\n\\n- The call to train a dataset and create a model now takes the `trainParams` object `{\\\"withFeedback\\\": true}`. This option specifies that the feedback examples are used during the training process. By default, the feedback examples aren't used during training if you don't specify this value. See [Train a Dataset](doc:train-a-dataset).\",\n    \"1-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"1-1\": \"**The API now uses the https://<span></span>api.einstein.ai endpoint.** When you access the Einstein Platform Services APIs, you can now use this new endpoint. For example, the endpoint to get a dataset is `https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>`. \\n\\nThe old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint.\",\n    \"3-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"3-1\": \"**Retrain a dataset and keep the same model ID.** There's now a call to retrain a dataset, for example, if you added new data to the dataset or you want to include feedback data. Retraining a dataset lets you maintain the model ID which is ideal if you reference the model in production code. See [Retrain a Dataset](doc:retrain-a-dataset).\",\n    \"4-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"4-1\": \"**Multi-label datasets are available.** The new dataset type `image-multi-label` enables you to specify that the dataset contains multi-label data. Any models you create from this dataset have a `modelType` of `image-multi-label`. See [Determine the Model Type You Need](doc:determine-model-type).\",\n    \"9-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"9-1\": \"**Dataset type is required when you create a dataset.** When you call the API to create a dataset, you must pass in the `type` request parameter to specify the type of dataset. Valid values are:\\n\\n- `image`—Standard classification dataset. Returns the single class into which an image falls.\\n\\n- `image-multi-label`—Multi-label classification dataset. Returns multiple classes into which an image falls.\\n\\nSee [Determine the Model Type You Need](doc:determine-model-type).\",\n    \"5-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"5-1\": \"**There are two new calls to get the model metrics and the learning curve for a multi-label model.** See [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics) and [Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve).\",\n    \"11-0\": \"**<span style=\\\"color:red\\\">DEPRECATED</span>**\",\n    \"11-1\": \"The following calls have been removed from the Einstein Image Classification API in version 2.0.\\n\\n- Create a label. You must pass in the labels when you create the dataset. `/vision/datasets/<DATASET_ID>/labels`\\n\\n- Get a label. `vision/datasets/<DATASET_ID>/labels/<LABEL_ID>`\\n\\n- Get an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`\\n\\n- Delete an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`\",\n    \"10-0\": \"**<span style=\\\"color:gold\\\">CHANGED</span>**\",\n    \"10-1\": \"**Getting all datasets returns a maximum of 25 datasets.** If you omit the `count` parameter, the call to get all datasets returns 25. If you set the `count` query parameter to a value greater than 25, the call returns 25 datasets. See [Get All Datasets](doc:get-all-datasets).\",\n    \"6-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"6-1\": \"**Get up and running with multi-label predictions using our prebuilt multi-label model.** This multi-label model is used to classify a variety of objects. See [Use the Prebuilt Models](doc:use-pre-built-models).\",\n    \"7-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"7-1\": \"**Use the `numResults` parameter to limit prediction results.** The `numResults` optional request parameter lets you specify the number of labels and probabilities to return when sending in data for prediction. This parameter can be used with both Einstein Vision and Einstein Language.\",\n    \"8-0\": \"**<span style=\\\"color:green\\\">NEW</span>**\",\n    \"8-1\": \"**Use global datasets to include additional data in your model.** Global datasets are public datasets that Salesforce provides. When you train a dataset to create a model, you can include the data from a global dataset. One way you can use global datasets is to create a negative class in your model. See [Use Global Datasets](doc:use-global-datasets).\"\n  },\n  \"cols\": 2,\n  \"rows\": 12\n}\n[/block]","excerpt":"Find out what's new, changed, or deprecated in the Einstein Platform Services APIs.","slug":"release-notes-einstein-platform-services","type":"basic","title":"Release Notes","__v":0,"parentDoc":null,"childrenPages":[]}

Release Notes

Find out what's new, changed, or deprecated in the Einstein Platform Services APIs.

##July 31, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Pass parameters as JSON when classifying text using the Einstein Language APIs.** You can now pass text in JSON when calling the `/intent` and `/sentiment` resources. See [Prediction for Intent](doc:prediction-intent) and [Prediction for Sentiment](doc:prediction-sentiment)." }, "cols": 2, "rows": 1 } [/block] ##July 27, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:gold\">CHANGED</span>**", "0-1": "**Einstein Image Classification API limits updated. **\n\n- The image file name maximum length increased from 100 to 150 characters.\n\n- There's no longer a maximum number of examples you can create using the [Create an Example](doc:create-an-example) call.", "1-0": "**<span style=\"color:gold\">CHANGED</span>**", "1-1": "**Add single examples to a dataset.** You can use the [Create an Example](doc:create-an-example) call to add an example to a dataset that was created from a .zip file.", "2-0": "**<span style=\"color:gold\">CHANGED</span>**", "2-1": "**Unicode characters now supported in all APIs.** These elements can now contain unicode characters:\n- .zip file name\n- directory or label name\n- file or example name\n- dataset name", "3-0": "**<span style=\"color:gold\">CHANGED</span>**", "3-1": "**Default split ratio changed.** In the Einstein Language APIs, the default split ratio used during training is now 0.8. With this split ratio, 80% of the data is used to create the model and 20% is used to test the model.", "4-0": "**<span style=\"color:gold\">CHANGED</span>**", "4-1": "**The minimum number of examples changed in the Einstein Language APIs.**\n- A dataset with a type of `text-intent` must have at least five examples per label.\n- A dataset with a type of `text-sentiment` must have at least five examples per label." }, "cols": 2, "rows": 5 } [/block] ##June 28, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Einstein Language (Beta) released.** Einstein Language includes two APIs that you can use to unlock powerful insights within text.\n\n- Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish.\n\n- Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes.\n\nSee [Introduction to Salesforce Einstein Language](doc:intro-to-einstein-language)." }, "cols": 2, "rows": 1 } [/block] ##June 27, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Einstein Image Classification API version 2.0 released.** This table lists all the changes to the API in the new version. Einstein Vision is now the umbrella term for all of the image recognition APIs. The Einstein Vision API is now called the Image Classification API.\n\nUse the version selector at the top of this page to switch to the documentation for another version.", "2-0": "**<span style=\"color:green\">NEW</span>**", "2-1": "**Optimize your model using feedback.** Use the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. \n- Use the new API call to add a feedback example. See [Create a Feedback Example](doc:create-a-feedback-example).\n\n- The call to get all examples now has three new query parameters: `feedback`, `upload`, and `all`. Use these query parameters to refine the examples that are returned. See [Get All Examples](doc:get-all-examples).\n\n- The call to train a dataset and create a model now takes the `trainParams` object `{\"withFeedback\": true}`. This option specifies that the feedback examples are used during the training process. By default, the feedback examples aren't used during training if you don't specify this value. See [Train a Dataset](doc:train-a-dataset).", "1-0": "**<span style=\"color:green\">NEW</span>**", "1-1": "**The API now uses the https://<span></span>api.einstein.ai endpoint.** When you access the Einstein Platform Services APIs, you can now use this new endpoint. For example, the endpoint to get a dataset is `https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>`. \n\nThe old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint.", "3-0": "**<span style=\"color:green\">NEW</span>**", "3-1": "**Retrain a dataset and keep the same model ID.** There's now a call to retrain a dataset, for example, if you added new data to the dataset or you want to include feedback data. Retraining a dataset lets you maintain the model ID which is ideal if you reference the model in production code. See [Retrain a Dataset](doc:retrain-a-dataset).", "4-0": "**<span style=\"color:green\">NEW</span>**", "4-1": "**Multi-label datasets are available.** The new dataset type `image-multi-label` enables you to specify that the dataset contains multi-label data. Any models you create from this dataset have a `modelType` of `image-multi-label`. See [Determine the Model Type You Need](doc:determine-model-type).", "9-0": "**<span style=\"color:gold\">CHANGED</span>**", "9-1": "**Dataset type is required when you create a dataset.** When you call the API to create a dataset, you must pass in the `type` request parameter to specify the type of dataset. Valid values are:\n\n- `image`—Standard classification dataset. Returns the single class into which an image falls.\n\n- `image-multi-label`—Multi-label classification dataset. Returns multiple classes into which an image falls.\n\nSee [Determine the Model Type You Need](doc:determine-model-type).", "5-0": "**<span style=\"color:green\">NEW</span>**", "5-1": "**There are two new calls to get the model metrics and the learning curve for a multi-label model.** See [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics) and [Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve).", "11-0": "**<span style=\"color:red\">DEPRECATED</span>**", "11-1": "The following calls have been removed from the Einstein Image Classification API in version 2.0.\n\n- Create a label. You must pass in the labels when you create the dataset. `/vision/datasets/<DATASET_ID>/labels`\n\n- Get a label. `vision/datasets/<DATASET_ID>/labels/<LABEL_ID>`\n\n- Get an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`\n\n- Delete an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`", "10-0": "**<span style=\"color:gold\">CHANGED</span>**", "10-1": "**Getting all datasets returns a maximum of 25 datasets.** If you omit the `count` parameter, the call to get all datasets returns 25. If you set the `count` query parameter to a value greater than 25, the call returns 25 datasets. See [Get All Datasets](doc:get-all-datasets).", "6-0": "**<span style=\"color:green\">NEW</span>**", "6-1": "**Get up and running with multi-label predictions using our prebuilt multi-label model.** This multi-label model is used to classify a variety of objects. See [Use the Prebuilt Models](doc:use-pre-built-models).", "7-0": "**<span style=\"color:green\">NEW</span>**", "7-1": "**Use the `numResults` parameter to limit prediction results.** The `numResults` optional request parameter lets you specify the number of labels and probabilities to return when sending in data for prediction. This parameter can be used with both Einstein Vision and Einstein Language.", "8-0": "**<span style=\"color:green\">NEW</span>**", "8-1": "**Use global datasets to include additional data in your model.** Global datasets are public datasets that Salesforce provides. When you train a dataset to create a model, you can include the data from a global dataset. One way you can use global datasets is to create a negative class in your model. See [Use Global Datasets](doc:use-global-datasets)." }, "cols": 2, "rows": 12 } [/block]
##July 31, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Pass parameters as JSON when classifying text using the Einstein Language APIs.** You can now pass text in JSON when calling the `/intent` and `/sentiment` resources. See [Prediction for Intent](doc:prediction-intent) and [Prediction for Sentiment](doc:prediction-sentiment)." }, "cols": 2, "rows": 1 } [/block] ##July 27, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:gold\">CHANGED</span>**", "0-1": "**Einstein Image Classification API limits updated. **\n\n- The image file name maximum length increased from 100 to 150 characters.\n\n- There's no longer a maximum number of examples you can create using the [Create an Example](doc:create-an-example) call.", "1-0": "**<span style=\"color:gold\">CHANGED</span>**", "1-1": "**Add single examples to a dataset.** You can use the [Create an Example](doc:create-an-example) call to add an example to a dataset that was created from a .zip file.", "2-0": "**<span style=\"color:gold\">CHANGED</span>**", "2-1": "**Unicode characters now supported in all APIs.** These elements can now contain unicode characters:\n- .zip file name\n- directory or label name\n- file or example name\n- dataset name", "3-0": "**<span style=\"color:gold\">CHANGED</span>**", "3-1": "**Default split ratio changed.** In the Einstein Language APIs, the default split ratio used during training is now 0.8. With this split ratio, 80% of the data is used to create the model and 20% is used to test the model.", "4-0": "**<span style=\"color:gold\">CHANGED</span>**", "4-1": "**The minimum number of examples changed in the Einstein Language APIs.**\n- A dataset with a type of `text-intent` must have at least five examples per label.\n- A dataset with a type of `text-sentiment` must have at least five examples per label." }, "cols": 2, "rows": 5 } [/block] ##June 28, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Einstein Language (Beta) released.** Einstein Language includes two APIs that you can use to unlock powerful insights within text.\n\n- Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish.\n\n- Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes.\n\nSee [Introduction to Salesforce Einstein Language](doc:intro-to-einstein-language)." }, "cols": 2, "rows": 1 } [/block] ##June 27, 2017## [block:parameters] { "data": { "0-0": "**<span style=\"color:green\">NEW</span>**", "0-1": "**Einstein Image Classification API version 2.0 released.** This table lists all the changes to the API in the new version. Einstein Vision is now the umbrella term for all of the image recognition APIs. The Einstein Vision API is now called the Image Classification API.\n\nUse the version selector at the top of this page to switch to the documentation for another version.", "2-0": "**<span style=\"color:green\">NEW</span>**", "2-1": "**Optimize your model using feedback.** Use the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. \n- Use the new API call to add a feedback example. See [Create a Feedback Example](doc:create-a-feedback-example).\n\n- The call to get all examples now has three new query parameters: `feedback`, `upload`, and `all`. Use these query parameters to refine the examples that are returned. See [Get All Examples](doc:get-all-examples).\n\n- The call to train a dataset and create a model now takes the `trainParams` object `{\"withFeedback\": true}`. This option specifies that the feedback examples are used during the training process. By default, the feedback examples aren't used during training if you don't specify this value. See [Train a Dataset](doc:train-a-dataset).", "1-0": "**<span style=\"color:green\">NEW</span>**", "1-1": "**The API now uses the https://<span></span>api.einstein.ai endpoint.** When you access the Einstein Platform Services APIs, you can now use this new endpoint. For example, the endpoint to get a dataset is `https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>`. \n\nThe old api.metamind.io endpoint still works, but be sure to update your code to use the new endpoint.", "3-0": "**<span style=\"color:green\">NEW</span>**", "3-1": "**Retrain a dataset and keep the same model ID.** There's now a call to retrain a dataset, for example, if you added new data to the dataset or you want to include feedback data. Retraining a dataset lets you maintain the model ID which is ideal if you reference the model in production code. See [Retrain a Dataset](doc:retrain-a-dataset).", "4-0": "**<span style=\"color:green\">NEW</span>**", "4-1": "**Multi-label datasets are available.** The new dataset type `image-multi-label` enables you to specify that the dataset contains multi-label data. Any models you create from this dataset have a `modelType` of `image-multi-label`. See [Determine the Model Type You Need](doc:determine-model-type).", "9-0": "**<span style=\"color:gold\">CHANGED</span>**", "9-1": "**Dataset type is required when you create a dataset.** When you call the API to create a dataset, you must pass in the `type` request parameter to specify the type of dataset. Valid values are:\n\n- `image`—Standard classification dataset. Returns the single class into which an image falls.\n\n- `image-multi-label`—Multi-label classification dataset. Returns multiple classes into which an image falls.\n\nSee [Determine the Model Type You Need](doc:determine-model-type).", "5-0": "**<span style=\"color:green\">NEW</span>**", "5-1": "**There are two new calls to get the model metrics and the learning curve for a multi-label model.** See [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics) and [Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve).", "11-0": "**<span style=\"color:red\">DEPRECATED</span>**", "11-1": "The following calls have been removed from the Einstein Image Classification API in version 2.0.\n\n- Create a label. You must pass in the labels when you create the dataset. `/vision/datasets/<DATASET_ID>/labels`\n\n- Get a label. `vision/datasets/<DATASET_ID>/labels/<LABEL_ID>`\n\n- Get an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`\n\n- Delete an example. `/vision/datasets/<DATASET_ID>/examples/<EXAMPLE_ID>`", "10-0": "**<span style=\"color:gold\">CHANGED</span>**", "10-1": "**Getting all datasets returns a maximum of 25 datasets.** If you omit the `count` parameter, the call to get all datasets returns 25. If you set the `count` query parameter to a value greater than 25, the call returns 25 datasets. See [Get All Datasets](doc:get-all-datasets).", "6-0": "**<span style=\"color:green\">NEW</span>**", "6-1": "**Get up and running with multi-label predictions using our prebuilt multi-label model.** This multi-label model is used to classify a variety of objects. See [Use the Prebuilt Models](doc:use-pre-built-models).", "7-0": "**<span style=\"color:green\">NEW</span>**", "7-1": "**Use the `numResults` parameter to limit prediction results.** The `numResults` optional request parameter lets you specify the number of labels and probabilities to return when sending in data for prediction. This parameter can be used with both Einstein Vision and Einstein Language.", "8-0": "**<span style=\"color:green\">NEW</span>**", "8-1": "**Use global datasets to include additional data in your model.** Global datasets are public datasets that Salesforce provides. When you train a dataset to create a model, you can include the data from a global dataset. One way you can use global datasets is to create a negative class in your model. See [Use Global Datasets](doc:use-global-datasets)." }, "cols": 2, "rows": 12 } [/block]
{"_id":"590a25add47da32300b68bf2","slug":"what-you-need-to-call-api","user":"573b5a1f37fcf72000a2e683","githubsync":"","link_external":false,"project":"552d474ea86ee20d00780cd7","sync_unique":"","title":"What You Need to Call the API","updates":[],"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"category":"590a25abd47da32300b68bd7","createdAt":"2016-10-11T16:44:42.625Z","hidden":false,"link_url":"","type":"basic","version":"590a25abd47da32300b68bd5","body":"- [Get an account](https://metamind.readme.io/docs/what-you-need-to-call-api#section-get-an-einstein-platform-account)\n- [Generate a token](https://metamind.readme.io/docs/what-you-need-to-call-api#section-generate-a-token)\n\n##Get an Einstein Platform Services Account##\n\n1. From a browser, navigate to the [sign up page](https://api.einstein.ai/signup).\n\n2. Click **Sign Up Using Salesforce**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/26cb34e-sign_up.png\",\n        \"sign_up.png\",\n        444,\n        458,\n        \"#7b649b\"\n      ]\n    }\n  ]\n}\n[/block]\n3. On the Salesforce login page, type your username and password, and click **Log In**.  If you’re already logged in to Salesforce, you won’t see this page and you can skip to Step 4.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/037038d-log_in.png\",\n        \"log_in.png\",\n        439,\n        602,\n        \"#0d84d3\"\n      ]\n    }\n  ]\n}\n[/block]\n4. Click **Allow** so the page can access basic information, such as your email address, and perform requests.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/e6ca8ef-allow_access.png\",\n        \"allow_access.png\",\n        428,\n        485,\n        \"#f3f2f9\"\n      ]\n    }\n  ]\n}\n[/block]\n5. On the activation page:\n - If you're using Chrome, click **Download Key** to save the key locally. The key file is named `einstein_platform.pem`. \n\n - If you're using any other browser, cut and paste your key from the browser into a text file and save it as `einstein_platform.pem`.\n\nMake a note of where you save the key file because you'll need it to authenticate when you call the API.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Caution\",\n  \"body\": \"The **Download Key** button is only supported in the most recent version of Google Chrome <sup>TM</sup>. If you're using a different browser, you can cut and paste your key into a text file and save it as `einstein_platform.pem`.\"\n}\n[/block]\n##Generate a Token##\n\nEach API call must contain a valid OAuth token in the request header. To generate a token, you create a JWT payload, sign the payload with your private key, and then call the API to get the token. \n\nTo get a token without code, see [Set Up Authorization](doc:set-up-auth). If you're generating a token in code, the sequence of steps is the same, but the details will vary depending on the programming language.","isReference":false,"next":{"pages":[],"description":""},"order":0,"parentDoc":null,"__v":0,"excerpt":"Before you can access the Einstein Platform Services APIs, you first create an account and download your key. Then you use your key to generate an OAuth token. You can use your key to access both the Einstein Vision and Einstein Language APIs.","childrenPages":[]}

What You Need to Call the API

Before you can access the Einstein Platform Services APIs, you first create an account and download your key. Then you use your key to generate an OAuth token. You can use your key to access both the Einstein Vision and Einstein Language APIs.

- [Get an account](https://metamind.readme.io/docs/what-you-need-to-call-api#section-get-an-einstein-platform-account) - [Generate a token](https://metamind.readme.io/docs/what-you-need-to-call-api#section-generate-a-token) ##Get an Einstein Platform Services Account## 1. From a browser, navigate to the [sign up page](https://api.einstein.ai/signup). 2. Click **Sign Up Using Salesforce**. [block:image] { "images": [ { "image": [ "https://files.readme.io/26cb34e-sign_up.png", "sign_up.png", 444, 458, "#7b649b" ] } ] } [/block] 3. On the Salesforce login page, type your username and password, and click **Log In**. If you’re already logged in to Salesforce, you won’t see this page and you can skip to Step 4. [block:image] { "images": [ { "image": [ "https://files.readme.io/037038d-log_in.png", "log_in.png", 439, 602, "#0d84d3" ] } ] } [/block] 4. Click **Allow** so the page can access basic information, such as your email address, and perform requests. [block:image] { "images": [ { "image": [ "https://files.readme.io/e6ca8ef-allow_access.png", "allow_access.png", 428, 485, "#f3f2f9" ] } ] } [/block] 5. On the activation page: - If you're using Chrome, click **Download Key** to save the key locally. The key file is named `einstein_platform.pem`. - If you're using any other browser, cut and paste your key from the browser into a text file and save it as `einstein_platform.pem`. Make a note of where you save the key file because you'll need it to authenticate when you call the API. [block:callout] { "type": "warning", "title": "Caution", "body": "The **Download Key** button is only supported in the most recent version of Google Chrome <sup>TM</sup>. If you're using a different browser, you can cut and paste your key into a text file and save it as `einstein_platform.pem`." } [/block] ##Generate a Token## Each API call must contain a valid OAuth token in the request header. To generate a token, you create a JWT payload, sign the payload with your private key, and then call the API to get the token. To get a token without code, see [Set Up Authorization](doc:set-up-auth). If you're generating a token in code, the sequence of steps is the same, but the details will vary depending on the programming language.
- [Get an account](https://metamind.readme.io/docs/what-you-need-to-call-api#section-get-an-einstein-platform-account) - [Generate a token](https://metamind.readme.io/docs/what-you-need-to-call-api#section-generate-a-token) ##Get an Einstein Platform Services Account## 1. From a browser, navigate to the [sign up page](https://api.einstein.ai/signup). 2. Click **Sign Up Using Salesforce**. [block:image] { "images": [ { "image": [ "https://files.readme.io/26cb34e-sign_up.png", "sign_up.png", 444, 458, "#7b649b" ] } ] } [/block] 3. On the Salesforce login page, type your username and password, and click **Log In**. If you’re already logged in to Salesforce, you won’t see this page and you can skip to Step 4. [block:image] { "images": [ { "image": [ "https://files.readme.io/037038d-log_in.png", "log_in.png", 439, 602, "#0d84d3" ] } ] } [/block] 4. Click **Allow** so the page can access basic information, such as your email address, and perform requests. [block:image] { "images": [ { "image": [ "https://files.readme.io/e6ca8ef-allow_access.png", "allow_access.png", 428, 485, "#f3f2f9" ] } ] } [/block] 5. On the activation page: - If you're using Chrome, click **Download Key** to save the key locally. The key file is named `einstein_platform.pem`. - If you're using any other browser, cut and paste your key from the browser into a text file and save it as `einstein_platform.pem`. Make a note of where you save the key file because you'll need it to authenticate when you call the API. [block:callout] { "type": "warning", "title": "Caution", "body": "The **Download Key** button is only supported in the most recent version of Google Chrome <sup>TM</sup>. If you're using a different browser, you can cut and paste your key into a text file and save it as `einstein_platform.pem`." } [/block] ##Generate a Token## Each API call must contain a valid OAuth token in the request header. To generate a token, you create a JWT payload, sign the payload with your private key, and then call the API to get the token. To get a token without code, see [Set Up Authorization](doc:set-up-auth). If you're generating a token in code, the sequence of steps is the same, but the details will vary depending on the programming language.
{"_id":"590a25acd47da32300b68be2","slug":"apex_qs_scenario","api":{"auth":"required","params":[],"url":"","settings":"","results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"name":"","code":"{}","language":"json","status":400}]}},"category":"590a25abd47da32300b68bd8","isReference":false,"link_external":false,"project":"552d474ea86ee20d00780cd7","__v":0,"next":{"pages":[],"description":""},"sync_unique":"","title":"Scenario","type":"basic","version":"590a25abd47da32300b68bd5","body":"To help you get up and running quickly, you’ll step through integrating your Salesforce org with the Einstein Image Classification API. First, you create Apex classes that call the API. Then you create a Visualforce page to tie it all together.\n\nIf you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers.","excerpt":"","githubsync":"","hidden":false,"user":"573b5a1f37fcf72000a2e683","createdAt":"2016-09-29T21:49:53.249Z","link_url":"","order":0,"parentDoc":null,"updates":[],"childrenPages":[]}

Scenario


To help you get up and running quickly, you’ll step through integrating your Salesforce org with the Einstein Image Classification API. First, you create Apex classes that call the API. Then you create a Visualforce page to tie it all together. If you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers.
To help you get up and running quickly, you’ll step through integrating your Salesforce org with the Einstein Image Classification API. First, you create Apex classes that call the API. Then you create a Visualforce page to tie it all together. If you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers.
{"_id":"590a25acd47da32300b68be3","excerpt":"","githubsync":"","parentDoc":null,"sync_unique":"","updates":[],"version":"590a25abd47da32300b68bd5","api":{"url":"","settings":"","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"status":400,"name":"","code":"{}","language":"json"}]},"auth":"required","params":[]},"category":"590a25abd47da32300b68bd8","isReference":false,"link_external":false,"link_url":"","slug":"apex-qs-prereqs","title":"Prerequisites","type":"basic","__v":0,"hidden":false,"project":"552d474ea86ee20d00780cd7","user":"573b5a1f37fcf72000a2e683","order":1,"next":{"pages":[],"description":""},"body":"- **Set up your account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account.\n\n- **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key.\n\n- **Install Git**—To get the Visualforce and Apex code, you need Git to clone the repos.","createdAt":"2016-09-29T21:54:16.224Z","childrenPages":[]}

Prerequisites


- **Set up your account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key. - **Install Git**—To get the Visualforce and Apex code, you need Git to clone the repos.
- **Set up your account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key. - **Install Git**—To get the Visualforce and Apex code, you need Git to clone the repos.
{"_id":"590a25acd47da32300b68be4","next":{"pages":[],"description":""},"slug":"upload-your-key","createdAt":"2017-01-20T00:18:43.721Z","excerpt":"You must upload your key to Salesforce Files so that the Apex controller class can access it.","hidden":false,"isReference":false,"link_url":"","order":2,"project":"552d474ea86ee20d00780cd7","type":"basic","api":{"settings":"","results":{"codes":[{"status":200,"name":"","code":"{}","language":"json"},{"code":"{}","language":"json","status":400,"name":""}]},"auth":"required","params":[],"url":""},"body":"1. Log in to Salesforce.\n\n2. Click **Files**. \n\n3. Click **Upload File**. \n\n4. Navigate to the directory where you saved the `einstein_platform.pem` file, select the file, and click Open. You should see the key file in the list of files owned by you.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/4588eea-files_key.png\",\n        \"files_key.png\",\n        937,\n        242,\n        \"#f2f9fa\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Tip\",\n  \"body\": \"The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name.\"\n}\n[/block]","category":"590a25abd47da32300b68bd8","updates":[],"user":"573b5a1f37fcf72000a2e683","title":"Upload Your Key","version":"590a25abd47da32300b68bd5","link_external":false,"sync_unique":"","__v":0,"githubsync":"","parentDoc":null,"childrenPages":[]}

Upload Your Key

You must upload your key to Salesforce Files so that the Apex controller class can access it.

1. Log in to Salesforce. 2. Click **Files**. 3. Click **Upload File**. 4. Navigate to the directory where you saved the `einstein_platform.pem` file, select the file, and click Open. You should see the key file in the list of files owned by you. [block:image] { "images": [ { "image": [ "https://files.readme.io/4588eea-files_key.png", "files_key.png", 937, 242, "#f2f9fa" ] } ] } [/block] [block:callout] { "type": "info", "title": "Tip", "body": "The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name." } [/block]
1. Log in to Salesforce. 2. Click **Files**. 3. Click **Upload File**. 4. Navigate to the directory where you saved the `einstein_platform.pem` file, select the file, and click Open. You should see the key file in the list of files owned by you. [block:image] { "images": [ { "image": [ "https://files.readme.io/4588eea-files_key.png", "files_key.png", 937, 242, "#f2f9fa" ] } ] } [/block] [block:callout] { "type": "info", "title": "Tip", "body": "The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name." } [/block]
{"_id":"590a25acd47da32300b68be5","api":{"url":"","results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[]},"createdAt":"2016-09-29T22:43:21.085Z","parentDoc":null,"type":"basic","updates":["58a5d20e79ac232f00cbaf72"],"version":"590a25abd47da32300b68bd5","excerpt":"Now that you’ve uploaded your key, get the code from GitHub.","next":{"pages":[],"description":""},"project":"552d474ea86ee20d00780cd7","title":"Get the Code","body":"1. Clone the JWT repo by using this command.\n```git clone https://github.com/salesforceidentity/jwt```\n\n2. Clone the Apex code repo by using this command.\n```git clone https://github.com/MetaMind/apex-utils```\n\n##Download the Code Zip Files##\nIf you don't have a GitHub account or you want use the GitHub web interface, use this alternate method for getting the code.\n\n1. From your browser, navigate to [https://github.com/salesforceidentity/jwt](https://github.com/salesforceidentity/jwt).\n\n2. Click **Clone or download**.\n\n3. Select **Download ZIP** to download the classes that handle the JWT token processing.\n\n4. If prompted by your browser, click **OK** to save the jwt-master.zip file locally.\n\n5. Navigate to [https://github.com/MetaMind/apex-utils](https://github.com/MetaMind/apex-utils).\n\n6. Click **Clone or download**.\n\n7. Select **Download ZIP** to download the code for the Apex classes and the Visualforce page. These code elements call the Einstein Image Classification API.\n\n8. If prompted by your browser, click **OK** to save the apex-utils-master.zip file locally.\n\n9. From your file explorer, navigate to the folder where you saved the .zip files and extract each file. Make a note of where you extract the code because you use it later on to create the classes.","link_external":false,"link_url":"","sync_unique":"","isReference":false,"order":3,"slug":"apex-qs-get-the-code","user":"573b5a1f37fcf72000a2e683","__v":0,"category":"590a25abd47da32300b68bd8","githubsync":"","hidden":false,"childrenPages":[]}

Get the Code

Now that you’ve uploaded your key, get the code from GitHub.

1. Clone the JWT repo by using this command. ```git clone https://github.com/salesforceidentity/jwt``` 2. Clone the Apex code repo by using this command. ```git clone https://github.com/MetaMind/apex-utils``` ##Download the Code Zip Files## If you don't have a GitHub account or you want use the GitHub web interface, use this alternate method for getting the code. 1. From your browser, navigate to [https://github.com/salesforceidentity/jwt](https://github.com/salesforceidentity/jwt). 2. Click **Clone or download**. 3. Select **Download ZIP** to download the classes that handle the JWT token processing. 4. If prompted by your browser, click **OK** to save the jwt-master.zip file locally. 5. Navigate to [https://github.com/MetaMind/apex-utils](https://github.com/MetaMind/apex-utils). 6. Click **Clone or download**. 7. Select **Download ZIP** to download the code for the Apex classes and the Visualforce page. These code elements call the Einstein Image Classification API. 8. If prompted by your browser, click **OK** to save the apex-utils-master.zip file locally. 9. From your file explorer, navigate to the folder where you saved the .zip files and extract each file. Make a note of where you extract the code because you use it later on to create the classes.
1. Clone the JWT repo by using this command. ```git clone https://github.com/salesforceidentity/jwt``` 2. Clone the Apex code repo by using this command. ```git clone https://github.com/MetaMind/apex-utils``` ##Download the Code Zip Files## If you don't have a GitHub account or you want use the GitHub web interface, use this alternate method for getting the code. 1. From your browser, navigate to [https://github.com/salesforceidentity/jwt](https://github.com/salesforceidentity/jwt). 2. Click **Clone or download**. 3. Select **Download ZIP** to download the classes that handle the JWT token processing. 4. If prompted by your browser, click **OK** to save the jwt-master.zip file locally. 5. Navigate to [https://github.com/MetaMind/apex-utils](https://github.com/MetaMind/apex-utils). 6. Click **Clone or download**. 7. Select **Download ZIP** to download the code for the Apex classes and the Visualforce page. These code elements call the Einstein Image Classification API. 8. If prompted by your browser, click **OK** to save the apex-utils-master.zip file locally. 9. From your file explorer, navigate to the folder where you saved the .zip files and extract each file. Make a note of where you extract the code because you use it later on to create the classes.
{"_id":"590a25acd47da32300b68be6","sync_unique":"","updates":[],"createdAt":"2016-09-29T22:49:29.135Z","githubsync":"","isReference":false,"link_url":"","order":4,"slug":"apex-qs-create-remote-site","body":"1. Log in to Salesforce.\n\n2. From Setup, enter `Remote Site` in the `Quick Find` box, then select **Remote Site Settings**. \n\n3. Click **New Remote Site**. \n\n4. Enter a name for the remote site.\n\n5. In the Remote Site URL field, enter `https://api.einstein.ai`. \n\n6. Click **Save**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/7825208-remote_site.png\",\n        \"remote_site.png\",\n        327,\n        146,\n        \"#e7e8db\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"Before you can call the Einstein Image Classification API from Apex, you must add the API endpoint as a remote site.","hidden":false,"link_external":false,"next":{"pages":[],"description":""},"type":"basic","__v":0,"api":{"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[],"url":""},"parentDoc":null,"project":"552d474ea86ee20d00780cd7","title":"Create a Remote Site","category":"590a25abd47da32300b68bd8","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","childrenPages":[]}

Create a Remote Site

Before you can call the Einstein Image Classification API from Apex, you must add the API endpoint as a remote site.

1. Log in to Salesforce. 2. From Setup, enter `Remote Site` in the `Quick Find` box, then select **Remote Site Settings**. 3. Click **New Remote Site**. 4. Enter a name for the remote site. 5. In the Remote Site URL field, enter `https://api.einstein.ai`. 6. Click **Save**. [block:image] { "images": [ { "image": [ "https://files.readme.io/7825208-remote_site.png", "remote_site.png", 327, 146, "#e7e8db" ] } ] } [/block]
1. Log in to Salesforce. 2. From Setup, enter `Remote Site` in the `Quick Find` box, then select **Remote Site Settings**. 3. Click **New Remote Site**. 4. Enter a name for the remote site. 5. In the Remote Site URL field, enter `https://api.einstein.ai`. 6. Click **Save**. [block:image] { "images": [ { "image": [ "https://files.readme.io/7825208-remote_site.png", "remote_site.png", 327, 146, "#e7e8db" ] } ] } [/block]
{"_id":"590a25acd47da32300b68be7","hidden":false,"updates":[],"user":"573b5a1f37fcf72000a2e683","githubsync":"","link_external":false,"next":{"pages":[],"description":""},"version":"590a25abd47da32300b68bd5","body":"1. In Salesforce, from Setup, enter `Apex Classes` in the Quick Find box, then select **Apex Classes**. \n \n2. Click **New**.\n\n3. To create the `JWT` Apex class, copy all the code from `JWT.apex` into the Apex Class tab and click Save.\n\n4. To create the `JWTBearerFlow` Apex class, go back to to the Apex Classes page, and click **New**.\n\n5. Copy all the code from `JWTBearer.apex` to the Apex Class tab and click **Save**.\n\n6. To create the `HttpFormBuilder` Apex class, go back to the Apex Classes page, and click **New**.\n\n7. Copy all the code from `HttpFormBuilder.apex` into the Apex Class tab and click **Save**.\n\n8. To create the `Vision` Apex class, go back to the Apex Classes page, and click **New**.\n\n9. Copy all the code from `Vision.apex` into the Apex Class tab and click **Save**.\n\n10. To create the `VisionController` Apex class, go back to the Apex Classes page, and click **New**.\n\n11. Copy the VisionController code from the apex-utils `README.md` into the Apex Class tab. This class is all the code from `public class VisionController {` to the closing brace `}`. In this example, the expiration is one hour (3600 seconds).\n\n12. Update the `jwt.sub` placeholder text of `yourname@example.com` with your email address. Use your email address that’s contained in the Salesforce org you logged in to when you created an account. \n[block:callout]\n{\n  \"type\": \"danger\",\n  \"title\": \"Warning\",\n  \"body\": \"Use your email address that’s contained in the Salesforce org you logged in to when you created an account. Be sure to use your email address and not your Salesforce username.\"\n}\n[/block]\n13. Click **Save**.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \" // Get a new token\\n JWT jwt = new JWT('RS256');\\n // jwt.cert = 'JWTCert'; // Uncomment this if you used a Salesforce certificate to sign up for an Einstein Platform account\\n jwt.pkcs8 = keyContents; // Comment this if you are using jwt.cert\\n jwt.iss = 'developer.force.com';\\n jwt.sub = 'yourname@example.com';\\n jwt.aud = 'https://api.einstein.ai/v2/oauth2/token';\\n jwt.exp = '3600';\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]","createdAt":"2016-09-30T20:44:59.590Z","isReference":false,"link_url":"","project":"552d474ea86ee20d00780cd7","slug":"apex-qs-create-classes","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"status":400,"name":"","code":"{}","language":"json"}]},"settings":"","auth":"required","params":[],"url":""},"category":"590a25abd47da32300b68bd8","excerpt":"In this step, you create the Apex classes that call the API and do all of the heavy lifting.","order":5,"parentDoc":null,"sync_unique":"","title":"Create the Apex Classes","__v":0,"type":"basic","childrenPages":[]}

Create the Apex Classes

In this step, you create the Apex classes that call the API and do all of the heavy lifting.

1. In Salesforce, from Setup, enter `Apex Classes` in the Quick Find box, then select **Apex Classes**. 2. Click **New**. 3. To create the `JWT` Apex class, copy all the code from `JWT.apex` into the Apex Class tab and click Save. 4. To create the `JWTBearerFlow` Apex class, go back to to the Apex Classes page, and click **New**. 5. Copy all the code from `JWTBearer.apex` to the Apex Class tab and click **Save**. 6. To create the `HttpFormBuilder` Apex class, go back to the Apex Classes page, and click **New**. 7. Copy all the code from `HttpFormBuilder.apex` into the Apex Class tab and click **Save**. 8. To create the `Vision` Apex class, go back to the Apex Classes page, and click **New**. 9. Copy all the code from `Vision.apex` into the Apex Class tab and click **Save**. 10. To create the `VisionController` Apex class, go back to the Apex Classes page, and click **New**. 11. Copy the VisionController code from the apex-utils `README.md` into the Apex Class tab. This class is all the code from `public class VisionController {` to the closing brace `}`. In this example, the expiration is one hour (3600 seconds). 12. Update the `jwt.sub` placeholder text of `yourname@example.com` with your email address. Use your email address that’s contained in the Salesforce org you logged in to when you created an account. [block:callout] { "type": "danger", "title": "Warning", "body": "Use your email address that’s contained in the Salesforce org you logged in to when you created an account. Be sure to use your email address and not your Salesforce username." } [/block] 13. Click **Save**. [block:code] { "codes": [ { "code": " // Get a new token\n JWT jwt = new JWT('RS256');\n // jwt.cert = 'JWTCert'; // Uncomment this if you used a Salesforce certificate to sign up for an Einstein Platform account\n jwt.pkcs8 = keyContents; // Comment this if you are using jwt.cert\n jwt.iss = 'developer.force.com';\n jwt.sub = 'yourname@example.com';\n jwt.aud = 'https://api.einstein.ai/v2/oauth2/token';\n jwt.exp = '3600';", "language": "text" } ] } [/block]
1. In Salesforce, from Setup, enter `Apex Classes` in the Quick Find box, then select **Apex Classes**. 2. Click **New**. 3. To create the `JWT` Apex class, copy all the code from `JWT.apex` into the Apex Class tab and click Save. 4. To create the `JWTBearerFlow` Apex class, go back to to the Apex Classes page, and click **New**. 5. Copy all the code from `JWTBearer.apex` to the Apex Class tab and click **Save**. 6. To create the `HttpFormBuilder` Apex class, go back to the Apex Classes page, and click **New**. 7. Copy all the code from `HttpFormBuilder.apex` into the Apex Class tab and click **Save**. 8. To create the `Vision` Apex class, go back to the Apex Classes page, and click **New**. 9. Copy all the code from `Vision.apex` into the Apex Class tab and click **Save**. 10. To create the `VisionController` Apex class, go back to the Apex Classes page, and click **New**. 11. Copy the VisionController code from the apex-utils `README.md` into the Apex Class tab. This class is all the code from `public class VisionController {` to the closing brace `}`. In this example, the expiration is one hour (3600 seconds). 12. Update the `jwt.sub` placeholder text of `yourname@example.com` with your email address. Use your email address that’s contained in the Salesforce org you logged in to when you created an account. [block:callout] { "type": "danger", "title": "Warning", "body": "Use your email address that’s contained in the Salesforce org you logged in to when you created an account. Be sure to use your email address and not your Salesforce username." } [/block] 13. Click **Save**. [block:code] { "codes": [ { "code": " // Get a new token\n JWT jwt = new JWT('RS256');\n // jwt.cert = 'JWTCert'; // Uncomment this if you used a Salesforce certificate to sign up for an Einstein Platform account\n jwt.pkcs8 = keyContents; // Comment this if you are using jwt.cert\n jwt.iss = 'developer.force.com';\n jwt.sub = 'yourname@example.com';\n jwt.aud = 'https://api.einstein.ai/v2/oauth2/token';\n jwt.exp = '3600';", "language": "text" } ] } [/block]
{"_id":"590a25acd47da32300b68be8","project":"552d474ea86ee20d00780cd7","type":"basic","githubsync":"","next":{"pages":[],"description":""},"slug":"apex-qs-create-vf-page","version":"590a25abd47da32300b68bd5","createdAt":"2016-09-30T20:53:02.193Z","hidden":false,"api":{"settings":"","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"auth":"required","params":[],"url":""},"excerpt":"Now you create a Visualforce page that calls the classes that you just created to make a prediction.","isReference":false,"link_external":false,"link_url":"","order":6,"__v":0,"updates":[],"user":"573b5a1f37fcf72000a2e683","parentDoc":null,"sync_unique":"","title":"Create the Visualforce Page","body":"1. In Salesforce, from Setup, enter `Visualforce` in the Quick Find box, then select **Visualforce Pages**. \n \n2. Click **New**.\n\n3. Enter a label and name of Predict.\n\n4. From the `README.md` file, copy all of the code from `<apex:page Controller=\"VisionController\">` to `</apex:page>` and paste it into the code editor.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/249dfe1-vf_page.png\",\n        \"vf_page.png\",\n        965,\n        773,\n        \"#f6f5f3\"\n      ]\n    }\n  ]\n}\n[/block]\n5. Click **Save**.\n\n6. Click **Preview** to test out the page.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/f6dab44-prediction.png\",\n        \"prediction.png\",\n        396,\n        333,\n        \"#f6f7f5\"\n      ]\n    }\n  ]\n}\n[/block]\nYour page shows the prediction results from the General Image Classifier, and the classifier is pretty sure it’s a picture of a tree frog.\n\nCongratulations! You wrote code to call the Einstein Image Classification API to make a prediction with an image, and all from within your Salesforce org.","category":"590a25abd47da32300b68bd8","childrenPages":[]}

Create the Visualforce Page

Now you create a Visualforce page that calls the classes that you just created to make a prediction.

1. In Salesforce, from Setup, enter `Visualforce` in the Quick Find box, then select **Visualforce Pages**. 2. Click **New**. 3. Enter a label and name of Predict. 4. From the `README.md` file, copy all of the code from `<apex:page Controller="VisionController">` to `</apex:page>` and paste it into the code editor. [block:image] { "images": [ { "image": [ "https://files.readme.io/249dfe1-vf_page.png", "vf_page.png", 965, 773, "#f6f5f3" ] } ] } [/block] 5. Click **Save**. 6. Click **Preview** to test out the page. [block:image] { "images": [ { "image": [ "https://files.readme.io/f6dab44-prediction.png", "prediction.png", 396, 333, "#f6f7f5" ] } ] } [/block] Your page shows the prediction results from the General Image Classifier, and the classifier is pretty sure it’s a picture of a tree frog. Congratulations! You wrote code to call the Einstein Image Classification API to make a prediction with an image, and all from within your Salesforce org.
1. In Salesforce, from Setup, enter `Visualforce` in the Quick Find box, then select **Visualforce Pages**. 2. Click **New**. 3. Enter a label and name of Predict. 4. From the `README.md` file, copy all of the code from `<apex:page Controller="VisionController">` to `</apex:page>` and paste it into the code editor. [block:image] { "images": [ { "image": [ "https://files.readme.io/249dfe1-vf_page.png", "vf_page.png", 965, 773, "#f6f5f3" ] } ] } [/block] 5. Click **Save**. 6. Click **Preview** to test out the page. [block:image] { "images": [ { "image": [ "https://files.readme.io/f6dab44-prediction.png", "prediction.png", 396, 333, "#f6f7f5" ] } ] } [/block] Your page shows the prediction results from the General Image Classifier, and the classifier is pretty sure it’s a picture of a tree frog. Congratulations! You wrote code to call the Einstein Image Classification API to make a prediction with an image, and all from within your Salesforce org.
{"_id":"590a25add47da32300b68be9","link_url":"","next":{"pages":[],"description":""},"order":0,"parentDoc":null,"title":"Scenario","category":"590a25abd47da32300b68bd9","createdAt":"2016-09-18T19:16:08.208Z","excerpt":"","project":"552d474ea86ee20d00780cd7","slug":"scenario","updates":[],"user":"573b5a1f37fcf72000a2e683","body":"After you've mastered the basics, it's time to step through creating your own image classifier and testing it out. You use the Einstein Image Classification REST API for all these tasks.\n\nIf you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers.\n\nHere's the scenario: you’re a developer who works for a company that sells outdoor sporting gear. The company has automation that monitors social media channels. When someone posts a photo, the company wants to know whether the photo was taken at the beach or in the mountains. Based on where the photo was taken, the company can make targeted product recommendations to its customers.\n \nTo perform that kind of analysis manually requires multiple people. In addition, manual analysis is slow, so it’s likely that the company couldn’t respond until well after the photo was posted. You’ve been tasked with implementing automation that can solve this problem.\n \nYour task is straightforward: create a model that can identify whether an image is of the beach or the mountains. Then test the model with an image of a beach scene.","githubsync":"","__v":0,"isReference":false,"sync_unique":"","type":"basic","version":"590a25abd47da32300b68bd5","api":{"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[],"url":""},"hidden":false,"link_external":false,"childrenPages":[]}

Scenario


After you've mastered the basics, it's time to step through creating your own image classifier and testing it out. You use the Einstein Image Classification REST API for all these tasks. If you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers. Here's the scenario: you’re a developer who works for a company that sells outdoor sporting gear. The company has automation that monitors social media channels. When someone posts a photo, the company wants to know whether the photo was taken at the beach or in the mountains. Based on where the photo was taken, the company can make targeted product recommendations to its customers. To perform that kind of analysis manually requires multiple people. In addition, manual analysis is slow, so it’s likely that the company couldn’t respond until well after the photo was posted. You’ve been tasked with implementing automation that can solve this problem. Your task is straightforward: create a model that can identify whether an image is of the beach or the mountains. Then test the model with an image of a beach scene.
After you've mastered the basics, it's time to step through creating your own image classifier and testing it out. You use the Einstein Image Classification REST API for all these tasks. If you need help as you go through these steps, check out the [Einstein Platform Services developer forum](https://developer.salesforce.com/forums?communityId=09aF00000004HMGIA2#!/feedtype=RECENT&dc=Predictive_Services&criteria=ALLQUESTIONS) on Salesforce Developers. Here's the scenario: you’re a developer who works for a company that sells outdoor sporting gear. The company has automation that monitors social media channels. When someone posts a photo, the company wants to know whether the photo was taken at the beach or in the mountains. Based on where the photo was taken, the company can make targeted product recommendations to its customers. To perform that kind of analysis manually requires multiple people. In addition, manual analysis is slow, so it’s likely that the company couldn’t respond until well after the photo was posted. You’ve been tasked with implementing automation that can solve this problem. Your task is straightforward: create a model that can identify whether an image is of the beach or the mountains. Then test the model with an image of a beach scene.
{"_id":"590a25add47da32300b68bea","link_external":false,"link_url":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","slug":"prerequisites","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[],"url":""},"excerpt":"","githubsync":"","hidden":false,"order":1,"updates":[],"__v":0,"type":"basic","createdAt":"2016-09-18T19:16:18.583Z","category":"590a25abd47da32300b68bd9","isReference":false,"next":{"pages":[],"description":""},"sync_unique":"","title":"Prerequisites","body":"- **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account.\n\n- **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key.\n\n- **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html)","childrenPages":[]}

Prerequisites


- **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key. - **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html)
- **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded (previously named `predictive_services.pem`) as part of that process. This file contains your private key. - **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html)
{"_id":"590a25add47da32300b68beb","version":"590a25abd47da32300b68bd5","api":{"url":"","results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[]},"category":"590a25abd47da32300b68bd9","hidden":false,"slug":"set-up-auth","__v":0,"order":2,"type":"basic","updates":[],"link_url":"","title":"Set Up Authorization","user":"573b5a1f37fcf72000a2e683","body":"1. Type your email address or account ID. \n - If you signed up using Salesforce, use the email address associated with your user in the Salesforce org you logged in to when you signed up. \n - If you signed up using Heroku, use the account ID contained in the `EINSTEIN_VISION_ACCOUNT_ID` config variable.\n\n\n2.  Click **Browse** and navigate to the `einstein_platform.pem` file that you downloaded when you signed up for an account. \n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Tip\",\n  \"body\": \"The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name.\"\n}\n[/block]\n3.  Set the number of minutes after which the token expires.\n\n4.  Click **Get Token**. You can now cut and paste the JWT token from the page.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/f296c5e-token_page_with_token.png\",\n        \"token_page_with_token.png\",\n        436,\n        830,\n        \"#0f86b7\"\n      ]\n    }\n  ]\n}\n[/block]\nThis page gives you a quick way to generate a token. In your app, you'll need to add the code that creates an assertion and then calls the API to generate a token. See [Generate an OAuth Token](doc:generate-an-oauth-token).\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Tip\",\n  \"body\": \"The token you create when you use this site doesn't automatically refresh. Your application must refresh the token based on the expiration time that you set when you create it.\"\n}\n[/block]","createdAt":"2016-09-18T19:16:44.212Z","excerpt":"The Einstein Platform Services APIs use OAuth 2.0 JWT bearer token flow for authorization. Use the [token page](https://api.einstein.ai/token) to upload your key file and generate a JWT token.","isReference":false,"link_external":false,"githubsync":"","next":{"pages":[],"description":""},"parentDoc":null,"project":"552d474ea86ee20d00780cd7","sync_unique":"","childrenPages":[]}

Set Up Authorization

The Einstein Platform Services APIs use OAuth 2.0 JWT bearer token flow for authorization. Use the [token page](https://api.einstein.ai/token) to upload your key file and generate a JWT token.

1. Type your email address or account ID. - If you signed up using Salesforce, use the email address associated with your user in the Salesforce org you logged in to when you signed up. - If you signed up using Heroku, use the account ID contained in the `EINSTEIN_VISION_ACCOUNT_ID` config variable. 2. Click **Browse** and navigate to the `einstein_platform.pem` file that you downloaded when you signed up for an account. [block:callout] { "type": "info", "title": "Tip", "body": "The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name." } [/block] 3. Set the number of minutes after which the token expires. 4. Click **Get Token**. You can now cut and paste the JWT token from the page. [block:image] { "images": [ { "image": [ "https://files.readme.io/f296c5e-token_page_with_token.png", "token_page_with_token.png", 436, 830, "#0f86b7" ] } ] } [/block] This page gives you a quick way to generate a token. In your app, you'll need to add the code that creates an assertion and then calls the API to generate a token. See [Generate an OAuth Token](doc:generate-an-oauth-token). [block:callout] { "type": "info", "title": "Tip", "body": "The token you create when you use this site doesn't automatically refresh. Your application must refresh the token based on the expiration time that you set when you create it." } [/block]
1. Type your email address or account ID. - If you signed up using Salesforce, use the email address associated with your user in the Salesforce org you logged in to when you signed up. - If you signed up using Heroku, use the account ID contained in the `EINSTEIN_VISION_ACCOUNT_ID` config variable. 2. Click **Browse** and navigate to the `einstein_platform.pem` file that you downloaded when you signed up for an account. [block:callout] { "type": "info", "title": "Tip", "body": "The key file was previously named `predictive_services.pem`. If you signed up at an earlier time and you can't file your key file, try searching for a file by this name." } [/block] 3. Set the number of minutes after which the token expires. 4. Click **Get Token**. You can now cut and paste the JWT token from the page. [block:image] { "images": [ { "image": [ "https://files.readme.io/f296c5e-token_page_with_token.png", "token_page_with_token.png", 436, 830, "#0f86b7" ] } ] } [/block] This page gives you a quick way to generate a token. In your app, you'll need to add the code that creates an assertion and then calls the API to generate a token. See [Generate an OAuth Token](doc:generate-an-oauth-token). [block:callout] { "type": "info", "title": "Tip", "body": "The token you create when you use this site doesn't automatically refresh. Your application must refresh the token based on the expiration time that you set when you create it." } [/block]
{"_id":"590a25add47da32300b68bec","title":"Step 1: Create the Dataset","user":"573b5a1f37fcf72000a2e683","body":"In the following command, replace `<TOKEN>` with your JWT token and run the command. This command:\n\n- Creates a dataset called `beachvsmountains` from the specified .zip file\n- Creates two labels from the .zip file directories: a `Beaches` label and a `Mountains` label\n- Creates 49 examples named for the images in the Beaches directory and gives them the `Beaches` label\n- Creates 50 examples named for the images in the Mountains directory and gives them the `Mountains` label\n\n <sub>If you use the Service, Salesforce may make available certain images to you (\"Provided Images\"), which are licensed from a third party, as part of the Service. You agree that you will only use the Provided Images in connection with the Service, and you agree that you will not: modify, alter, create derivative works from, sell, sublicense, transfer, assign, or otherwise distribute the Provided Images to any third party.</sub>\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"type=image\\\" -F \\\"path=http://einstein.ai/images/mountainvsbeach.zip\\\" https://api.einstein.ai/v2/vision/datasets/upload/sync\",\n      \"language\": \"curl\",\n      \"name\": null\n    }\n  ]\n}\n[/block]\nThis call is synchronous, so you'll see a response after all the images have finished uploading. The response contains the dataset ID and name as well as information about the labels and examples.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 1000044,\\n  \\\"name\\\": \\\"mountainvsbeach\\\",\\n  \\\"createdAt\\\": \\\"2017-02-21T21:59:29.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-02-21T21:59:29.000+0000\\\",\\n  \\\"labelSummary\\\": {\\n    \\\"labels\\\": [\\n      {\\n        \\\"id\\\": 1865,\\n        \\\"datasetId\\\": 1000044,\\n        \\\"name\\\": \\\"Mountains\\\",\\n        \\\"numExamples\\\": 50\\n      },\\n      {\\n        \\\"id\\\": 1866,\\n        \\\"datasetId\\\": 1000044,\\n        \\\"name\\\": \\\"Beaches\\\",\\n        \\\"numExamples\\\": 49\\n      }\\n    ]\\n  },\\n  \\\"totalExamples\\\": 99,\\n  \\\"totalLabels\\\": 2,\\n  \\\"available\\\": true,\\n  \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n  \\\"type\\\": \\\"image\\\",\\n  \\\"object\\\": \\\"dataset\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Tell Me More##\nThere are other ways to work with datasets using the API. For example, use this command to return a list of all your datasets.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/datasets\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe results look something like this.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"object\\\": \\\"list\\\",\\n  \\\"data\\\": [\\n    {\\n      \\\"id\\\": 1000044,\\n      \\\"name\\\": \\\"mountainvsbeach\\\",\\n      \\\"createdAt\\\": \\\"2017-02-21T21:59:29.000+0000\\\",\\n      \\\"updatedAt\\\": \\\"2017-02-21T21:59:29.000+0000\\\",\\n      \\\"labelSummary\\\": {\\n      \\\"labels\\\": [\\n        {\\n          \\\"id\\\": 1865,\\n          \\\"datasetId\\\": 1000044,\\n          \\\"name\\\": \\\"Mountains\\\",\\n          \\\"numExamples\\\": 50\\n        },\\n        {\\n          \\\"id\\\": 1866,\\n          \\\"datasetId\\\": 1000044,\\n          \\\"name\\\": \\\"Beaches\\\",\\n          \\\"numExamples\\\": 49\\n        }\\n      ]\\n    },\\n    \\\"totalExamples\\\": 99,\\n    \\\"totalLabels\\\": 2,\\n    \\\"available\\\": true,\\n    \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n    \\\"type\\\": \\\"image\\\",\\n    \\\"object\\\": \\\"dataset\\\"\\n   },\\n   {\\n      \\\"id\\\": 1000045,\\n      \\\"name\\\": \\\"Brain Scans\\\",\\n      \\\"createdAt\\\": \\\"2017-02-21T22:04:06.000+0000\\\",\\n      \\\"updatedAt\\\": \\\"2017-02-21T22:04:06.000+0000\\\",\\n      \\\"labelSummary\\\": {\\n        \\\"labels\\\": []\\n      },\\n      \\\"totalExamples\\\": 0,\\n      \\\"totalLabels\\\": 0,\\n      \\\"available\\\": true,\\n      \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n       \\\"type\\\": \\\"image\\\",\\n      \\\"object\\\": \\\"dataset\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nTo delete a dataset, use the DELETE verb and pass in the dataset ID.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X DELETE -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nDeleting a dataset returns an HTTP status of 204, but no JSON response is returned.\n\nIn this scenario, the API call to create the dataset and upload the image data is synchronous. You can also make an asynchronous call to create a dataset. See [Ways to Create a Dataset](doc:ways-to-create-a-dataset) for more information about when to use the various APIs.","createdAt":"2016-09-18T19:17:02.894Z","project":"552d474ea86ee20d00780cd7","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"","auth":"required","params":[],"url":""},"excerpt":"The first step is to create the dataset that contains the beach and mountain images. You use this dataset to create the model.","githubsync":"","isReference":false,"next":{"pages":[],"description":""},"order":3,"parentDoc":null,"slug":"step-1-create-the-dataset","category":"590a25abd47da32300b68bd9","updates":[],"version":"590a25abd47da32300b68bd5","sync_unique":"","hidden":false,"link_external":false,"link_url":"","type":"basic","__v":0,"childrenPages":[]}

Step 1: Create the Dataset

The first step is to create the dataset that contains the beach and mountain images. You use this dataset to create the model.

In the following command, replace `<TOKEN>` with your JWT token and run the command. This command: - Creates a dataset called `beachvsmountains` from the specified .zip file - Creates two labels from the .zip file directories: a `Beaches` label and a `Mountains` label - Creates 49 examples named for the images in the Beaches directory and gives them the `Beaches` label - Creates 50 examples named for the images in the Mountains directory and gives them the `Mountains` label <sub>If you use the Service, Salesforce may make available certain images to you ("Provided Images"), which are licensed from a third party, as part of the Service. You agree that you will only use the Provided Images in connection with the Service, and you agree that you will not: modify, alter, create derivative works from, sell, sublicense, transfer, assign, or otherwise distribute the Provided Images to any third party.</sub> [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"type=image\" -F \"path=http://einstein.ai/images/mountainvsbeach.zip\" https://api.einstein.ai/v2/vision/datasets/upload/sync", "language": "curl", "name": null } ] } [/block] This call is synchronous, so you'll see a response after all the images have finished uploading. The response contains the dataset ID and name as well as information about the labels and examples. [block:code] { "codes": [ { "code": "{\n \"id\": 1000044,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-21T21:59:29.000+0000\",\n \"updatedAt\": \"2017-02-21T21:59:29.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1865,\n \"datasetId\": 1000044,\n \"name\": \"Mountains\",\n \"numExamples\": 50\n },\n {\n \"id\": 1866,\n \"datasetId\": 1000044,\n \"name\": \"Beaches\",\n \"numExamples\": 49\n }\n ]\n },\n \"totalExamples\": 99,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] ##Tell Me More## There are other ways to work with datasets using the API. For example, use this command to return a list of all your datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets", "language": "curl" } ] } [/block] The results look something like this. [block:code] { "codes": [ { "code": "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": 1000044,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-21T21:59:29.000+0000\",\n \"updatedAt\": \"2017-02-21T21:59:29.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1865,\n \"datasetId\": 1000044,\n \"name\": \"Mountains\",\n \"numExamples\": 50\n },\n {\n \"id\": 1866,\n \"datasetId\": 1000044,\n \"name\": \"Beaches\",\n \"numExamples\": 49\n }\n ]\n },\n \"totalExamples\": 99,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n },\n {\n \"id\": 1000045,\n \"name\": \"Brain Scans\",\n \"createdAt\": \"2017-02-21T22:04:06.000+0000\",\n \"updatedAt\": \"2017-02-21T22:04:06.000+0000\",\n \"labelSummary\": {\n \"labels\": []\n },\n \"totalExamples\": 0,\n \"totalLabels\": 0,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n }\n ]\n}", "language": "json" } ] } [/block] To delete a dataset, use the DELETE verb and pass in the dataset ID. [block:code] { "codes": [ { "code": "curl -X DELETE -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>", "language": "curl" } ] } [/block] Deleting a dataset returns an HTTP status of 204, but no JSON response is returned. In this scenario, the API call to create the dataset and upload the image data is synchronous. You can also make an asynchronous call to create a dataset. See [Ways to Create a Dataset](doc:ways-to-create-a-dataset) for more information about when to use the various APIs.
In the following command, replace `<TOKEN>` with your JWT token and run the command. This command: - Creates a dataset called `beachvsmountains` from the specified .zip file - Creates two labels from the .zip file directories: a `Beaches` label and a `Mountains` label - Creates 49 examples named for the images in the Beaches directory and gives them the `Beaches` label - Creates 50 examples named for the images in the Mountains directory and gives them the `Mountains` label <sub>If you use the Service, Salesforce may make available certain images to you ("Provided Images"), which are licensed from a third party, as part of the Service. You agree that you will only use the Provided Images in connection with the Service, and you agree that you will not: modify, alter, create derivative works from, sell, sublicense, transfer, assign, or otherwise distribute the Provided Images to any third party.</sub> [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"type=image\" -F \"path=http://einstein.ai/images/mountainvsbeach.zip\" https://api.einstein.ai/v2/vision/datasets/upload/sync", "language": "curl", "name": null } ] } [/block] This call is synchronous, so you'll see a response after all the images have finished uploading. The response contains the dataset ID and name as well as information about the labels and examples. [block:code] { "codes": [ { "code": "{\n \"id\": 1000044,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-21T21:59:29.000+0000\",\n \"updatedAt\": \"2017-02-21T21:59:29.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1865,\n \"datasetId\": 1000044,\n \"name\": \"Mountains\",\n \"numExamples\": 50\n },\n {\n \"id\": 1866,\n \"datasetId\": 1000044,\n \"name\": \"Beaches\",\n \"numExamples\": 49\n }\n ]\n },\n \"totalExamples\": 99,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] ##Tell Me More## There are other ways to work with datasets using the API. For example, use this command to return a list of all your datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets", "language": "curl" } ] } [/block] The results look something like this. [block:code] { "codes": [ { "code": "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": 1000044,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-21T21:59:29.000+0000\",\n \"updatedAt\": \"2017-02-21T21:59:29.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1865,\n \"datasetId\": 1000044,\n \"name\": \"Mountains\",\n \"numExamples\": 50\n },\n {\n \"id\": 1866,\n \"datasetId\": 1000044,\n \"name\": \"Beaches\",\n \"numExamples\": 49\n }\n ]\n },\n \"totalExamples\": 99,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n },\n {\n \"id\": 1000045,\n \"name\": \"Brain Scans\",\n \"createdAt\": \"2017-02-21T22:04:06.000+0000\",\n \"updatedAt\": \"2017-02-21T22:04:06.000+0000\",\n \"labelSummary\": {\n \"labels\": []\n },\n \"totalExamples\": 0,\n \"totalLabels\": 0,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n }\n ]\n}", "language": "json" } ] } [/block] To delete a dataset, use the DELETE verb and pass in the dataset ID. [block:code] { "codes": [ { "code": "curl -X DELETE -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/<DATASET_ID>", "language": "curl" } ] } [/block] Deleting a dataset returns an HTTP status of 204, but no JSON response is returned. In this scenario, the API call to create the dataset and upload the image data is synchronous. You can also make an asynchronous call to create a dataset. See [Ways to Create a Dataset](doc:ways-to-create-a-dataset) for more information about when to use the various APIs.
{"_id":"590a25add47da32300b68bed","api":{"params":[],"url":"","results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"status":400,"name":"","code":"{}","language":"json"}]},"settings":"","auth":"required"},"excerpt":"Training the dataset creates the model that delivers the predictions.","order":4,"parentDoc":null,"title":"Step 2: Train the Dataset","updates":[],"user":"573b5a1f37fcf72000a2e683","createdAt":"2016-09-18T19:18:12.443Z","hidden":false,"link_external":false,"project":"552d474ea86ee20d00780cd7","sync_unique":"","type":"basic","version":"590a25abd47da32300b68bd5","next":{"description":"","pages":[]},"__v":0,"body":"1. Now that you’ve added the labeled images to the dataset, it’s time to train the dataset. In this command, replace `<TOKEN>` with your token and `<DATASET_ID>` with your dataset ID, and then run it. This command trains the dataset and creates a model with the name specified in the name parameter.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=Beach and Mountain Model\\\" -F \\\"datasetId=<DATASET_ID>\\\" https://api.einstein.ai/v2/vision/train\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe response contains information about the training status and looks like the following. Make a note of the `modelId` because you use this value in the next step.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 1000038,\\n  \\\"datasetVersionId\\\": 0,\\n  \\\"name\\\": \\\"Beach and Mountain Model\\\",\\n  \\\"status\\\": \\\"QUEUED\\\",\\n  \\\"progress\\\": 0,\\n  \\\"createdAt\\\": \\\"2017-02-21T21:10:03.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-02-21T21:10:03.000+0000\\\",\\n  \\\"learningRate\\\": 0.001,\\n  \\\"epochs\\\": 3,\\n  \\\"queuePosition\\\": 1,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"X76USM4Q3QRZRODBDTUGDZEHJU\\\",\\n  \\\"trainParams\\\": null,\\n  \\\"trainStats\\\": null,\\n  \\\"modelType\\\": \\\"image\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n2. Training a dataset can take a while depending on how many images the dataset contains. To get the training status, in this command, replace `<TOKEN>` with your token and `<YOUR_MODEL_ID>` the model ID, and then run the command.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe response returns the status of the training process. If it’s in progress, you see a status of `RUNNING`. When the training is complete, it returns a status of `SUCCEEDED` and a progress value of `1`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 1000072,\\n  \\\"datasetVersionId\\\": 0,\\n  \\\"name\\\": \\\"Beach and Mountain Model\\\",\\n  \\\"status\\\": \\\"SUCCEEDED\\\",\\n  \\\"progress\\\": 1,\\n  \\\"createdAt\\\": \\\"2017-02-21T22:08:52.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-02-21T22:10:20.000+0000\\\",\\n  \\\"learningRate\\\": 0.001,\\n  \\\"epochs\\\": 3,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"X76USM4Q3QRZRODBDTUGDZEHJU\\\",\\n  \\\"trainParams\\\": null,\\n  \\\"trainStats\\\": {\\n    \\\"labels\\\": 2,\\n    \\\"examples\\\": 99,\\n    \\\"totalTime\\\": \\\"00:02:16:958\\\",\\n    \\\"trainingTime\\\": \\\"00:02:13:664\\\",\\n    \\\"earlyStopping\\\": false,\\n    \\\"lastEpochDone\\\": 3,\\n    \\\"modelSaveTime\\\": \\\"00:00:01:871\\\",\\n    \\\"testSplitSize\\\": 6,\\n    \\\"trainSplitSize\\\": 93,\\n    \\\"datasetLoadTime\\\": \\\"00:00:03:270\\\"\\n  },\\n  \\\"modelType\\\": \\\"image\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Tell Me More##\nAfter you create a model, you can retrieve metrics about the model, such as its accuracy, f1 score, and confusion matrix. You can use these values to tune and tweak your model. Use this call to get the model metrics.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/models/<MODEL_ID>\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe command returns a response similar to this one.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"metricsData\\\": {\\n    \\\"f1\\\": [\\n        0.8000000000000002,\\n        0.6666666666666666\\n    ],\\n    \\\"labels\\\": [\\n      \\\"Mountains\\\",\\n      \\\"Beaches\\\"\\n    ],\\n    \\\"testAccuracy\\\": 0.75,\\n    \\\"trainingLoss\\\": 0.0622,\\n    \\\"confusionMatrix\\\": [\\n        [\\n            4,\\n            1\\n        ],\\n        [\\n            1,\\n            2\\n        ]\\n    ],\\n    \\\"trainingAccuracy\\\": 0.9814\\n  },\\n  \\\"createdAt\\\": \\\"2017-02-21T22:19:25.000+0000\\\",\\n  \\\"id\\\": \\\"X76USM4Q3QRZRODBDTUGDZEHJU\\\",\\n  \\\"object\\\": \\\"metrics\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nTo see the model metrics for each training iteration (epoch) performed to create the model, call the learning curve API. See [Get Model Learning Curve](doc:get-model-learning-curve).","category":"590a25abd47da32300b68bd9","githubsync":"","link_url":"","isReference":false,"slug":"step-2-train-the-dataset","childrenPages":[]}

Step 2: Train the Dataset

Training the dataset creates the model that delivers the predictions.

1. Now that you’ve added the labeled images to the dataset, it’s time to train the dataset. In this command, replace `<TOKEN>` with your token and `<DATASET_ID>` with your dataset ID, and then run it. This command trains the dataset and creates a model with the name specified in the name parameter. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach and Mountain Model\" -F \"datasetId=<DATASET_ID>\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] The response contains information about the training status and looks like the following. Make a note of the `modelId` because you use this value in the next step. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1000038,\n \"datasetVersionId\": 0,\n \"name\": \"Beach and Mountain Model\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-02-21T21:10:03.000+0000\",\n \"updatedAt\": \"2017-02-21T21:10:03.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 1,\n \"object\": \"training\",\n \"modelId\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"trainParams\": null,\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] 2. Training a dataset can take a while depending on how many images the dataset contains. To get the training status, in this command, replace `<TOKEN>` with your token and `<YOUR_MODEL_ID>` the model ID, and then run the command. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>", "language": "curl" } ] } [/block] The response returns the status of the training process. If it’s in progress, you see a status of `RUNNING`. When the training is complete, it returns a status of `SUCCEEDED` and a progress value of `1`. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1000072,\n \"datasetVersionId\": 0,\n \"name\": \"Beach and Mountain Model\",\n \"status\": \"SUCCEEDED\",\n \"progress\": 1,\n \"createdAt\": \"2017-02-21T22:08:52.000+0000\",\n \"updatedAt\": \"2017-02-21T22:10:20.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"object\": \"training\",\n \"modelId\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"trainParams\": null,\n \"trainStats\": {\n \"labels\": 2,\n \"examples\": 99,\n \"totalTime\": \"00:02:16:958\",\n \"trainingTime\": \"00:02:13:664\",\n \"earlyStopping\": false,\n \"lastEpochDone\": 3,\n \"modelSaveTime\": \"00:00:01:871\",\n \"testSplitSize\": 6,\n \"trainSplitSize\": 93,\n \"datasetLoadTime\": \"00:00:03:270\"\n },\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] ##Tell Me More## After you create a model, you can retrieve metrics about the model, such as its accuracy, f1 score, and confusion matrix. You can use these values to tune and tweak your model. Use this call to get the model metrics. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/<MODEL_ID>", "language": "curl" } ] } [/block] The command returns a response similar to this one. [block:code] { "codes": [ { "code": "{\n \"metricsData\": {\n \"f1\": [\n 0.8000000000000002,\n 0.6666666666666666\n ],\n \"labels\": [\n \"Mountains\",\n \"Beaches\"\n ],\n \"testAccuracy\": 0.75,\n \"trainingLoss\": 0.0622,\n \"confusionMatrix\": [\n [\n 4,\n 1\n ],\n [\n 1,\n 2\n ]\n ],\n \"trainingAccuracy\": 0.9814\n },\n \"createdAt\": \"2017-02-21T22:19:25.000+0000\",\n \"id\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"object\": \"metrics\"\n}", "language": "json" } ] } [/block] To see the model metrics for each training iteration (epoch) performed to create the model, call the learning curve API. See [Get Model Learning Curve](doc:get-model-learning-curve).
1. Now that you’ve added the labeled images to the dataset, it’s time to train the dataset. In this command, replace `<TOKEN>` with your token and `<DATASET_ID>` with your dataset ID, and then run it. This command trains the dataset and creates a model with the name specified in the name parameter. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach and Mountain Model\" -F \"datasetId=<DATASET_ID>\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] The response contains information about the training status and looks like the following. Make a note of the `modelId` because you use this value in the next step. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1000038,\n \"datasetVersionId\": 0,\n \"name\": \"Beach and Mountain Model\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-02-21T21:10:03.000+0000\",\n \"updatedAt\": \"2017-02-21T21:10:03.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 1,\n \"object\": \"training\",\n \"modelId\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"trainParams\": null,\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] 2. Training a dataset can take a while depending on how many images the dataset contains. To get the training status, in this command, replace `<TOKEN>` with your token and `<YOUR_MODEL_ID>` the model ID, and then run the command. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/train/<YOUR_MODEL_ID>", "language": "curl" } ] } [/block] The response returns the status of the training process. If it’s in progress, you see a status of `RUNNING`. When the training is complete, it returns a status of `SUCCEEDED` and a progress value of `1`. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1000072,\n \"datasetVersionId\": 0,\n \"name\": \"Beach and Mountain Model\",\n \"status\": \"SUCCEEDED\",\n \"progress\": 1,\n \"createdAt\": \"2017-02-21T22:08:52.000+0000\",\n \"updatedAt\": \"2017-02-21T22:10:20.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"object\": \"training\",\n \"modelId\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"trainParams\": null,\n \"trainStats\": {\n \"labels\": 2,\n \"examples\": 99,\n \"totalTime\": \"00:02:16:958\",\n \"trainingTime\": \"00:02:13:664\",\n \"earlyStopping\": false,\n \"lastEpochDone\": 3,\n \"modelSaveTime\": \"00:00:01:871\",\n \"testSplitSize\": 6,\n \"trainSplitSize\": 93,\n \"datasetLoadTime\": \"00:00:03:270\"\n },\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] ##Tell Me More## After you create a model, you can retrieve metrics about the model, such as its accuracy, f1 score, and confusion matrix. You can use these values to tune and tweak your model. Use this call to get the model metrics. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/<MODEL_ID>", "language": "curl" } ] } [/block] The command returns a response similar to this one. [block:code] { "codes": [ { "code": "{\n \"metricsData\": {\n \"f1\": [\n 0.8000000000000002,\n 0.6666666666666666\n ],\n \"labels\": [\n \"Mountains\",\n \"Beaches\"\n ],\n \"testAccuracy\": 0.75,\n \"trainingLoss\": 0.0622,\n \"confusionMatrix\": [\n [\n 4,\n 1\n ],\n [\n 1,\n 2\n ]\n ],\n \"trainingAccuracy\": 0.9814\n },\n \"createdAt\": \"2017-02-21T22:19:25.000+0000\",\n \"id\": \"X76USM4Q3QRZRODBDTUGDZEHJU\",\n \"object\": \"metrics\"\n}", "language": "json" } ] } [/block] To see the model metrics for each training iteration (epoch) performed to create the model, call the learning curve API. See [Get Model Learning Curve](doc:get-model-learning-curve).
{"_id":"590a25add47da32300b68bee","body":"You send an image to the model, and the model returns label names and probability values. The probability value is the prediction that the model makes for whether the image matches a label in its dataset. The higher the value, the higher the probability. \n\nYou can classify an image in these ways. \n- Reference the file by a URL\n- Upload the file by its path\n- Upload the image in a base64 string\n\nFor this example, you’ll reference this picture by the file URL.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/4d870d7-546212389.jpg\",\n        \"546212389.jpg\",\n        1024,\n        1024,\n        \"#cac9c5\"\n      ]\n    }\n  ]\n}\n[/block]\n1. In the following command, replace: \n - `<TOKEN>` with your JWT token\n - `<YOUR_MODEL_ID>` with the ID of the model that you created when you trained the dataset\n \nThen run the command from the command line.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=http://einstein.ai/images/546212389.jpg\\\" -F \\\"modelId=<YOUR_MODEL_ID>\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe model returns results similar to the following.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"Beaches\\\",\\n      \\\"probability\\\": 0.97554934\\n    },\\n    {\\n      \\\"label\\\": \\\"Mountains\\\",\\n      \\\"probability\\\": 0.024450686\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThe model predicts that the image belongs in the beach label, and therefore, is a picture of a beach scene. The numeric prediction is contained in the `probability` field, and this value is anywhere from 0 (not at all likely) to 1 (very likely). \n\nIn this case, the model is about 98% sure that the image belongs in the beach label. The results are returned in descending order with the greatest probability first.\n\nIf you run a prediction against a model that’s still training, you receive an error that the model ID can't be found.\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Caution\",\n  \"body\": \"The dataset used for this scenario contains only 99 images, which is considered a small dataset. When you build your own dataset and model, follow the guidance on the [Dataset and Model Best Practices](doc:dataset-and-model-best-practices) page and add a lot of data.\"\n}\n[/block]\n##Tell Me More##\nYou can also classify a local image by uploading the image or by converting the image to a base64 string. To upload a local image, instead of the `sampleLocation` parameter, pass in the `sampleContent` parameter, which contains the image file location of the file to upload.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleContent=@C:\\\\Mountains vs Beach\\\\Beaches\\\\546212389.jpg\\\" -F \\\"modelId=<YOUR_MODEL_ID>\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nSee [Prediction with Image File](doc:prediction-with-image-file) and [Prediction with Image Base64 String](doc:prediction-with-image-base64-string).\n\nCreating the dataset and model are just the beginning. When you create your own model, be sure to test a range of images to ensure that it’s returning the results that you need.\n\nYou’ve done it! You’ve gone through the complete process of building a dataset, creating a model, and classifying images using the Einstein Image Classification API. You’re ready to take what you’ve learned and bring the power of deep learning to your users.","excerpt":"Now that the data is uploaded and you created a model, you’re ready to use it to make predictions.","githubsync":"","link_url":"","parentDoc":null,"version":"590a25abd47da32300b68bd5","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"title":"Step 3: Classify an Image","user":"573b5a1f37fcf72000a2e683","isReference":false,"link_external":false,"next":{"pages":[],"description":""},"order":5,"slug":"step-3-classify-an-image","sync_unique":"","updates":[],"__v":0,"category":"590a25abd47da32300b68bd9","createdAt":"2016-09-18T19:18:42.562Z","hidden":false,"project":"552d474ea86ee20d00780cd7","type":"basic","childrenPages":[]}

Step 3: Classify an Image

Now that the data is uploaded and you created a model, you’re ready to use it to make predictions.

You send an image to the model, and the model returns label names and probability values. The probability value is the prediction that the model makes for whether the image matches a label in its dataset. The higher the value, the higher the probability. You can classify an image in these ways. - Reference the file by a URL - Upload the file by its path - Upload the image in a base64 string For this example, you’ll reference this picture by the file URL. [block:image] { "images": [ { "image": [ "https://files.readme.io/4d870d7-546212389.jpg", "546212389.jpg", 1024, 1024, "#cac9c5" ] } ] } [/block] 1. In the following command, replace: - `<TOKEN>` with your JWT token - `<YOUR_MODEL_ID>` with the ID of the model that you created when you trained the dataset Then run the command from the command line. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/546212389.jpg\" -F \"modelId=<YOUR_MODEL_ID>\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns results similar to the following. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Beaches\",\n \"probability\": 0.97554934\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 0.024450686\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] The model predicts that the image belongs in the beach label, and therefore, is a picture of a beach scene. The numeric prediction is contained in the `probability` field, and this value is anywhere from 0 (not at all likely) to 1 (very likely). In this case, the model is about 98% sure that the image belongs in the beach label. The results are returned in descending order with the greatest probability first. If you run a prediction against a model that’s still training, you receive an error that the model ID can't be found. [block:callout] { "type": "warning", "title": "Caution", "body": "The dataset used for this scenario contains only 99 images, which is considered a small dataset. When you build your own dataset and model, follow the guidance on the [Dataset and Model Best Practices](doc:dataset-and-model-best-practices) page and add a lot of data." } [/block] ##Tell Me More## You can also classify a local image by uploading the image or by converting the image to a base64 string. To upload a local image, instead of the `sampleLocation` parameter, pass in the `sampleContent` parameter, which contains the image file location of the file to upload. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=@C:\\Mountains vs Beach\\Beaches\\546212389.jpg\" -F \"modelId=<YOUR_MODEL_ID>\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] See [Prediction with Image File](doc:prediction-with-image-file) and [Prediction with Image Base64 String](doc:prediction-with-image-base64-string). Creating the dataset and model are just the beginning. When you create your own model, be sure to test a range of images to ensure that it’s returning the results that you need. You’ve done it! You’ve gone through the complete process of building a dataset, creating a model, and classifying images using the Einstein Image Classification API. You’re ready to take what you’ve learned and bring the power of deep learning to your users.
You send an image to the model, and the model returns label names and probability values. The probability value is the prediction that the model makes for whether the image matches a label in its dataset. The higher the value, the higher the probability. You can classify an image in these ways. - Reference the file by a URL - Upload the file by its path - Upload the image in a base64 string For this example, you’ll reference this picture by the file URL. [block:image] { "images": [ { "image": [ "https://files.readme.io/4d870d7-546212389.jpg", "546212389.jpg", 1024, 1024, "#cac9c5" ] } ] } [/block] 1. In the following command, replace: - `<TOKEN>` with your JWT token - `<YOUR_MODEL_ID>` with the ID of the model that you created when you trained the dataset Then run the command from the command line. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/546212389.jpg\" -F \"modelId=<YOUR_MODEL_ID>\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns results similar to the following. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Beaches\",\n \"probability\": 0.97554934\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 0.024450686\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] The model predicts that the image belongs in the beach label, and therefore, is a picture of a beach scene. The numeric prediction is contained in the `probability` field, and this value is anywhere from 0 (not at all likely) to 1 (very likely). In this case, the model is about 98% sure that the image belongs in the beach label. The results are returned in descending order with the greatest probability first. If you run a prediction against a model that’s still training, you receive an error that the model ID can't be found. [block:callout] { "type": "warning", "title": "Caution", "body": "The dataset used for this scenario contains only 99 images, which is considered a small dataset. When you build your own dataset and model, follow the guidance on the [Dataset and Model Best Practices](doc:dataset-and-model-best-practices) page and add a lot of data." } [/block] ##Tell Me More## You can also classify a local image by uploading the image or by converting the image to a base64 string. To upload a local image, instead of the `sampleLocation` parameter, pass in the `sampleContent` parameter, which contains the image file location of the file to upload. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=@C:\\Mountains vs Beach\\Beaches\\546212389.jpg\" -F \"modelId=<YOUR_MODEL_ID>\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] See [Prediction with Image File](doc:prediction-with-image-file) and [Prediction with Image Base64 String](doc:prediction-with-image-base64-string). Creating the dataset and model are just the beginning. When you create your own model, be sure to test a range of images to ensure that it’s returning the results that you need. You’ve done it! You’ve gone through the complete process of building a dataset, creating a model, and classifying images using the Einstein Image Classification API. You’re ready to take what you’ve learned and bring the power of deep learning to your users.
{"_id":"590cf44e44c6820f003cead0","link_url":"","project":"552d474ea86ee20d00780cd7","title":"Add Feedback to a Dataset","type":"basic","__v":0,"createdAt":"2017-05-05T21:53:18.245Z","excerpt":"If a model misclassifies an image, you can use the feedback API to add that image to the correct label in the dataset. Then you can train that dataset and update the model.","next":{"pages":[],"description":""},"sync_unique":"","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","category":"590cf3d8ac8f3a1900065a81","githubsync":"","hidden":false,"isReference":false,"slug":"add-feedback-to-dataset","updates":[],"api":{"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","auth":"required","params":[],"url":""},"body":"The Einstein Image Classification API provides various features that let you optimize and retrain your model using feedback. Use these features to:\n\n- Add a misclassified image to a dataset with the correct label.\n- Get a list of images that were added as feedback to a dataset.\n- Create a model or update an existing model using feedback images.\n\nLet’s look at an example. Let’s say you have a model that classifies beaches and mountains. You send in an image, `alps.jpg`, to the model to get back a prediction. The model returns a response that contains a high probability that the image is a beach (in the Beaches class). However, you expect a response that contains a high probability that the image is a mountain (in the Mountains class). This means that the image was misclassified. \n\n##Add Feedback to the Dataset##\n\nUse the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. This cURL call adds `alps.jpg` as a new example to the dataset. The request parameter `\"expectedLabel=Mountains\"` specifies that the image is added to the correct class in the dataset.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=3CMCRC572BD3OZTQSTTUU4733Y\\\" -F \\\"data=@c:\\\\data\\\\alps.jpg\\\" -F \\\"expectedLabel=Mountains\\\" https://api.einstein.ai/v2/vision/feedback\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\n##Get Feedback Examples##\n\nAfter you add feedback examples to a dataset, you can query the dataset and return just those examples that were added from the feedback API call. \n\nThe API call to get dataset examples takes a `source` query parameter that lets you specify which examples to return from a dataset. See [Get All Examples](doc:get-all-examples).\n\nValid values for this parameter are:\n\n- `all`—Return both upload and feedback examples.\n- `feedback`—Return examples that were created as feedback.\n- `upload`—Return examples that were created from uploading a .zip file.\n\nIf you omit the `source` parameter, feedback examples aren't returned from this call. The `source` query parameter can be combined with the `offset` and `count` query parameters used for paging. \n\nThis cURL call gets examples that were added as feedback from the specified dataset.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe response returns all the examples that were added by calling the feedback API such as the file `alps.jpg`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n      \\\"id\\\": 618169,\\n      \\\"name\\\": \\\"alps.jpg\\\",\\n      \\\"location\\\": \\\"RPA8C4FwkbxRQJaXCmwPejGx4W1sKYjWn...\\\",\\n      \\\"createdAt\\\": \\\"2017-05-04T20:57:23.000+0000\\\",\\n      \\\"label\\\": {\\n        \\\"id\\\": 3235,\\n        \\\"datasetId\\\": 57,\\n        \\\"name\\\": \\\"Mountains\\\",\\n        \\\"numExamples\\\": 108\\n      },\\n      \\\"object\\\": \\\"example\\\"\\n    }\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","link_external":false,"order":0,"parentDoc":null,"childrenPages":[]}

Add Feedback to a Dataset

If a model misclassifies an image, you can use the feedback API to add that image to the correct label in the dataset. Then you can train that dataset and update the model.

The Einstein Image Classification API provides various features that let you optimize and retrain your model using feedback. Use these features to: - Add a misclassified image to a dataset with the correct label. - Get a list of images that were added as feedback to a dataset. - Create a model or update an existing model using feedback images. Let’s look at an example. Let’s say you have a model that classifies beaches and mountains. You send in an image, `alps.jpg`, to the model to get back a prediction. The model returns a response that contains a high probability that the image is a beach (in the Beaches class). However, you expect a response that contains a high probability that the image is a mountain (in the Mountains class). This means that the image was misclassified. ##Add Feedback to the Dataset## Use the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. This cURL call adds `alps.jpg` as a new example to the dataset. The request parameter `"expectedLabel=Mountains"` specifies that the image is added to the correct class in the dataset. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=3CMCRC572BD3OZTQSTTUU4733Y\" -F \"data=@c:\\data\\alps.jpg\" -F \"expectedLabel=Mountains\" https://api.einstein.ai/v2/vision/feedback", "language": "curl" } ] } [/block] ##Get Feedback Examples## After you add feedback examples to a dataset, you can query the dataset and return just those examples that were added from the feedback API call. The API call to get dataset examples takes a `source` query parameter that lets you specify which examples to return from a dataset. See [Get All Examples](doc:get-all-examples). Valid values for this parameter are: - `all`—Return both upload and feedback examples. - `feedback`—Return examples that were created as feedback. - `upload`—Return examples that were created from uploading a .zip file. If you omit the `source` parameter, feedback examples aren't returned from this call. The `source` query parameter can be combined with the `offset` and `count` query parameters used for paging. This cURL call gets examples that were added as feedback from the specified dataset. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback", "language": "curl" } ] } [/block] The response returns all the examples that were added by calling the feedback API such as the file `alps.jpg`. [block:code] { "codes": [ { "code": "{\n \"id\": 618169,\n \"name\": \"alps.jpg\",\n \"location\": \"RPA8C4FwkbxRQJaXCmwPejGx4W1sKYjWn...\",\n \"createdAt\": \"2017-05-04T20:57:23.000+0000\",\n \"label\": {\n \"id\": 3235,\n \"datasetId\": 57,\n \"name\": \"Mountains\",\n \"numExamples\": 108\n },\n \"object\": \"example\"\n }", "language": "json" } ] } [/block]
The Einstein Image Classification API provides various features that let you optimize and retrain your model using feedback. Use these features to: - Add a misclassified image to a dataset with the correct label. - Get a list of images that were added as feedback to a dataset. - Create a model or update an existing model using feedback images. Let’s look at an example. Let’s say you have a model that classifies beaches and mountains. You send in an image, `alps.jpg`, to the model to get back a prediction. The model returns a response that contains a high probability that the image is a beach (in the Beaches class). However, you expect a response that contains a high probability that the image is a mountain (in the Mountains class). This means that the image was misclassified. ##Add Feedback to the Dataset## Use the feedback API to add a misclassified image with the correct label to the dataset from which the model was created. This cURL call adds `alps.jpg` as a new example to the dataset. The request parameter `"expectedLabel=Mountains"` specifies that the image is added to the correct class in the dataset. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=3CMCRC572BD3OZTQSTTUU4733Y\" -F \"data=@c:\\data\\alps.jpg\" -F \"expectedLabel=Mountains\" https://api.einstein.ai/v2/vision/feedback", "language": "curl" } ] } [/block] ##Get Feedback Examples## After you add feedback examples to a dataset, you can query the dataset and return just those examples that were added from the feedback API call. The API call to get dataset examples takes a `source` query parameter that lets you specify which examples to return from a dataset. See [Get All Examples](doc:get-all-examples). Valid values for this parameter are: - `all`—Return both upload and feedback examples. - `feedback`—Return examples that were created as feedback. - `upload`—Return examples that were created from uploading a .zip file. If you omit the `source` parameter, feedback examples aren't returned from this call. The `source` query parameter can be combined with the `offset` and `count` query parameters used for paging. This cURL call gets examples that were added as feedback from the specified dataset. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback", "language": "curl" } ] } [/block] The response returns all the examples that were added by calling the feedback API such as the file `alps.jpg`. [block:code] { "codes": [ { "code": "{\n \"id\": 618169,\n \"name\": \"alps.jpg\",\n \"location\": \"RPA8C4FwkbxRQJaXCmwPejGx4W1sKYjWn...\",\n \"createdAt\": \"2017-05-04T20:57:23.000+0000\",\n \"label\": {\n \"id\": 3235,\n \"datasetId\": 57,\n \"name\": \"Mountains\",\n \"numExamples\": 108\n },\n \"object\": \"example\"\n }", "language": "json" } ] } [/block]
{"_id":"590cf7eccc9d3c0f006444ab","__v":0,"excerpt":"After you add feedback images to the correct classes in the dataset, you retrain the dataset to incorporate the new data into the model.","title":"Update a Model with Feedback","version":"590a25abd47da32300b68bd5","sync_unique":"","type":"basic","api":{"url":"","results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[]},"body":"You have two options:\n\n- [Create a new model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-create-a-new-model)—Train the dataset using the feedback images and generate a new model. This method creates a model with a new model ID. \n\n- [Update an existing model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-update-an-existing-model)—Train the dataset using the feedback images and update an existing model. When you update a model it maintains the model ID, so if you’re using that model ID in production code, you don’t need to update it.\n\n##Create a New Model##\n\nTo create a model with the dataset feedback, you call the `/train` resource and pass in the dataset ID as you normally would, but you also pass in this request parameter:\n\n`\"trainParams\": {\"withFeedback\" : true}`\n\nThe `withFeedback` parameter specifies that the training operation use the feedback examples to create the model. This cURL call trains a dataset and uses the feedback examples.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=Beach Mountain Model With Feedback\\\" -F \\\"datasetId=57\\\" -F \\\"trainParams={\\\\\\\"withFeedback\\\\\\\" : true}\\\" https://api.einstein.ai/v2/vision/train\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThis command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Train a Dataset](doc:train-a-dataset).\n\nThe response looks as you would expect from any training call. The `trainParams` field shows that the training uses feedback examples.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 57,\\n  \\\"datasetVersionId\\\": 0,\\n  \\\"name\\\": \\\"Beach Mountain Model With Feedback\\\",\\n  \\\"status\\\": \\\"QUEUED\\\",\\n  \\\"progress\\\": 0,\\n  \\\"createdAt\\\": \\\"2017-05-08T18:09:24.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-05-08T18:09:24.000+0000\\\",\\n  \\\"learningRate\\\": 0.001,\\n  \\\"epochs\\\": 3,\\n  \\\"queuePosition\\\": 3,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"DWLKXLCOH7G7RSCCRM108RGOVE\\\",\\n  \\\"trainParams\\\": {\\n    \\\"withFeedback\\\": true\\n  },\\n  \\\"trainStats\\\": null,\\n  \\\"modelType\\\": \\\"image\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Update an Existing Model##\n\nIf you want to update an existing model with the feedback in the dataset and keep the model ID, you can call the `/retrain` resource and pass in this request parameter.\n\n`\"trainParams\": {\"withFeedback\" : true}`\n\nThis approach is useful when you have a model in production and you want to maintain the model ID. This cURL call trains the dataset associated with the specified model, uses the feedback examples, and updates the model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=DWLKXLCOH7G7RSCCRM108RGOVE\\\" -F \\\"trainParams={\\\\\\\"withFeedback\\\\\\\" : true}\\\" https://api.einstein.ai/v2/vision/retrain\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThis command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Retrain a Dataset](doc:retrain-a-dataset).\n\nThe response looks as you would expect from any training call. The only difference is that this response contains the same `modelId` that was passed in. The `trainParams` field shows that the retraining uses feedback examples.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 57,\\n  \\\"datasetVersionId\\\": 0,\\n  \\\"name\\\": \\\"Beach Mountain Model With Feedback\\\",\\n  \\\"status\\\": \\\"QUEUED\\\",\\n  \\\"progress\\\": 0,\\n  \\\"createdAt\\\": \\\"2017-05-08T18:09:24.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-05-08T18:09:24.000+0000\\\",\\n  \\\"learningRate\\\": 0.001,\\n  \\\"epochs\\\": 3,\\n  \\\"queuePosition\\\": 2,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"DWLKXLCOH7G7RSCCRM108RGOVE\\\",\\n  \\\"trainParams\\\": {\\n    \\\"withFeedback\\\": true\\n  },\\n  \\\"trainStats\\\": null,\\n  \\\"modelType\\\": \\\"image\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","githubsync":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","slug":"update-model-with-feedback","updates":[],"category":"590cf3d8ac8f3a1900065a81","hidden":false,"isReference":false,"order":1,"createdAt":"2017-05-05T22:08:44.695Z","link_external":false,"link_url":"","next":{"pages":[],"description":""},"user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

Update a Model with Feedback

After you add feedback images to the correct classes in the dataset, you retrain the dataset to incorporate the new data into the model.

You have two options: - [Create a new model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-create-a-new-model)—Train the dataset using the feedback images and generate a new model. This method creates a model with a new model ID. - [Update an existing model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-update-an-existing-model)—Train the dataset using the feedback images and update an existing model. When you update a model it maintains the model ID, so if you’re using that model ID in production code, you don’t need to update it. ##Create a New Model## To create a model with the dataset feedback, you call the `/train` resource and pass in the dataset ID as you normally would, but you also pass in this request parameter: `"trainParams": {"withFeedback" : true}` The `withFeedback` parameter specifies that the training operation use the feedback examples to create the model. This cURL call trains a dataset and uses the feedback examples. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach Mountain Model With Feedback\" -F \"datasetId=57\" -F \"trainParams={\\\"withFeedback\\\" : true}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] This command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Train a Dataset](doc:train-a-dataset). The response looks as you would expect from any training call. The `trainParams` field shows that the training uses feedback examples. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 57,\n \"datasetVersionId\": 0,\n \"name\": \"Beach Mountain Model With Feedback\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-05-08T18:09:24.000+0000\",\n \"updatedAt\": \"2017-05-08T18:09:24.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 3,\n \"object\": \"training\",\n \"modelId\": \"DWLKXLCOH7G7RSCCRM108RGOVE\",\n \"trainParams\": {\n \"withFeedback\": true\n },\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] ##Update an Existing Model## If you want to update an existing model with the feedback in the dataset and keep the model ID, you can call the `/retrain` resource and pass in this request parameter. `"trainParams": {"withFeedback" : true}` This approach is useful when you have a model in production and you want to maintain the model ID. This cURL call trains the dataset associated with the specified model, uses the feedback examples, and updates the model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=DWLKXLCOH7G7RSCCRM108RGOVE\" -F \"trainParams={\\\"withFeedback\\\" : true}\" https://api.einstein.ai/v2/vision/retrain", "language": "curl" } ] } [/block] This command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Retrain a Dataset](doc:retrain-a-dataset). The response looks as you would expect from any training call. The only difference is that this response contains the same `modelId` that was passed in. The `trainParams` field shows that the retraining uses feedback examples. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 57,\n \"datasetVersionId\": 0,\n \"name\": \"Beach Mountain Model With Feedback\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-05-08T18:09:24.000+0000\",\n \"updatedAt\": \"2017-05-08T18:09:24.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 2,\n \"object\": \"training\",\n \"modelId\": \"DWLKXLCOH7G7RSCCRM108RGOVE\",\n \"trainParams\": {\n \"withFeedback\": true\n },\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block]
You have two options: - [Create a new model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-create-a-new-model)—Train the dataset using the feedback images and generate a new model. This method creates a model with a new model ID. - [Update an existing model](https://metamind.readme.io/v2/docs/update-model-with-feedback#section-update-an-existing-model)—Train the dataset using the feedback images and update an existing model. When you update a model it maintains the model ID, so if you’re using that model ID in production code, you don’t need to update it. ##Create a New Model## To create a model with the dataset feedback, you call the `/train` resource and pass in the dataset ID as you normally would, but you also pass in this request parameter: `"trainParams": {"withFeedback" : true}` The `withFeedback` parameter specifies that the training operation use the feedback examples to create the model. This cURL call trains a dataset and uses the feedback examples. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach Mountain Model With Feedback\" -F \"datasetId=57\" -F \"trainParams={\\\"withFeedback\\\" : true}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] This command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Train a Dataset](doc:train-a-dataset). The response looks as you would expect from any training call. The `trainParams` field shows that the training uses feedback examples. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 57,\n \"datasetVersionId\": 0,\n \"name\": \"Beach Mountain Model With Feedback\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-05-08T18:09:24.000+0000\",\n \"updatedAt\": \"2017-05-08T18:09:24.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 3,\n \"object\": \"training\",\n \"modelId\": \"DWLKXLCOH7G7RSCCRM108RGOVE\",\n \"trainParams\": {\n \"withFeedback\": true\n },\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block] ##Update an Existing Model## If you want to update an existing model with the feedback in the dataset and keep the model ID, you can call the `/retrain` resource and pass in this request parameter. `"trainParams": {"withFeedback" : true}` This approach is useful when you have a model in production and you want to maintain the model ID. This cURL call trains the dataset associated with the specified model, uses the feedback examples, and updates the model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=DWLKXLCOH7G7RSCCRM108RGOVE\" -F \"trainParams={\\\"withFeedback\\\" : true}\" https://api.einstein.ai/v2/vision/retrain", "language": "curl" } ] } [/block] This command has double quotes and escaped double quotes around `withFeedback` to run on Windows. You might need to reformat it to run on another OS. For more information, see [Retrain a Dataset](doc:retrain-a-dataset). The response looks as you would expect from any training call. The only difference is that this response contains the same `modelId` that was passed in. The `trainParams` field shows that the retraining uses feedback examples. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 57,\n \"datasetVersionId\": 0,\n \"name\": \"Beach Mountain Model With Feedback\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-05-08T18:09:24.000+0000\",\n \"updatedAt\": \"2017-05-08T18:09:24.000+0000\",\n \"learningRate\": 0.001,\n \"epochs\": 3,\n \"queuePosition\": 2,\n \"object\": \"training\",\n \"modelId\": \"DWLKXLCOH7G7RSCCRM108RGOVE\",\n \"trainParams\": {\n \"withFeedback\": true\n },\n \"trainStats\": null,\n \"modelType\": \"image\"\n}", "language": "json" } ] } [/block]
{"_id":"590a25afd47da32300b68c0e","isReference":false,"link_url":"","order":0,"title":"Use the Prebuilt Models","__v":0,"body":"- [Food Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-food-image-model)\n- [General Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-general-image-model)\n- [Scene Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-scene-image-model)\n- [Multi-Label Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-multi-label-image-model)\n\n##Food Image Model##\nThis model is used to classify different foods and contains over 500 labels. You classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `FoodImageClassifier`. For the list of classes this model contains, see [Food Image Model Class List](page:food-image-model-class-list).\n\nThis cURL command makes a prediction against the food model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=http://einstein.ai/images/foodimage.jpg\\\" -F \\\"modelId=FoodImageClassifier\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe model returns a result similar to the following for the pizza image referenced by `http://einstein.ai/images/foodimage.jpg`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"pizza\\\",\\n      \\\"probability\\\": 0.4895147383213043\\n    },\\n    {\\n      \\\"label\\\": \\\"flatbread\\\",\\n      \\\"probability\\\": 0.30357491970062256\\n    },\\n    {\\n      \\\"label\\\": \\\"focaccia\\\",\\n      \\\"probability\\\": 0.10683325678110123\\n    },\\n    {\\n      \\\"label\\\": \\\"frittata\\\",\\n      \\\"probability\\\": 0.05281512811779976\\n    },\\n    {\\n      \\\"label\\\": \\\"pepperoni\\\",\\n      \\\"probability\\\": 0.029621008783578873\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##General Image Model##\nThis model is used to classify a variety of images and contains thousands of labels. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `GeneralImageClassifier`. For the list of classes this model contains, see [General Image Model Class List](page:general-image-model-class-list).\n\nThis cURL command makes a prediction against the general image model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=http://einstein.ai/images/generalimage.jpg\\\" -F \\\"modelId=GeneralImageClassifier\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe model returns a result similar to the following for the tree frog image referenced by `http://einstein.ai/images/generalimage.jpg`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"tree frog, tree-frog\\\",\\n      \\\"probability\\\": 0.7963114976882935\\n    },\\n    {\\n      \\\"label\\\": \\\"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui\\\",\\n      \\\"probability\\\": 0.1978749930858612\\n    },\\n    {\\n      \\\"label\\\": \\\"banded gecko\\\",\\n      \\\"probability\\\": 0.001511271228082478\\n    },\\n    {\\n      \\\"label\\\": \\\"African chameleon, Chamaeleo chamaeleon\\\",\\n      \\\"probability\\\": 0.0013212867779657245\\n    },\\n    {\\n      \\\"label\\\": \\\"bullfrog, Rana catesbeiana\\\",\\n      \\\"probability\\\": 0.0011536618694663048\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Scene Image Model##\nThis model is used to classify a variety of indoor and outdoor scenes. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `SceneClassifier`. For the list of classes this model contains, see [Scene Image Model Class List](page:scene-image-model-class-list).\n\nThis cURL command makes a prediction against the scene image model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=http://einstein.ai/images/gym.jpg\\\" -F \\\"modelId=SceneClassifier\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe model returns a result similar to the following for the image referenced by `http://einstein.ai/images/gym.jpg`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"Gym interior\\\",\\n      \\\"probability\\\": 0.996387\\n    },\\n    {\\n      \\\"label\\\": \\\"Airport terminal\\\",\\n      \\\"probability\\\": 0.0025247275\\n    },\\n    {\\n      \\\"label\\\": \\\"Office or Cubicles\\\",\\n      \\\"probability\\\": 0.00049142947\\n    },\\n    {\\n      \\\"label\\\": \\\"Bus or train interior\\\",\\n      \\\"probability\\\": 0.00019321487\\n    },\\n    {\\n      \\\"label\\\": \\\"Restaurant patio\\\",\\n      \\\"probability\\\": 0.000069430374\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Multi-Label Image Model##\n\nThis multi-label model is used to classify a variety of objects. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `MultiLabelImageClassifier`. For the list of classes this model contains, see [Multi-Label Image Model Class List](page:multi-label-image-model-class-list).\n\nThis cURL command sends in a local image and returns a prediction from the multi-label image model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleContent=@C:\\\\Data\\\\laptop_and_camera.jpg\\\" -F \\\"modelId=MultiLabelImageClassifier\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe model returns a result similar to the following JSON. This response is truncated. When you use this model, the response contains all the classes in the model. Multi-label models are used to detect multiple objects in an image, so you'll see the classes with the highest probability returned first.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"// Response is truncated for brevity. Multi-label models return all classes\\n// sorted by probability.\\n{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"laptop\\\",\\n      \\\"probability\\\": 0.96274024\\n    },\\n    {\\n      \\\"label\\\": \\\"camera\\\",\\n      \\\"probability\\\": 0.39719293\\n    },\\n    {\\n      \\\"label\\\": \\\"BACKGROUND_Google\\\",\\n      \\\"probability\\\": 0.2958626\\n    },\\n    {\\n      \\\"label\\\": \\\"cup\\\",\\n      \\\"probability\\\": 0.09132507\\n    },\\n    {\\n      \\\"label\\\": \\\"stapler\\\",\\n      \\\"probability\\\": 0.081633374\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n If you want to send in an image by using its URL, replace the `sampleContent` parameter with the `sampleLocation` parameter. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=https://www.einstein.ai/laptop_and_camera.jpg\\\" -F \\\"modelId=MultiLabelImageClassifier\\\" https://api.einstein.ai/v2/vision/predict\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]","excerpt":"Einstein Vision offers prebuilt models that you can use as long as you have a valid JWT token. These models are a good way to get started with the API because you can use them to work with and test the API without having to gather data and create your own model.","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"next":{"description":"","pages":[]},"project":"552d474ea86ee20d00780cd7","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bda","createdAt":"2016-09-30T20:15:45.871Z","githubsync":"","hidden":false,"link_external":false,"parentDoc":null,"slug":"use-pre-built-models","sync_unique":"","type":"basic","updates":[],"childrenPages":[]}

Use the Prebuilt Models

Einstein Vision offers prebuilt models that you can use as long as you have a valid JWT token. These models are a good way to get started with the API because you can use them to work with and test the API without having to gather data and create your own model.

- [Food Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-food-image-model) - [General Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-general-image-model) - [Scene Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-scene-image-model) - [Multi-Label Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-multi-label-image-model) ##Food Image Model## This model is used to classify different foods and contains over 500 labels. You classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `FoodImageClassifier`. For the list of classes this model contains, see [Food Image Model Class List](page:food-image-model-class-list). This cURL command makes a prediction against the food model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/foodimage.jpg\" -F \"modelId=FoodImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the pizza image referenced by `http://einstein.ai/images/foodimage.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"pizza\",\n \"probability\": 0.4895147383213043\n },\n {\n \"label\": \"flatbread\",\n \"probability\": 0.30357491970062256\n },\n {\n \"label\": \"focaccia\",\n \"probability\": 0.10683325678110123\n },\n {\n \"label\": \"frittata\",\n \"probability\": 0.05281512811779976\n },\n {\n \"label\": \"pepperoni\",\n \"probability\": 0.029621008783578873\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##General Image Model## This model is used to classify a variety of images and contains thousands of labels. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `GeneralImageClassifier`. For the list of classes this model contains, see [General Image Model Class List](page:general-image-model-class-list). This cURL command makes a prediction against the general image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/generalimage.jpg\" -F \"modelId=GeneralImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the tree frog image referenced by `http://einstein.ai/images/generalimage.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"tree frog, tree-frog\",\n \"probability\": 0.7963114976882935\n },\n {\n \"label\": \"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui\",\n \"probability\": 0.1978749930858612\n },\n {\n \"label\": \"banded gecko\",\n \"probability\": 0.001511271228082478\n },\n {\n \"label\": \"African chameleon, Chamaeleo chamaeleon\",\n \"probability\": 0.0013212867779657245\n },\n {\n \"label\": \"bullfrog, Rana catesbeiana\",\n \"probability\": 0.0011536618694663048\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##Scene Image Model## This model is used to classify a variety of indoor and outdoor scenes. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `SceneClassifier`. For the list of classes this model contains, see [Scene Image Model Class List](page:scene-image-model-class-list). This cURL command makes a prediction against the scene image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/gym.jpg\" -F \"modelId=SceneClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the image referenced by `http://einstein.ai/images/gym.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Gym interior\",\n \"probability\": 0.996387\n },\n {\n \"label\": \"Airport terminal\",\n \"probability\": 0.0025247275\n },\n {\n \"label\": \"Office or Cubicles\",\n \"probability\": 0.00049142947\n },\n {\n \"label\": \"Bus or train interior\",\n \"probability\": 0.00019321487\n },\n {\n \"label\": \"Restaurant patio\",\n \"probability\": 0.000069430374\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##Multi-Label Image Model## This multi-label model is used to classify a variety of objects. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `MultiLabelImageClassifier`. For the list of classes this model contains, see [Multi-Label Image Model Class List](page:multi-label-image-model-class-list). This cURL command sends in a local image and returns a prediction from the multi-label image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=@C:\\Data\\laptop_and_camera.jpg\" -F \"modelId=MultiLabelImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following JSON. This response is truncated. When you use this model, the response contains all the classes in the model. Multi-label models are used to detect multiple objects in an image, so you'll see the classes with the highest probability returned first. [block:code] { "codes": [ { "code": "// Response is truncated for brevity. Multi-label models return all classes\n// sorted by probability.\n{\n \"probabilities\": [\n {\n \"label\": \"laptop\",\n \"probability\": 0.96274024\n },\n {\n \"label\": \"camera\",\n \"probability\": 0.39719293\n },\n {\n \"label\": \"BACKGROUND_Google\",\n \"probability\": 0.2958626\n },\n {\n \"label\": \"cup\",\n \"probability\": 0.09132507\n },\n {\n \"label\": \"stapler\",\n \"probability\": 0.081633374\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] If you want to send in an image by using its URL, replace the `sampleContent` parameter with the `sampleLocation` parameter. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=https://www.einstein.ai/laptop_and_camera.jpg\" -F \"modelId=MultiLabelImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block]
- [Food Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-food-image-model) - [General Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-general-image-model) - [Scene Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-scene-image-model) - [Multi-Label Image Model](https://metamind.readme.io/docs/use-pre-built-models#section-multi-label-image-model) ##Food Image Model## This model is used to classify different foods and contains over 500 labels. You classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `FoodImageClassifier`. For the list of classes this model contains, see [Food Image Model Class List](page:food-image-model-class-list). This cURL command makes a prediction against the food model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/foodimage.jpg\" -F \"modelId=FoodImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the pizza image referenced by `http://einstein.ai/images/foodimage.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"pizza\",\n \"probability\": 0.4895147383213043\n },\n {\n \"label\": \"flatbread\",\n \"probability\": 0.30357491970062256\n },\n {\n \"label\": \"focaccia\",\n \"probability\": 0.10683325678110123\n },\n {\n \"label\": \"frittata\",\n \"probability\": 0.05281512811779976\n },\n {\n \"label\": \"pepperoni\",\n \"probability\": 0.029621008783578873\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##General Image Model## This model is used to classify a variety of images and contains thousands of labels. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `GeneralImageClassifier`. For the list of classes this model contains, see [General Image Model Class List](page:general-image-model-class-list). This cURL command makes a prediction against the general image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/generalimage.jpg\" -F \"modelId=GeneralImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the tree frog image referenced by `http://einstein.ai/images/generalimage.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"tree frog, tree-frog\",\n \"probability\": 0.7963114976882935\n },\n {\n \"label\": \"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui\",\n \"probability\": 0.1978749930858612\n },\n {\n \"label\": \"banded gecko\",\n \"probability\": 0.001511271228082478\n },\n {\n \"label\": \"African chameleon, Chamaeleo chamaeleon\",\n \"probability\": 0.0013212867779657245\n },\n {\n \"label\": \"bullfrog, Rana catesbeiana\",\n \"probability\": 0.0011536618694663048\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##Scene Image Model## This model is used to classify a variety of indoor and outdoor scenes. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `SceneClassifier`. For the list of classes this model contains, see [Scene Image Model Class List](page:scene-image-model-class-list). This cURL command makes a prediction against the scene image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://einstein.ai/images/gym.jpg\" -F \"modelId=SceneClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following for the image referenced by `http://einstein.ai/images/gym.jpg`. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Gym interior\",\n \"probability\": 0.996387\n },\n {\n \"label\": \"Airport terminal\",\n \"probability\": 0.0025247275\n },\n {\n \"label\": \"Office or Cubicles\",\n \"probability\": 0.00049142947\n },\n {\n \"label\": \"Bus or train interior\",\n \"probability\": 0.00019321487\n },\n {\n \"label\": \"Restaurant patio\",\n \"probability\": 0.000069430374\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] ##Multi-Label Image Model## This multi-label model is used to classify a variety of objects. You can classify an image against this model just as you would a custom model; but instead of using the `modelId` of the custom model, you specify a `modelId` of `MultiLabelImageClassifier`. For the list of classes this model contains, see [Multi-Label Image Model Class List](page:multi-label-image-model-class-list). This cURL command sends in a local image and returns a prediction from the multi-label image model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=@C:\\Data\\laptop_and_camera.jpg\" -F \"modelId=MultiLabelImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block] The model returns a result similar to the following JSON. This response is truncated. When you use this model, the response contains all the classes in the model. Multi-label models are used to detect multiple objects in an image, so you'll see the classes with the highest probability returned first. [block:code] { "codes": [ { "code": "// Response is truncated for brevity. Multi-label models return all classes\n// sorted by probability.\n{\n \"probabilities\": [\n {\n \"label\": \"laptop\",\n \"probability\": 0.96274024\n },\n {\n \"label\": \"camera\",\n \"probability\": 0.39719293\n },\n {\n \"label\": \"BACKGROUND_Google\",\n \"probability\": 0.2958626\n },\n {\n \"label\": \"cup\",\n \"probability\": 0.09132507\n },\n {\n \"label\": \"stapler\",\n \"probability\": 0.081633374\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] If you want to send in an image by using its URL, replace the `sampleContent` parameter with the `sampleLocation` parameter. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=https://www.einstein.ai/laptop_and_camera.jpg\" -F \"modelId=MultiLabelImageClassifier\" https://api.einstein.ai/v2/vision/predict", "language": "curl" } ] } [/block]
{"_id":"590a25aed47da32300b68bf3","githubsync":"","next":{"pages":[],"description":""},"updates":[],"excerpt":"A summary of the API calls you can make to programmatically work with datasets, labels, examples, models, and predictions.","hidden":false,"order":0,"slug":"predictive-vision-service-api","user":"573b5a1f37fcf72000a2e683","__v":0,"body":"##General API##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Method\",\n    \"h-1\": \"Call\",\n    \"0-0\": \"[Generate an OAuth Token](doc:generate-an-oauth-token)\",\n    \"0-1\": \"curl -H \\\"Content-type: application/x-www-form-urlencoded\\\" -X POST https://<span></span>api.einstein.ai/v2/oauth2/token -d \\\"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=**{ASSERTION_STRING}**\\\"\",\n    \"1-0\": \"[GET API Usage](doc:get-api-usage)\",\n    \"1-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/apiusage\"\n  },\n  \"cols\": 2,\n  \"rows\": 2\n}\n[/block]\n##Datasets##\n[block:parameters]\n{\n  \"data\": {\n    \"2-0\": \"[Create a Dataset](doc:create-a-dataset)\",\n    \"2-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=**{DATASET_NAME}**\\\" -F \\\"labels=**{LABEL1}**,**{LABEL2}**\\\" -F \\\"type=**{IMAGE_TYPE}**\\\" https://<span></span>api.einstein.ai/v2/vision/datasets\",\n    \"3-0\": \"[Get a Dataset](doc:get-a-dataset)\",\n    \"4-0\": \"[Get All Datasets](doc:get-all-datasets)\",\n    \"3-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**\",\n    \"4-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/datasets\",\n    \"h-0\": \"Method\",\n    \"h-1\": \"Call\",\n    \"0-0\": \"[Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async)\",\n    \"0-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"data=@**{PATH_TO}.zip**\\\" -F \\\"type=**{IMAGE_TYPE}**\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload\\n\\ncurl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"path=**{URL}.zip**\\\" -F \\\"type=**{IMAGE_TYPE}**\\\"  https://<span></span>api.einstein.ai/v2/vision/datasets/upload\",\n    \"1-0\": \"[Create a Dataset From a Zip File Synchronously](doc:create-a-dataset-zip-sync)\",\n    \"1-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"data=@**{PATH_TO}.zip**\\\" -F \\\"type=**{IMAGE_TYPE}**\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync\\n\\ncurl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"path=**{URL}.zip**\\\" -F \\\"type=**{IMAGE_TYPE}**\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync\",\n    \"5-0\": \"[Delete a Dataset](doc:delete-a-dataset)\",\n    \"5-1\": \"curl -X DELETE -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**\"\n  },\n  \"cols\": 2,\n  \"rows\": 6\n}\n[/block]\n##Examples##\n[block:parameters]\n{\n  \"data\": {\n    \"1-0\": \"[Create an Example](doc:create-an-example)\",\n    \"1-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=**{EXAMPLE_NAME}**\\\" -F \\\"labelId=**{LABEL_ID}**\\\" -F \\\"data=@**{DIRECTORY/IMAGE_FILE}**\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATASET_ID}**/examples\",\n    \"3-0\": \"[Get All Examples](doc:get-all-examples)\",\n    \"3-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/examples\",\n    \"h-0\": \"Method\",\n    \"h-1\": \"Call\",\n    \"0-0\": \"[Create Examples from Zip File](doc:create-examples-from-zip)\",\n    \"0-1\": \"curl -X PUT -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"data=@**{PATH_TO}.zip**\\\"  https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload\\n\\ncurl -X PUT -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"path=**{URL}.zip**\\\"  https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload\",\n    \"2-0\": \"[Create a Feedback Example](doc:create-a-feedback-example)\",\n    \"2-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=**{MODEL_ID}**\\\" \\\"data=@**{DIRECTORY/IMAGE_FILE}**\\\"  -F \\\"expectedLabel=**{LABEL_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/feedback\"\n  },\n  \"cols\": 2,\n  \"rows\": 4\n}\n[/block]\n##Training and Models##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"[Train a Dataset](doc:train-a-dataset)\",\n    \"2-0\": \"[Get Training Status](doc:get-training-status)\",\n    \"3-0\": \"[Get Image Model Metrics](doc:get-model-metrics)\\n\\n[Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics)\",\n    \"5-0\": \"[Get All Models](doc:get-all-models)\",\n    \"0-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=**{MODEL_NAME}**\\\" -F \\\"datasetId=**{DATASET_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/train\",\n    \"2-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/train/**{MODEL_ID}**\",\n    \"3-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**\",\n    \"5-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/models\",\n    \"h-0\": \"Method\",\n    \"h-1\": \"Call\",\n    \"4-0\": \"[Get Model Learning Curve](doc:get-model-learning-curve)\\n\\n[Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve)\",\n    \"4-1\": \"curl -X GET -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**/lc\",\n    \"1-0\": \"[Retrain a Dataset](doc:retrain-a-dataset)\",\n    \"1-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=**{MODEL_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/retrain\"\n  },\n  \"cols\": 2,\n  \"rows\": 6\n}\n[/block]\n##Predictions##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"[Prediction with Image Base64 String](doc:prediction-with-image-base64-string)\",\n    \"1-0\": \"[Prediction with Image File](doc:prediction-with-image-file)\",\n    \"2-0\": \"[Prediction with Image URL](doc:prediction-with-image-url)\",\n    \"0-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleBase64Content=**{BASE64_STRING}**\\\" -F \\\"modelId=**{MODEL_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/predict\",\n    \"1-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleContent=**{DIRECTORY/IMAGE_FILE}**\\\" -F \\\"modelId=**{MODEL_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/predict\",\n    \"2-1\": \"curl -X POST -H \\\"Authorization: Bearer **{TOKEN}**\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"sampleLocation=**{IMAGE_URL}**\\\" -F \\\"modelId=**{MODEL_ID}**\\\" https://<span></span>api.einstein.ai/v2/vision/predict\"\n  },\n  \"cols\": 2,\n  \"rows\": 3\n}\n[/block]","isReference":true,"link_url":"","project":"552d474ea86ee20d00780cd7","type":"basic","api":{"params":[],"url":"","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required"},"createdAt":"2016-12-12T19:25:01.689Z","link_external":false,"parentDoc":null,"sync_unique":"","title":"Einstein Vision API","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bdb","childrenPages":[]}

Einstein Vision API

A summary of the API calls you can make to programmatically work with datasets, labels, examples, models, and predictions.

##General API## [block:parameters] { "data": { "h-0": "Method", "h-1": "Call", "0-0": "[Generate an OAuth Token](doc:generate-an-oauth-token)", "0-1": "curl -H \"Content-type: application/x-www-form-urlencoded\" -X POST https://<span></span>api.einstein.ai/v2/oauth2/token -d \"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=**{ASSERTION_STRING}**\"", "1-0": "[GET API Usage](doc:get-api-usage)", "1-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/apiusage" }, "cols": 2, "rows": 2 } [/block] ##Datasets## [block:parameters] { "data": { "2-0": "[Create a Dataset](doc:create-a-dataset)", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{DATASET_NAME}**\" -F \"labels=**{LABEL1}**,**{LABEL2}**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets", "3-0": "[Get a Dataset](doc:get-a-dataset)", "4-0": "[Get All Datasets](doc:get-all-datasets)", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**", "4-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets", "h-0": "Method", "h-1": "Call", "0-0": "[Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload\n\ncurl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload", "1-0": "[Create a Dataset From a Zip File Synchronously](doc:create-a-dataset-zip-sync)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync\n\ncurl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync", "5-0": "[Delete a Dataset](doc:delete-a-dataset)", "5-1": "curl -X DELETE -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**" }, "cols": 2, "rows": 6 } [/block] ##Examples## [block:parameters] { "data": { "1-0": "[Create an Example](doc:create-an-example)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{EXAMPLE_NAME}**\" -F \"labelId=**{LABEL_ID}**\" -F \"data=@**{DIRECTORY/IMAGE_FILE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATASET_ID}**/examples", "3-0": "[Get All Examples](doc:get-all-examples)", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/examples", "h-0": "Method", "h-1": "Call", "0-0": "[Create Examples from Zip File](doc:create-examples-from-zip)", "0-1": "curl -X PUT -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload\n\ncurl -X PUT -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload", "2-0": "[Create a Feedback Example](doc:create-a-feedback-example)", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=**{MODEL_ID}**\" \"data=@**{DIRECTORY/IMAGE_FILE}**\" -F \"expectedLabel=**{LABEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/feedback" }, "cols": 2, "rows": 4 } [/block] ##Training and Models## [block:parameters] { "data": { "0-0": "[Train a Dataset](doc:train-a-dataset)", "2-0": "[Get Training Status](doc:get-training-status)", "3-0": "[Get Image Model Metrics](doc:get-model-metrics)\n\n[Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics)", "5-0": "[Get All Models](doc:get-all-models)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{MODEL_NAME}**\" -F \"datasetId=**{DATASET_ID}**\" https://<span></span>api.einstein.ai/v2/vision/train", "2-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/train/**{MODEL_ID}**", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**", "5-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/models", "h-0": "Method", "h-1": "Call", "4-0": "[Get Model Learning Curve](doc:get-model-learning-curve)\n\n[Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve)", "4-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**/lc", "1-0": "[Retrain a Dataset](doc:retrain-a-dataset)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/retrain" }, "cols": 2, "rows": 6 } [/block] ##Predictions## [block:parameters] { "data": { "0-0": "[Prediction with Image Base64 String](doc:prediction-with-image-base64-string)", "1-0": "[Prediction with Image File](doc:prediction-with-image-file)", "2-0": "[Prediction with Image URL](doc:prediction-with-image-url)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleBase64Content=**{BASE64_STRING}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=**{DIRECTORY/IMAGE_FILE}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=**{IMAGE_URL}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict" }, "cols": 2, "rows": 3 } [/block]
##General API## [block:parameters] { "data": { "h-0": "Method", "h-1": "Call", "0-0": "[Generate an OAuth Token](doc:generate-an-oauth-token)", "0-1": "curl -H \"Content-type: application/x-www-form-urlencoded\" -X POST https://<span></span>api.einstein.ai/v2/oauth2/token -d \"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=**{ASSERTION_STRING}**\"", "1-0": "[GET API Usage](doc:get-api-usage)", "1-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/apiusage" }, "cols": 2, "rows": 2 } [/block] ##Datasets## [block:parameters] { "data": { "2-0": "[Create a Dataset](doc:create-a-dataset)", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{DATASET_NAME}**\" -F \"labels=**{LABEL1}**,**{LABEL2}**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets", "3-0": "[Get a Dataset](doc:get-a-dataset)", "4-0": "[Get All Datasets](doc:get-all-datasets)", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**", "4-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets", "h-0": "Method", "h-1": "Call", "0-0": "[Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload\n\ncurl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload", "1-0": "[Create a Dataset From a Zip File Synchronously](doc:create-a-dataset-zip-sync)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync\n\ncurl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" -F \"type=**{IMAGE_TYPE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/upload/sync", "5-0": "[Delete a Dataset](doc:delete-a-dataset)", "5-1": "curl -X DELETE -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**" }, "cols": 2, "rows": 6 } [/block] ##Examples## [block:parameters] { "data": { "1-0": "[Create an Example](doc:create-an-example)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{EXAMPLE_NAME}**\" -F \"labelId=**{LABEL_ID}**\" -F \"data=@**{DIRECTORY/IMAGE_FILE}**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATASET_ID}**/examples", "3-0": "[Get All Examples](doc:get-all-examples)", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/examples", "h-0": "Method", "h-1": "Call", "0-0": "[Create Examples from Zip File](doc:create-examples-from-zip)", "0-1": "curl -X PUT -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@**{PATH_TO}.zip**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload\n\ncurl -X PUT -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=**{URL}.zip**\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/upload", "2-0": "[Create a Feedback Example](doc:create-a-feedback-example)", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=**{MODEL_ID}**\" \"data=@**{DIRECTORY/IMAGE_FILE}**\" -F \"expectedLabel=**{LABEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/feedback" }, "cols": 2, "rows": 4 } [/block] ##Training and Models## [block:parameters] { "data": { "0-0": "[Train a Dataset](doc:train-a-dataset)", "2-0": "[Get Training Status](doc:get-training-status)", "3-0": "[Get Image Model Metrics](doc:get-model-metrics)\n\n[Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics)", "5-0": "[Get All Models](doc:get-all-models)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=**{MODEL_NAME}**\" -F \"datasetId=**{DATASET_ID}**\" https://<span></span>api.einstein.ai/v2/vision/train", "2-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/train/**{MODEL_ID}**", "3-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**", "5-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/datasets/**{DATSET_ID}**/models", "h-0": "Method", "h-1": "Call", "4-0": "[Get Model Learning Curve](doc:get-model-learning-curve)\n\n[Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve)", "4-1": "curl -X GET -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" https://<span></span>api.einstein.ai/v2/vision/models/**{MODEL_ID}**/lc", "1-0": "[Retrain a Dataset](doc:retrain-a-dataset)", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/retrain" }, "cols": 2, "rows": 6 } [/block] ##Predictions## [block:parameters] { "data": { "0-0": "[Prediction with Image Base64 String](doc:prediction-with-image-base64-string)", "1-0": "[Prediction with Image File](doc:prediction-with-image-file)", "2-0": "[Prediction with Image URL](doc:prediction-with-image-url)", "0-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleBase64Content=**{BASE64_STRING}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict", "1-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleContent=**{DIRECTORY/IMAGE_FILE}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict", "2-1": "curl -X POST -H \"Authorization: Bearer **{TOKEN}**\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=**{IMAGE_URL}**\" -F \"modelId=**{MODEL_ID}**\" https://<span></span>api.einstein.ai/v2/vision/predict" }, "cols": 2, "rows": 3 } [/block]
{"_id":"590a25aed47da32300b68c09","type":"post","api":{"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"access_token\": \"c3d95b4bf17108680b7495d069912127d7e3cbb9\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 9999902\n}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"/oauth2/token","auth":"required","examples":{"codes":[{"code":"curl -H \"Content-type: application/x-www-form-urlencoded\" -X POST https://api.einstein.ai/v2/oauth2/token -d \"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<ASSERTION_STRING>\"","language":"curl"}]}},"createdAt":"2017-01-20T18:41:53.835Z","hidden":false,"isReference":true,"link_external":false,"parentDoc":null,"project":"552d474ea86ee20d00780cd7","title":"Generate an OAuth Token","__v":0,"body":"You must pass an assertion into this API call, so you first need to create a JWT payload and sign it with your private key to generate an assertion. To generate an assertion:\n\n1. Create the JWT payload. The payload is JSON that contains:\n\n - `sub`—Your email address. This is your email address contained in the Salesforce org you used to sign up for an Einstein Platform account.\n\n - `aud`—The API endpoint URL for generating a token.\n\n - `exp`—The expiration time in Unix time. This value is the current Unix time in seconds plus the number of seconds you want the token to be valid.\n\n  The JWT payload JSON looks like this.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"sub\\\": \\\"<EMAIL_ADDRESS>\\\",\\n  \\\"aud\\\": \\\"https://api.einstein.ai/v2/oauth2/token\\\",\\n  \\\"exp\\\": \\\"<EXPIRATION_SECONDS_IN_UNIX_TIME>\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n2. Sign the JWT payload with your RSA private key to generate an assertion. The private key is contained in the `predictive_services.pem` file you downloaded when you signed up for an account. The code to generate the assertion varies depending on your programming language. \n\n3. Call the API and pass in the assertion. You pass in all the necessary data in the `-d` parameter. Replace `<ASSERTION_STRING>` with the assertion you just generated.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -H \\\"Content-type: application/x-www-form-urlencoded\\\" -X POST https://api.einstein.ai/v2/oauth2/token -d \\\"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<ASSERTION_STRING>\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`access_token`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Token value for authorization.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`token_type`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Type of token returned. Always `Bearer`.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`expires_in`\",\n    \"2-1\": \"integer\",\n    \"2-3\": \"1.0\",\n    \"2-2\": \"Number of seconds that the token will expire from the time it was generated.\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]","githubsync":"","next":{"pages":[],"description":""},"order":1,"excerpt":"Returns an OAuth token to access the API. You must pass a valid token in the header of each API call.","slug":"generate-an-oauth-token","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bdb","link_url":"","sync_unique":"","updates":[],"user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

postGenerate an OAuth Token

Returns an OAuth token to access the API. You must pass a valid token in the header of each API call.

You must pass an assertion into this API call, so you first need to create a JWT payload and sign it with your private key to generate an assertion. To generate an assertion: 1. Create the JWT payload. The payload is JSON that contains: - `sub`—Your email address. This is your email address contained in the Salesforce org you used to sign up for an Einstein Platform account. - `aud`—The API endpoint URL for generating a token. - `exp`—The expiration time in Unix time. This value is the current Unix time in seconds plus the number of seconds you want the token to be valid. The JWT payload JSON looks like this. [block:code] { "codes": [ { "code": "{\n \"sub\": \"<EMAIL_ADDRESS>\",\n \"aud\": \"https://api.einstein.ai/v2/oauth2/token\",\n \"exp\": \"<EXPIRATION_SECONDS_IN_UNIX_TIME>\"\n}", "language": "json" } ] } [/block] 2. Sign the JWT payload with your RSA private key to generate an assertion. The private key is contained in the `predictive_services.pem` file you downloaded when you signed up for an account. The code to generate the assertion varies depending on your programming language. 3. Call the API and pass in the assertion. You pass in all the necessary data in the `-d` parameter. Replace `<ASSERTION_STRING>` with the assertion you just generated. [block:code] { "codes": [ { "code": "curl -H \"Content-type: application/x-www-form-urlencoded\" -X POST https://api.einstein.ai/v2/oauth2/token -d \"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<ASSERTION_STRING>\"", "language": "curl" } ] } [/block] ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`access_token`", "0-1": "string", "0-2": "Token value for authorization.", "0-3": "1.0", "1-0": "`token_type`", "1-1": "string", "1-2": "Type of token returned. Always `Bearer`.", "1-3": "1.0", "2-0": "`expires_in`", "2-1": "integer", "2-3": "1.0", "2-2": "Number of seconds that the token will expire from the time it was generated." }, "cols": 4, "rows": 3 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



You must pass an assertion into this API call, so you first need to create a JWT payload and sign it with your private key to generate an assertion. To generate an assertion: 1. Create the JWT payload. The payload is JSON that contains: - `sub`—Your email address. This is your email address contained in the Salesforce org you used to sign up for an Einstein Platform account. - `aud`—The API endpoint URL for generating a token. - `exp`—The expiration time in Unix time. This value is the current Unix time in seconds plus the number of seconds you want the token to be valid. The JWT payload JSON looks like this. [block:code] { "codes": [ { "code": "{\n \"sub\": \"<EMAIL_ADDRESS>\",\n \"aud\": \"https://api.einstein.ai/v2/oauth2/token\",\n \"exp\": \"<EXPIRATION_SECONDS_IN_UNIX_TIME>\"\n}", "language": "json" } ] } [/block] 2. Sign the JWT payload with your RSA private key to generate an assertion. The private key is contained in the `predictive_services.pem` file you downloaded when you signed up for an account. The code to generate the assertion varies depending on your programming language. 3. Call the API and pass in the assertion. You pass in all the necessary data in the `-d` parameter. Replace `<ASSERTION_STRING>` with the assertion you just generated. [block:code] { "codes": [ { "code": "curl -H \"Content-type: application/x-www-form-urlencoded\" -X POST https://api.einstein.ai/v2/oauth2/token -d \"grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<ASSERTION_STRING>\"", "language": "curl" } ] } [/block] ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`access_token`", "0-1": "string", "0-2": "Token value for authorization.", "0-3": "1.0", "1-0": "`token_type`", "1-1": "string", "1-2": "Type of token returned. Always `Bearer`.", "1-3": "1.0", "2-0": "`expires_in`", "2-1": "integer", "2-3": "1.0", "2-2": "Number of seconds that the token will expire from the time it was generated." }, "cols": 4, "rows": 3 } [/block]
{"_id":"590a25aed47da32300b68c0a","type":"get","updates":[],"user":"573b5a1f37fcf72000a2e683","__v":0,"link_external":false,"parentDoc":null,"title":"Get API Usage","sync_unique":"","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bdb","createdAt":"2017-03-20T20:47:46.958Z","githubsync":"","slug":"get-api-usage","excerpt":"Returns prediction usage on a monthly basis for the current calendar month and future months. Each `apiusage` object in the response corresponds to a calendar month in your plan. For more information about plans, see [Rate Limits](doc:rate-limits).","hidden":false,"link_url":"","next":{"pages":[],"description":""},"order":2,"project":"552d474ea86ee20d00780cd7","api":{"settings":"","url":"/apiusage","auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/apiusage"}]},"method":"get","params":[],"results":{"codes":[{"name":"","code":"{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"489\",\n      \"organizationId\": \"108\",\n      \"startsAt\": \"2017-03-01T00:00:00.000Z\",\n      \"endsAt\": \"2017-04-01T00:00:00.000Z\",\n      \"planData\": [\n        {\n          \"plan\": \"FREE\",\n          \"amount\": 1,\n          \"source\": \"HEROKU\"\n        }\n      ],\n      \"licenseId\": \"kJCHtYDCSf\",\n      \"object\": \"apiusage\",\n      \"predictionsRemaining\": 997,\n      \"predictionsUsed\": 3,\n      \"predictionsMax\": 1000\n    }\n  ]\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"1-0\": \"`object`\",\n    \"1-2\": \"Object returned; in this case, `list`.\",\n    \"1-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Array of `apiusage` objects.\",\n    \"0-1\": \"object\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Apiusage Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"Unique ID for the API usage plan month.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`licenseId`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Unique ID of the API plan.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`object`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Object returned; in this case, `apiusage`.\",\n    \"3-3\": \"1.0\",\n    \"8-0\": \"`startsAt`\",\n    \"8-1\": \"date\",\n    \"8-2\": \"Date and time that the plan calendar month begins. Always the first of the month.\",\n    \"8-3\": \"1.0\",\n    \"0-0\": \"`endsAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the plan calendar month ends. Always 12 am on the first day of the following month.\",\n    \"4-0\": \"`organizationId`\",\n    \"4-2\": \"Unique ID for the user making the API call.\",\n    \"5-0\": \"`predictionsMax`\",\n    \"5-2\": \"Total number of predictions for the calendar month.\",\n    \"5-3\": \"1.0\",\n    \"6-0\": \"`predictionsRemaining`\",\n    \"6-2\": \"Number of predictions left for the calendar month.\",\n    \"6-3\": \"1.0\",\n    \"7-0\": \"`predictionsUsed`\",\n    \"7-2\": \"Number of predictions used in the calendar month. A prediction is any call to the `/predict` resource.\",\n    \"7-3\": \"1.0\",\n    \"0-3\": \"1.0\",\n    \"4-3\": \"1.0\",\n    \"4-1\": \"long\",\n    \"5-1\": \"long\",\n    \"6-1\": \"long\",\n    \"7-1\": \"long\"\n  },\n  \"cols\": 4,\n  \"rows\": 9\n}\n[/block]\n##Plandata Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`amount`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Number of plans of the specified type.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`plan`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Type of plan based on the `source`. Valid values:\\n- `HEROKU`\\n - `STARTER`—1,000 predictions per calendar month.\\n - `BRONZE`—10,000 predictions per calendar month.\\n - `SILVER`—250,000 predictions per calendar month.\\n - `GOLD`—One million predictions per calendar month.\\n\\n\\n- `SALESFORCE`\\n - `STARTER`—1,000 predictions per calendar month.\\n - `SFDC_1M_EDITION`—One million predictions per calendar month.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`source`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Service that provisioned the plan. Valid values:\\n- `HEROKU`\\n- `SALESFORCE`\",\n    \"2-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\nEach `apiusage` object in the response contains plan information for a single calendar month for a single license. If you have a six-month paid plan and you make this call on the first month, the response contains six `apiusage` objects; one for each calendar month in the plan.\n\n- If you're using the free tier, the response contains plan information only for the current month. You see plan information only after you make your first prediction. If you call the `/apiusage` resource before you make your first prediction call, the API returns an empty array.\n- If you're using the paid tier, the response contains plan information for each month in your plan starting with the current month.\n\nThe `planData` array contains an object for each plan type associated with the calendar month and the license. This code snippet shows the `planData` if the user has two Heroku GOLD plans.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"planData\\\": [\\n       {\\n         \\\"plan\\\": \\\"GOLD\\\",\\n         \\\"amount\\\": 2,\\n         \\\"source\\\": \\\"HEROKU\\\"\\n       }\\n     ]\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","isReference":true,"childrenPages":[]}

getGet API Usage

Returns prediction usage on a monthly basis for the current calendar month and future months. Each `apiusage` object in the response corresponds to a calendar month in your plan. For more information about plans, see [Rate Limits](doc:rate-limits).

##Response Body## [block:parameters] { "data": { "0-0": "`data`", "1-0": "`object`", "1-2": "Object returned; in this case, `list`.", "1-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Array of `apiusage` objects.", "0-1": "object", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Apiusage Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "Unique ID for the API usage plan month.", "1-3": "1.0", "2-0": "`licenseId`", "2-1": "string", "2-2": "Unique ID of the API plan.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `apiusage`.", "3-3": "1.0", "8-0": "`startsAt`", "8-1": "date", "8-2": "Date and time that the plan calendar month begins. Always the first of the month.", "8-3": "1.0", "0-0": "`endsAt`", "0-1": "date", "0-2": "Date and time that the plan calendar month ends. Always 12 am on the first day of the following month.", "4-0": "`organizationId`", "4-2": "Unique ID for the user making the API call.", "5-0": "`predictionsMax`", "5-2": "Total number of predictions for the calendar month.", "5-3": "1.0", "6-0": "`predictionsRemaining`", "6-2": "Number of predictions left for the calendar month.", "6-3": "1.0", "7-0": "`predictionsUsed`", "7-2": "Number of predictions used in the calendar month. A prediction is any call to the `/predict` resource.", "7-3": "1.0", "0-3": "1.0", "4-3": "1.0", "4-1": "long", "5-1": "long", "6-1": "long", "7-1": "long" }, "cols": 4, "rows": 9 } [/block] ##Plandata Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`amount`", "0-1": "string", "0-2": "Number of plans of the specified type.", "0-3": "1.0", "1-0": "`plan`", "1-1": "string", "1-2": "Type of plan based on the `source`. Valid values:\n- `HEROKU`\n - `STARTER`—1,000 predictions per calendar month.\n - `BRONZE`—10,000 predictions per calendar month.\n - `SILVER`—250,000 predictions per calendar month.\n - `GOLD`—One million predictions per calendar month.\n\n\n- `SALESFORCE`\n - `STARTER`—1,000 predictions per calendar month.\n - `SFDC_1M_EDITION`—One million predictions per calendar month.", "1-3": "1.0", "2-0": "`source`", "2-1": "string", "2-2": "Service that provisioned the plan. Valid values:\n- `HEROKU`\n- `SALESFORCE`", "2-3": "1.0" }, "cols": 4, "rows": 3 } [/block] Each `apiusage` object in the response contains plan information for a single calendar month for a single license. If you have a six-month paid plan and you make this call on the first month, the response contains six `apiusage` objects; one for each calendar month in the plan. - If you're using the free tier, the response contains plan information only for the current month. You see plan information only after you make your first prediction. If you call the `/apiusage` resource before you make your first prediction call, the API returns an empty array. - If you're using the paid tier, the response contains plan information for each month in your plan starting with the current month. The `planData` array contains an object for each plan type associated with the calendar month and the license. This code snippet shows the `planData` if the user has two Heroku GOLD plans. [block:code] { "codes": [ { "code": "\"planData\": [\n {\n \"plan\": \"GOLD\",\n \"amount\": 2,\n \"source\": \"HEROKU\"\n }\n ]", "language": "json" } ] } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "0-0": "`data`", "1-0": "`object`", "1-2": "Object returned; in this case, `list`.", "1-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Array of `apiusage` objects.", "0-1": "object", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Apiusage Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "Unique ID for the API usage plan month.", "1-3": "1.0", "2-0": "`licenseId`", "2-1": "string", "2-2": "Unique ID of the API plan.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `apiusage`.", "3-3": "1.0", "8-0": "`startsAt`", "8-1": "date", "8-2": "Date and time that the plan calendar month begins. Always the first of the month.", "8-3": "1.0", "0-0": "`endsAt`", "0-1": "date", "0-2": "Date and time that the plan calendar month ends. Always 12 am on the first day of the following month.", "4-0": "`organizationId`", "4-2": "Unique ID for the user making the API call.", "5-0": "`predictionsMax`", "5-2": "Total number of predictions for the calendar month.", "5-3": "1.0", "6-0": "`predictionsRemaining`", "6-2": "Number of predictions left for the calendar month.", "6-3": "1.0", "7-0": "`predictionsUsed`", "7-2": "Number of predictions used in the calendar month. A prediction is any call to the `/predict` resource.", "7-3": "1.0", "0-3": "1.0", "4-3": "1.0", "4-1": "long", "5-1": "long", "6-1": "long", "7-1": "long" }, "cols": 4, "rows": 9 } [/block] ##Plandata Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`amount`", "0-1": "string", "0-2": "Number of plans of the specified type.", "0-3": "1.0", "1-0": "`plan`", "1-1": "string", "1-2": "Type of plan based on the `source`. Valid values:\n- `HEROKU`\n - `STARTER`—1,000 predictions per calendar month.\n - `BRONZE`—10,000 predictions per calendar month.\n - `SILVER`—250,000 predictions per calendar month.\n - `GOLD`—One million predictions per calendar month.\n\n\n- `SALESFORCE`\n - `STARTER`—1,000 predictions per calendar month.\n - `SFDC_1M_EDITION`—One million predictions per calendar month.", "1-3": "1.0", "2-0": "`source`", "2-1": "string", "2-2": "Service that provisioned the plan. Valid values:\n- `HEROKU`\n- `SALESFORCE`", "2-3": "1.0" }, "cols": 4, "rows": 3 } [/block] Each `apiusage` object in the response contains plan information for a single calendar month for a single license. If you have a six-month paid plan and you make this call on the first month, the response contains six `apiusage` objects; one for each calendar month in the plan. - If you're using the free tier, the response contains plan information only for the current month. You see plan information only after you make your first prediction. If you call the `/apiusage` resource before you make your first prediction call, the API returns an empty array. - If you're using the paid tier, the response contains plan information for each month in your plan starting with the current month. The `planData` array contains an object for each plan type associated with the calendar month and the license. This code snippet shows the `planData` if the user has two Heroku GOLD plans. [block:code] { "codes": [ { "code": "\"planData\": [\n {\n \"plan\": \"GOLD\",\n \"amount\": 2,\n \"source\": \"HEROKU\"\n }\n ]", "language": "json" } ] } [/block]
{"_id":"590a25aed47da32300b68c0b","__v":0,"api":{"url":"","results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","auth":"required","params":[]},"hidden":false,"link_external":false,"parentDoc":null,"version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bdb","githubsync":"","project":"552d474ea86ee20d00780cd7","updates":[],"body":"Known errors are returned in the response body in this format.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"message\\\": \\\"Invalid authentication scheme\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##All##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"HTTP Code\",\n    \"h-1\": \"HTTP Message\",\n    \"h-2\": \"API Message\",\n    \"0-0\": \"401\",\n    \"0-1\": \"Unauthorized\",\n    \"0-2\": \"Invalid access token\",\n    \"0-3\": \"Any\",\n    \"0-4\": \"The access token is expired.\",\n    \"h-3\": \"Resource\",\n    \"h-4\": \"Possible Causes\",\n    \"1-0\": \"401\",\n    \"1-1\": \"Unauthorized\",\n    \"1-2\": \"Invalid authentication scheme\",\n    \"1-3\": \"Any\",\n    \"1-4\": \"An `Authorization` header was provided, but the token isn't properly formatted.\",\n    \"2-0\": \"5XX\",\n    \"2-1\": \"- Internal server error \\n- Service unavailable\",\n    \"2-2\": \"None\",\n    \"2-3\": \"Any\",\n    \"2-4\": \"Our systems encountered and logged an unexpected error. Please contact us if you continue to see the error.\"\n  },\n  \"cols\": 5,\n  \"rows\": 3\n}\n[/block]\n##Datasets##\nError codes that can occur when you access datasets, labels, or examples.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"HTTP Code\",\n    \"h-1\": \"HTTP Message\",\n    \"h-2\": \"API Message\",\n    \"h-3\": \"Resource\",\n    \"h-4\": \"Possible Causes\",\n    \"0-0\": \"400\",\n    \"0-1\": \"Bad Request\",\n    \"0-4\": \"The request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.\",\n    \"1-0\": \"400\",\n    \"1-1\": \"Bad Request\",\n    \"1-2\": \"The 'name' parameter is required to create a dataset.\",\n    \"1-3\": \"POST \\n`/vision/datasets`\",\n    \"1-4\": \"The `name` parameter was passed in, but no value was provided.\",\n    \"0-2\": \"None\",\n    \"2-0\": \"400\",\n    \"2-1\": \"Bad Request\",\n    \"2-2\": \"Uploading a dataset requires either the 'data' field or the 'path' field.\",\n    \"2-3\": \"POST\\n`/vision/datasets/upload`\",\n    \"2-4\": \"The path to the local .zip file or the URL to the .zip file in the cloud wasn’t specified.\",\n    \"3-0\": \"400\",\n    \"3-1\": \"Bad Request\",\n    \"3-2\": \"The 'data' parameter cannot be duplicated, nor sent along with the 'path' parameter.\",\n    \"3-3\": \"POST \\n`/vision/datasets/upload`\",\n    \"3-4\": \"Both the `path` and `data` parameters were passed to the call; only one of these parameters can be passed.\",\n    \"4-0\": \"400\",\n    \"4-1\": \"Bad Request\",\n    \"4-2\": \"The dataset is not yet available for update, try again once the dataset is ready.\",\n    \"4-3\": \"PUT \\n`/vision/datasets/<DATASET_ID>/upload`\",\n    \"4-4\": \"You’re adding examples to a dataset that’s currently being created. You must wait for dataset to become available before you can add examples to it.\",\n    \"6-0\": \"400\",\n    \"6-1\": \"Bad Request\",\n    \"6-2\": \"Example max size supported is 1024000\",\n    \"6-3\": \"POST \\n`/vision/datasets/<DATASET_ID>/examples`\",\n    \"6-4\": \"The image file being added as an example exceeds the maximum file size of 1 MB.\",\n    \"7-0\": \"404\",\n    \"7-1\": \"Not Found\",\n    \"7-4\": \"The requested REST resource doesn’t exist or you don't have permission to access the resource.\",\n    \"0-3\": \"Any dataset, label, or example resources.\",\n    \"7-2\": \"None\",\n    \"7-3\": \"Any dataset, label, or example resources.\",\n    \"8-0\": \"404\",\n    \"8-1\": \"Not Found\",\n    \"8-2\": \"Unable to find dataset.\",\n    \"8-4\": \"- You don’t have access to the dataset.\\n\\n- The dataset was deleted.\",\n    \"8-3\": \"GET \\n`/vision/datasets/<DATASET_ID>`\",\n    \"9-0\": \"404\",\n    \"9-1\": \"Not Found\",\n    \"9-2\": \"Unable to find dataset.\",\n    \"9-3\": \"DELETE \\n`/vision/datasets/<DATASET_ID>`\",\n    \"9-4\": \"- You don’t have access to the dataset.\\n\\n- The dataset was already deleted.\",\n    \"10-0\": \"404\",\n    \"10-1\": \"Bad Request\",\n    \"10-2\": \"Example file already exists for the label <NAME_OF_EXAMPLE>\",\n    \"10-3\": \"POST\\n`/vision/feedback`\",\n    \"10-4\": \"An example with the same name already exists in the dataset. Example names must be unique within a dataset.\",\n    \"12-0\": \"503\",\n    \"12-1\": \"Service Unavailable\",\n    \"12-2\": \"Operation timed out!\",\n    \"12-3\": \"GET\\n`/vision/datasets`\",\n    \"12-4\": \"The call has timed out due to large data size. By default, this call returns 100 datasets. If the datasets contain a lot of examples, this call may time out. Use the `offset` and `count` parameters to limit and page through the data.\",\n    \"11-0\": \"404\",\n    \"11-1\": \"Bad Request\",\n    \"11-2\": \"Duplicate labels are not allowed.\",\n    \"11-3\": \"POST\\n`/vision/datasets`\",\n    \"11-4\": \"The call is trying to create a label with a name that exists in the dataset. Label names must be unique within a dataset.\",\n    \"5-0\": \"400\",\n    \"5-1\": \"Bad Request\",\n    \"5-2\": \"Supported dataset types: [image, image-detection, image-multi-label]\",\n    \"5-3\": \"POST \\n`/vision/datasets/upload`\",\n    \"5-4\": \"The `type` request parameter contains a value that isn't a valid dataset type.\"\n  },\n  \"cols\": 5,\n  \"rows\": 13\n}\n[/block]\n##Training##\nError codes that can occur when you train a dataset to create a model or access a model.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"HTTP Code\",\n    \"h-1\": \"HTTP Message\",\n    \"h-2\": \"API Message\",\n    \"h-3\": \"Resource\",\n    \"h-4\": \"Possible Causes\",\n    \"0-0\": \"400\",\n    \"0-1\": \"Bad Request\",\n    \"0-2\": \"- The 'name' parameter is required to train.\\n\\n- A valid 'datasetId' parameter is required to create a example.\",\n    \"0-3\": \"POST \\n`/vision/train`\",\n    \"0-4\": \"The `name` or `datasetId` parameter was passed in, but no parameter value was provided.\",\n    \"1-0\": \"400\",\n    \"1-1\": \"Bad Request\",\n    \"1-2\": \"The 'name', and 'datasetId' parameters are required to train.\",\n    \"1-3\": \"POST \\n`/vision/train`\",\n    \"1-4\": \"The `name` or `datasetId` parameter is missing.\",\n    \"2-0\": \"400\",\n    \"2-1\": \"Bad Request\",\n    \"2-2\": \"Invalid id <MODEL_ID>\",\n    \"2-3\": \"GET \\n`/vision/train/<MODEL_ID>`\",\n    \"2-4\": \"There’s no model with an ID that matches the `modelId` parameter.\",\n    \"3-0\": \"400\",\n    \"3-1\": \"Bad Request\",\n    \"3-2\": \"Invalid id <MODEL_ID>\",\n    \"3-3\": \"GET \\n`/vision/train/<MODEL_ID>/lc`\",\n    \"3-4\": \"There’s no model with an ID that matches the `modelId` parameter.\",\n    \"4-0\": \"400\",\n    \"4-1\": \"Bad Request\",\n    \"4-2\": \"- The job has not terminated yet; its current status is RUNNING.\\n\\n- The job has not terminated yet; its current status is QUEUED.\",\n    \"4-3\": \"GET \\n`/vision/models/<MODEL_ID>`\",\n    \"4-4\": \"The model for which you are getting metrics hasn’t completed training.\",\n    \"5-0\": \"404\",\n    \"5-1\": \"Not Found\",\n    \"5-2\": \"None\",\n    \"5-3\": \"GET \\n`/vision/models/<MODEL_ID>`\",\n    \"5-4\": \"The `modelId` parameter is missing.\",\n    \"6-0\": \"405\",\n    \"6-1\": \"Method Not Allowed\",\n    \"6-2\": \"None\",\n    \"6-3\": \"GET \\n`/vision/train/<MODEL_ID>`\",\n    \"6-4\": \"The `modelId` parameter is missing.\"\n  },\n  \"cols\": 5,\n  \"rows\": 7\n}\n[/block]\n##Prediction##\nError codes that can occur when you make a prediction.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"HTTP Code\",\n    \"h-1\": \"HTTP Message\",\n    \"h-2\": \"API Message\",\n    \"h-3\": \"Resource\",\n    \"h-4\": \"Possible Causes\",\n    \"0-0\": \"400\",\n    \"0-1\": \"Bad Request\",\n    \"0-2\": \"None\",\n    \"0-4\": \"The prediction request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.\",\n    \"0-3\": \"POST\\n`/vision/predict`\",\n    \"1-0\": \"400\",\n    \"1-1\": \"Bad Request\",\n    \"1-2\": \"Bad Request: Bad sampleLocation\",\n    \"1-3\": \"POST\\n`/vision/predict`\",\n    \"1-4\": \"The URL passed in the `sampleLocation` parameter is invalid. The URL could be incorrect, contain the wrong file name, or the file may have been moved.\",\n    \"2-0\": \"400\",\n    \"2-1\": \"Bad Request\",\n    \"2-2\": \"The modelId parameter is required.\",\n    \"2-3\": \"POST\\n`/vision/predict`\",\n    \"2-4\": \"The `modelId` parameter is missing.\",\n    \"3-0\": \"400\",\n    \"3-1\": \"Bad Request\",\n    \"3-2\": \"Bad Request: Missing sampleLocation, sampleBase64Content, and sampleContent\",\n    \"3-3\": \"POST\\n`/vision/predict`\",\n    \"3-4\": \"The parameter that specifies the image to predict is missing.\",\n    \"4-0\": \"400\",\n    \"4-1\": \"Bad Request\",\n    \"4-2\": \"File size limit exceeded\",\n    \"4-3\": \"POST\\n`/vision/predict`\",\n    \"4-4\": \"The file you passed in for prediction exceeds the maximum file size limit of 5 MB.\",\n    \"5-0\": \"400\",\n    \"5-1\": \"Bad Request\",\n    \"5-2\": \"Bad Request: Unsupported sample file format\",\n    \"5-3\": \"POST\\n`/vision/predict`\",\n    \"5-4\": \"The file you passed in for prediction isn’t one of the supported file types.\",\n    \"6-0\": \"403\",\n    \"6-1\": \"Forbidden\",\n    \"6-2\": \"Forbidden!\",\n    \"6-3\": \"POST\\n`/vision/predict`\",\n    \"6-4\": \"- The model specified by the `modelId` parameter doesn’t exist.\\n\\n- The `modelId` parameter was passed in but no value was provided.\",\n    \"7-0\": \"429\",\n    \"7-1\": \"Too Many Requests\",\n    \"7-2\": \"You've reached the maximum number of predictions.\",\n    \"7-3\": \"POST `/vision/predict`\",\n    \"7-4\": \"You have exceeded the number of prediction requests for your current plan. Contact your AE to update your plan. See [Rate Limits](doc:rate-limits).\"\n  },\n  \"cols\": 5,\n  \"rows\": 8\n}\n[/block]","excerpt":"If an API call is unsuccessful, it returns an HTTP error code. If the error is known, you receive a message in the response body.","link_url":"","next":{"pages":[],"description":""},"order":3,"sync_unique":"","createdAt":"2016-11-10T20:11:21.728Z","isReference":true,"slug":"api-error-codes-and-messages","title":"API Error Codes and Messages","type":"basic","user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

API Error Codes and Messages

If an API call is unsuccessful, it returns an HTTP error code. If the error is known, you receive a message in the response body.

Known errors are returned in the response body in this format. [block:code] { "codes": [ { "code": "{\n \"message\": \"Invalid authentication scheme\"\n}", "language": "json" } ] } [/block] ##All## [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "0-0": "401", "0-1": "Unauthorized", "0-2": "Invalid access token", "0-3": "Any", "0-4": "The access token is expired.", "h-3": "Resource", "h-4": "Possible Causes", "1-0": "401", "1-1": "Unauthorized", "1-2": "Invalid authentication scheme", "1-3": "Any", "1-4": "An `Authorization` header was provided, but the token isn't properly formatted.", "2-0": "5XX", "2-1": "- Internal server error \n- Service unavailable", "2-2": "None", "2-3": "Any", "2-4": "Our systems encountered and logged an unexpected error. Please contact us if you continue to see the error." }, "cols": 5, "rows": 3 } [/block] ##Datasets## Error codes that can occur when you access datasets, labels, or examples. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-4": "The request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.", "1-0": "400", "1-1": "Bad Request", "1-2": "The 'name' parameter is required to create a dataset.", "1-3": "POST \n`/vision/datasets`", "1-4": "The `name` parameter was passed in, but no value was provided.", "0-2": "None", "2-0": "400", "2-1": "Bad Request", "2-2": "Uploading a dataset requires either the 'data' field or the 'path' field.", "2-3": "POST\n`/vision/datasets/upload`", "2-4": "The path to the local .zip file or the URL to the .zip file in the cloud wasn’t specified.", "3-0": "400", "3-1": "Bad Request", "3-2": "The 'data' parameter cannot be duplicated, nor sent along with the 'path' parameter.", "3-3": "POST \n`/vision/datasets/upload`", "3-4": "Both the `path` and `data` parameters were passed to the call; only one of these parameters can be passed.", "4-0": "400", "4-1": "Bad Request", "4-2": "The dataset is not yet available for update, try again once the dataset is ready.", "4-3": "PUT \n`/vision/datasets/<DATASET_ID>/upload`", "4-4": "You’re adding examples to a dataset that’s currently being created. You must wait for dataset to become available before you can add examples to it.", "6-0": "400", "6-1": "Bad Request", "6-2": "Example max size supported is 1024000", "6-3": "POST \n`/vision/datasets/<DATASET_ID>/examples`", "6-4": "The image file being added as an example exceeds the maximum file size of 1 MB.", "7-0": "404", "7-1": "Not Found", "7-4": "The requested REST resource doesn’t exist or you don't have permission to access the resource.", "0-3": "Any dataset, label, or example resources.", "7-2": "None", "7-3": "Any dataset, label, or example resources.", "8-0": "404", "8-1": "Not Found", "8-2": "Unable to find dataset.", "8-4": "- You don’t have access to the dataset.\n\n- The dataset was deleted.", "8-3": "GET \n`/vision/datasets/<DATASET_ID>`", "9-0": "404", "9-1": "Not Found", "9-2": "Unable to find dataset.", "9-3": "DELETE \n`/vision/datasets/<DATASET_ID>`", "9-4": "- You don’t have access to the dataset.\n\n- The dataset was already deleted.", "10-0": "404", "10-1": "Bad Request", "10-2": "Example file already exists for the label <NAME_OF_EXAMPLE>", "10-3": "POST\n`/vision/feedback`", "10-4": "An example with the same name already exists in the dataset. Example names must be unique within a dataset.", "12-0": "503", "12-1": "Service Unavailable", "12-2": "Operation timed out!", "12-3": "GET\n`/vision/datasets`", "12-4": "The call has timed out due to large data size. By default, this call returns 100 datasets. If the datasets contain a lot of examples, this call may time out. Use the `offset` and `count` parameters to limit and page through the data.", "11-0": "404", "11-1": "Bad Request", "11-2": "Duplicate labels are not allowed.", "11-3": "POST\n`/vision/datasets`", "11-4": "The call is trying to create a label with a name that exists in the dataset. Label names must be unique within a dataset.", "5-0": "400", "5-1": "Bad Request", "5-2": "Supported dataset types: [image, image-detection, image-multi-label]", "5-3": "POST \n`/vision/datasets/upload`", "5-4": "The `type` request parameter contains a value that isn't a valid dataset type." }, "cols": 5, "rows": 13 } [/block] ##Training## Error codes that can occur when you train a dataset to create a model or access a model. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-2": "- The 'name' parameter is required to train.\n\n- A valid 'datasetId' parameter is required to create a example.", "0-3": "POST \n`/vision/train`", "0-4": "The `name` or `datasetId` parameter was passed in, but no parameter value was provided.", "1-0": "400", "1-1": "Bad Request", "1-2": "The 'name', and 'datasetId' parameters are required to train.", "1-3": "POST \n`/vision/train`", "1-4": "The `name` or `datasetId` parameter is missing.", "2-0": "400", "2-1": "Bad Request", "2-2": "Invalid id <MODEL_ID>", "2-3": "GET \n`/vision/train/<MODEL_ID>`", "2-4": "There’s no model with an ID that matches the `modelId` parameter.", "3-0": "400", "3-1": "Bad Request", "3-2": "Invalid id <MODEL_ID>", "3-3": "GET \n`/vision/train/<MODEL_ID>/lc`", "3-4": "There’s no model with an ID that matches the `modelId` parameter.", "4-0": "400", "4-1": "Bad Request", "4-2": "- The job has not terminated yet; its current status is RUNNING.\n\n- The job has not terminated yet; its current status is QUEUED.", "4-3": "GET \n`/vision/models/<MODEL_ID>`", "4-4": "The model for which you are getting metrics hasn’t completed training.", "5-0": "404", "5-1": "Not Found", "5-2": "None", "5-3": "GET \n`/vision/models/<MODEL_ID>`", "5-4": "The `modelId` parameter is missing.", "6-0": "405", "6-1": "Method Not Allowed", "6-2": "None", "6-3": "GET \n`/vision/train/<MODEL_ID>`", "6-4": "The `modelId` parameter is missing." }, "cols": 5, "rows": 7 } [/block] ##Prediction## Error codes that can occur when you make a prediction. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-2": "None", "0-4": "The prediction request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.", "0-3": "POST\n`/vision/predict`", "1-0": "400", "1-1": "Bad Request", "1-2": "Bad Request: Bad sampleLocation", "1-3": "POST\n`/vision/predict`", "1-4": "The URL passed in the `sampleLocation` parameter is invalid. The URL could be incorrect, contain the wrong file name, or the file may have been moved.", "2-0": "400", "2-1": "Bad Request", "2-2": "The modelId parameter is required.", "2-3": "POST\n`/vision/predict`", "2-4": "The `modelId` parameter is missing.", "3-0": "400", "3-1": "Bad Request", "3-2": "Bad Request: Missing sampleLocation, sampleBase64Content, and sampleContent", "3-3": "POST\n`/vision/predict`", "3-4": "The parameter that specifies the image to predict is missing.", "4-0": "400", "4-1": "Bad Request", "4-2": "File size limit exceeded", "4-3": "POST\n`/vision/predict`", "4-4": "The file you passed in for prediction exceeds the maximum file size limit of 5 MB.", "5-0": "400", "5-1": "Bad Request", "5-2": "Bad Request: Unsupported sample file format", "5-3": "POST\n`/vision/predict`", "5-4": "The file you passed in for prediction isn’t one of the supported file types.", "6-0": "403", "6-1": "Forbidden", "6-2": "Forbidden!", "6-3": "POST\n`/vision/predict`", "6-4": "- The model specified by the `modelId` parameter doesn’t exist.\n\n- The `modelId` parameter was passed in but no value was provided.", "7-0": "429", "7-1": "Too Many Requests", "7-2": "You've reached the maximum number of predictions.", "7-3": "POST `/vision/predict`", "7-4": "You have exceeded the number of prediction requests for your current plan. Contact your AE to update your plan. See [Rate Limits](doc:rate-limits)." }, "cols": 5, "rows": 8 } [/block]
Known errors are returned in the response body in this format. [block:code] { "codes": [ { "code": "{\n \"message\": \"Invalid authentication scheme\"\n}", "language": "json" } ] } [/block] ##All## [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "0-0": "401", "0-1": "Unauthorized", "0-2": "Invalid access token", "0-3": "Any", "0-4": "The access token is expired.", "h-3": "Resource", "h-4": "Possible Causes", "1-0": "401", "1-1": "Unauthorized", "1-2": "Invalid authentication scheme", "1-3": "Any", "1-4": "An `Authorization` header was provided, but the token isn't properly formatted.", "2-0": "5XX", "2-1": "- Internal server error \n- Service unavailable", "2-2": "None", "2-3": "Any", "2-4": "Our systems encountered and logged an unexpected error. Please contact us if you continue to see the error." }, "cols": 5, "rows": 3 } [/block] ##Datasets## Error codes that can occur when you access datasets, labels, or examples. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-4": "The request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.", "1-0": "400", "1-1": "Bad Request", "1-2": "The 'name' parameter is required to create a dataset.", "1-3": "POST \n`/vision/datasets`", "1-4": "The `name` parameter was passed in, but no value was provided.", "0-2": "None", "2-0": "400", "2-1": "Bad Request", "2-2": "Uploading a dataset requires either the 'data' field or the 'path' field.", "2-3": "POST\n`/vision/datasets/upload`", "2-4": "The path to the local .zip file or the URL to the .zip file in the cloud wasn’t specified.", "3-0": "400", "3-1": "Bad Request", "3-2": "The 'data' parameter cannot be duplicated, nor sent along with the 'path' parameter.", "3-3": "POST \n`/vision/datasets/upload`", "3-4": "Both the `path` and `data` parameters were passed to the call; only one of these parameters can be passed.", "4-0": "400", "4-1": "Bad Request", "4-2": "The dataset is not yet available for update, try again once the dataset is ready.", "4-3": "PUT \n`/vision/datasets/<DATASET_ID>/upload`", "4-4": "You’re adding examples to a dataset that’s currently being created. You must wait for dataset to become available before you can add examples to it.", "6-0": "400", "6-1": "Bad Request", "6-2": "Example max size supported is 1024000", "6-3": "POST \n`/vision/datasets/<DATASET_ID>/examples`", "6-4": "The image file being added as an example exceeds the maximum file size of 1 MB.", "7-0": "404", "7-1": "Not Found", "7-4": "The requested REST resource doesn’t exist or you don't have permission to access the resource.", "0-3": "Any dataset, label, or example resources.", "7-2": "None", "7-3": "Any dataset, label, or example resources.", "8-0": "404", "8-1": "Not Found", "8-2": "Unable to find dataset.", "8-4": "- You don’t have access to the dataset.\n\n- The dataset was deleted.", "8-3": "GET \n`/vision/datasets/<DATASET_ID>`", "9-0": "404", "9-1": "Not Found", "9-2": "Unable to find dataset.", "9-3": "DELETE \n`/vision/datasets/<DATASET_ID>`", "9-4": "- You don’t have access to the dataset.\n\n- The dataset was already deleted.", "10-0": "404", "10-1": "Bad Request", "10-2": "Example file already exists for the label <NAME_OF_EXAMPLE>", "10-3": "POST\n`/vision/feedback`", "10-4": "An example with the same name already exists in the dataset. Example names must be unique within a dataset.", "12-0": "503", "12-1": "Service Unavailable", "12-2": "Operation timed out!", "12-3": "GET\n`/vision/datasets`", "12-4": "The call has timed out due to large data size. By default, this call returns 100 datasets. If the datasets contain a lot of examples, this call may time out. Use the `offset` and `count` parameters to limit and page through the data.", "11-0": "404", "11-1": "Bad Request", "11-2": "Duplicate labels are not allowed.", "11-3": "POST\n`/vision/datasets`", "11-4": "The call is trying to create a label with a name that exists in the dataset. Label names must be unique within a dataset.", "5-0": "400", "5-1": "Bad Request", "5-2": "Supported dataset types: [image, image-detection, image-multi-label]", "5-3": "POST \n`/vision/datasets/upload`", "5-4": "The `type` request parameter contains a value that isn't a valid dataset type." }, "cols": 5, "rows": 13 } [/block] ##Training## Error codes that can occur when you train a dataset to create a model or access a model. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-2": "- The 'name' parameter is required to train.\n\n- A valid 'datasetId' parameter is required to create a example.", "0-3": "POST \n`/vision/train`", "0-4": "The `name` or `datasetId` parameter was passed in, but no parameter value was provided.", "1-0": "400", "1-1": "Bad Request", "1-2": "The 'name', and 'datasetId' parameters are required to train.", "1-3": "POST \n`/vision/train`", "1-4": "The `name` or `datasetId` parameter is missing.", "2-0": "400", "2-1": "Bad Request", "2-2": "Invalid id <MODEL_ID>", "2-3": "GET \n`/vision/train/<MODEL_ID>`", "2-4": "There’s no model with an ID that matches the `modelId` parameter.", "3-0": "400", "3-1": "Bad Request", "3-2": "Invalid id <MODEL_ID>", "3-3": "GET \n`/vision/train/<MODEL_ID>/lc`", "3-4": "There’s no model with an ID that matches the `modelId` parameter.", "4-0": "400", "4-1": "Bad Request", "4-2": "- The job has not terminated yet; its current status is RUNNING.\n\n- The job has not terminated yet; its current status is QUEUED.", "4-3": "GET \n`/vision/models/<MODEL_ID>`", "4-4": "The model for which you are getting metrics hasn’t completed training.", "5-0": "404", "5-1": "Not Found", "5-2": "None", "5-3": "GET \n`/vision/models/<MODEL_ID>`", "5-4": "The `modelId` parameter is missing.", "6-0": "405", "6-1": "Method Not Allowed", "6-2": "None", "6-3": "GET \n`/vision/train/<MODEL_ID>`", "6-4": "The `modelId` parameter is missing." }, "cols": 5, "rows": 7 } [/block] ##Prediction## Error codes that can occur when you make a prediction. [block:parameters] { "data": { "h-0": "HTTP Code", "h-1": "HTTP Message", "h-2": "API Message", "h-3": "Resource", "h-4": "Possible Causes", "0-0": "400", "0-1": "Bad Request", "0-2": "None", "0-4": "The prediction request couldn’t be fulfilled because the HTTP request was malformed, the Content Type was incorrect, there were missing parameters, or a parameter was provided with an invalid value.", "0-3": "POST\n`/vision/predict`", "1-0": "400", "1-1": "Bad Request", "1-2": "Bad Request: Bad sampleLocation", "1-3": "POST\n`/vision/predict`", "1-4": "The URL passed in the `sampleLocation` parameter is invalid. The URL could be incorrect, contain the wrong file name, or the file may have been moved.", "2-0": "400", "2-1": "Bad Request", "2-2": "The modelId parameter is required.", "2-3": "POST\n`/vision/predict`", "2-4": "The `modelId` parameter is missing.", "3-0": "400", "3-1": "Bad Request", "3-2": "Bad Request: Missing sampleLocation, sampleBase64Content, and sampleContent", "3-3": "POST\n`/vision/predict`", "3-4": "The parameter that specifies the image to predict is missing.", "4-0": "400", "4-1": "Bad Request", "4-2": "File size limit exceeded", "4-3": "POST\n`/vision/predict`", "4-4": "The file you passed in for prediction exceeds the maximum file size limit of 5 MB.", "5-0": "400", "5-1": "Bad Request", "5-2": "Bad Request: Unsupported sample file format", "5-3": "POST\n`/vision/predict`", "5-4": "The file you passed in for prediction isn’t one of the supported file types.", "6-0": "403", "6-1": "Forbidden", "6-2": "Forbidden!", "6-3": "POST\n`/vision/predict`", "6-4": "- The model specified by the `modelId` parameter doesn’t exist.\n\n- The `modelId` parameter was passed in but no value was provided.", "7-0": "429", "7-1": "Too Many Requests", "7-2": "You've reached the maximum number of predictions.", "7-3": "POST `/vision/predict`", "7-4": "You have exceeded the number of prediction requests for your current plan. Contact your AE to update your plan. See [Rate Limits](doc:rate-limits)." }, "cols": 5, "rows": 8 } [/block]
{"_id":"590a25aed47da32300b68bf4","next":{"description":"","pages":[]},"order":0,"parentDoc":null,"type":"post","__v":0,"api":{"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"id\": 1000014,\n  \"name\": \"mountainvsbeach\",\n  \"createdAt\": \"2017-02-16T16:25:57.000+0000\",\n  \"updatedAt\": \"2017-02-16T16:25:57.000+0000\",\n  \"labelSummary\": {\n    \"labels\": []\n  },\n  \"totalExamples\": 0,\n  \"available\": false,\n  \"statusMsg\": \"UPLOADING\",\n  \"type\": \"image\",\n  \"object\": \"dataset\"\n}\n","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":"/vision/datasets/upload","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@C:\\Data\\mountainvsbeach.zip\" -F \"type=image\"  https://api.einstein.ai/v2/vision/datasets/upload\n\ncurl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://einstein.ai/images/mountainvsbeach.zip\" -F \"type=image\"  https://api.einstein.ai/v2/vision/datasets/upload","language":"curl"}]}},"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"2-0\": \"`path`\",\n    \"0-1\": \"string\",\n    \"2-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.\",\n    \"0-3\": \"1.0\",\n    \"2-2\": \"URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`type`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"3-3\": \"1.0\",\n    \"1-0\": \"`name`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nYou must provide the path to the .zip file on either the local machine or in the cloud. This API:\n- If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters).\n- Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters).\n- Creates an example for each image file in each directory in the .zip file. The example name is the same as the image file name.\n\nThe API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. \n\nKeep the following points in mind when creating datasets.\n- If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter.\n \n- If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip).\n\n- If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file.\n\n- The .zip file must have a specific directory structure:\n - In the root, there should be a parent directory that contains subdirectories. \n - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset.\n - Each subdirectory below the parent directory should contain only images and not any nested subdirectories.\n\n\n- If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`.\n\n- The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset, but the API truncates the example name to 150 characters.\n\n- The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but  the API truncates the label name to 180 characters.\n\n- If the `name` parameter is passed, the maximum length is 100 characters.\n\n- Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned.\n\n- Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail.\n\n- The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned.\n\n- Duplicate images are handled differently based on the dataset type.\n -  Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped.\n - Multi-label—For datasets of type  `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label.\n\n- If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`.\n\n- When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1`\n\n- If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"9-0\": \"`updatedAt`\",\n    \"9-1\": \"date\",\n    \"9-2\": \"Date and time that the dataset was last updated.\",\n    \"9-3\": \"1.0\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-2\": \"Status of the dataset creation and  data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload  is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"6-3\": \"1.0\",\n    \"8-0\": \"`type`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"8-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]","createdAt":"2017-02-16T17:46:31.641Z","hidden":false,"title":"Create a Dataset From a Zip File Asynchronously","updates":[],"version":"590a25abd47da32300b68bd5","category":"59232955c2cabf19005d5ecd","excerpt":"Creates a dataset, labels, and examples from the specified .zip file. The call returns immediately and continues to upload the images in the background.","githubsync":"","link_external":false,"link_url":"","slug":"create-a-dataset-zip-async","isReference":false,"project":"552d474ea86ee20d00780cd7","sync_unique":"","user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

postCreate a Dataset From a Zip File Asynchronously

Creates a dataset, labels, and examples from the specified .zip file. The call returns immediately and continues to upload the images in the background.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "2-2": "URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.", "2-3": "1.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "3-3": "1.0", "1-0": "`name`", "1-1": "string", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.", "1-3": "1.0" }, "cols": 4, "rows": 4 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This API: - If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters). - Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters). - Creates an example for each image file in each directory in the .zip file. The example name is the same as the image file name. The API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. Keep the following points in mind when creating datasets. - If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter. - If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). - If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset, but the API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If the `name` parameter is passed, the maximum length is 100 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "2-2": "URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.", "2-3": "1.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "3-3": "1.0", "1-0": "`name`", "1-1": "string", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.", "1-3": "1.0" }, "cols": 4, "rows": 4 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This API: - If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters). - Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters). - Creates an example for each image file in each directory in the .zip file. The example name is the same as the image file name. The API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. Keep the following points in mind when creating datasets. - If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter. - If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). - If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset, but the API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If the `name` parameter is passed, the maximum length is 100 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block]
{"_id":"590a25aed47da32300b68bf5","title":"Create a Dataset From a Zip File Synchronously","user":"573b5a1f37fcf72000a2e683","__v":0,"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"2-0\": \"`path`\",\n    \"0-1\": \"string\",\n    \"2-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.\",\n    \"0-3\": \"1.0\",\n    \"2-2\": \"URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`type`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"3-3\": \"1.0\",\n    \"1-0\": \"`name`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nYou must provide the path to the .zip file on either the local machine or in the cloud. This API:\n- If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters).\n- Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters).\n- Creates an example for each image file in each directory in the .zip file. The example name is the same as the file name.\n\nThe API call is synchronous, so results are returned after the data has been uploaded to the dataset. If this call succeeds, it returns the `labels` array, `available` is `true`, and `statusMsg` is `SUCCEEDED`.\n\nKeep the following points in mind when creating datasets:\n- If your .zip file is more than 10 MB, we recommend that you use the asynchronous call to create a dataset. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async).\n\n- If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip).\n\n- If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file.\n\n- The .zip file must have a specific directory structure:\n - In the root, there should be a parent directory that contains subdirectories. \n - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset.\n - Each subdirectory below the parent directory should contain only images and not any nested subdirectories.\n\n\n- If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`.\n\n- The maximum image file name length is 150 characters including the file extension.  If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but the API truncates the example name to 150 characters.\n\n- The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but  the API truncates the label name to 180 characters.\n\n- If the `name` parameter is passed, the maximum length is 100 characters.\n\n- Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned.\n\n- Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail.\n\n- The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned.\n\n- Duplicate images are handled differently based on the dataset type.\n -  Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped.\n - Multi-label—For datasets of type  `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label.\n\n- If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`.\n\n- When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1`\n\n- If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset. The API uses the name of the .zip file for the dataset name.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"9-0\": \"`updatedAt`\",\n    \"9-1\": \"date\",\n    \"9-2\": \"Date and time that the dataset was last updated.\",\n    \"9-3\": \"1.0\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-2\": \"Status of the dataset creation and data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"6-3\": \"1.0\",\n    \"8-0\": \"`type`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"8-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]\n## Labels Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"2-0\": \"`name`\",\n    \"3-0\": \"`numExamples`\",\n    \"1-1\": \"long\",\n    \"2-1\": \"string\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\",\n    \"2-2\": \"Name of the label.\",\n    \"2-3\": \"1.0\",\n    \"1-2\": \"ID of the label.\",\n    \"1-3\": \"1.0\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","createdAt":"2017-02-16T22:03:40.674Z","link_external":false,"project":"552d474ea86ee20d00780cd7","slug":"create-a-dataset-zip-sync","category":"59232955c2cabf19005d5ecd","hidden":false,"order":1,"parentDoc":null,"isReference":false,"link_url":"","next":{"pages":[],"description":""},"version":"590a25abd47da32300b68bd5","api":{"url":"/vision/datasets/upload/sync","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@C:\\Data\\mountainvsbeach.zip\" -F \"type=image\"  https://api.einstein.ai/v2/vision/datasets/upload/sync\n\ncurl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://einstein.ai/images/mountainvsbeach.zip\" -F \"type=image\" https://api.einstein.ai/v2/vision/datasets/upload/sync","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"id\": 1000022,\n  \"name\": \"mountainvsbeach\",\n  \"createdAt\": \"2017-02-16T22:26:21.000+0000\",\n  \"updatedAt\": \"2017-02-16T22:26:21.000+0000\",\n  \"labelSummary\": {\n    \"labels\": [\n      {\n        \"id\": 1814,\n        \"datasetId\": 1000022,\n        \"name\": \"Mountains\",\n        \"numExamples\": 50\n      },\n      {\n        \"id\": 1815,\n        \"datasetId\": 1000022,\n        \"name\": \"Beaches\",\n        \"numExamples\": 49\n      }\n    ]\n  },\n  \"totalExamples\": 99,\n  \"totalLabels\": 2,\n  \"available\": true,\n  \"statusMsg\": \"SUCCEEDED\",\n  \"type\": \"image\",\n  \"object\": \"dataset\"\n}\n","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":""},"excerpt":"Creates a dataset, labels, and examples from the specified .zip file. The call returns after the dataset is created and all of the images are uploaded. Use this API call for .zip files that are less than 10 MB.","githubsync":"","sync_unique":"","type":"post","updates":[],"childrenPages":[]}

postCreate a Dataset From a Zip File Synchronously

Creates a dataset, labels, and examples from the specified .zip file. The call returns after the dataset is created and all of the images are uploaded. Use this API call for .zip files that are less than 10 MB.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "2-2": "URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.", "2-3": "1.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "3-3": "1.0", "1-0": "`name`", "1-1": "string", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.", "1-3": "1.0" }, "cols": 4, "rows": 4 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This API: - If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters). - Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters). - Creates an example for each image file in each directory in the .zip file. The example name is the same as the file name. The API call is synchronous, so results are returned after the data has been uploaded to the dataset. If this call succeeds, it returns the `labels` array, `available` is `true`, and `statusMsg` is `SUCCEEDED`. Keep the following points in mind when creating datasets: - If your .zip file is more than 10 MB, we recommend that you use the asynchronous call to create a dataset. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async). - If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). - If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but the API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If the `name` parameter is passed, the maximum length is 100 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset. The API uses the name of the .zip file for the dataset name.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block] ## Labels Response Body## [block:parameters] { "data": { "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "2-0": "`name`", "3-0": "`numExamples`", "1-1": "long", "2-1": "string", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0", "2-2": "Name of the label.", "2-3": "1.0", "1-2": "ID of the label.", "1-3": "1.0", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive (FilePart). The maximum .zip file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "2-2": "URL of the .zip file. The maximum .zip file size you can upload from a web location is 1 GB.", "2-3": "1.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "3-3": "1.0", "1-0": "`name`", "1-1": "string", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name.", "1-3": "1.0" }, "cols": 4, "rows": 4 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This API: - If the `name` parameter isn't passed, creates a dataset that has the same name as the .zip file (limit is 100 characters). - Creates a label for each directory in the .zip file. The label name is the same name as the directory name (limit is 180 characters). - Creates an example for each image file in each directory in the .zip file. The example name is the same as the file name. The API call is synchronous, so results are returned after the data has been uploaded to the dataset. If this call succeeds, it returns the `labels` array, `available` is `true`, and `statusMsg` is `SUCCEEDED`. Keep the following points in mind when creating datasets: - If your .zip file is more than 10 MB, we recommend that you use the asynchronous call to create a dataset. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async). - If you have a large amount of data (gigabytes), you might want to break up your data into multiple .zip files. You can load the first .zip file using this call and then load subsequent .zip files using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). - If you create a dataset from a .zip file, you can only add examples to it from a .zip file using PUT. See [Create Examples From Zip File](doc:create-examples-from-zip). You can't add a single example from a file. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but the API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If the `name` parameter is passed, the maximum length is 100 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - The supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset. The API uses the name of the .zip file for the dataset name.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block] ## Labels Response Body## [block:parameters] { "data": { "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "2-0": "`name`", "3-0": "`numExamples`", "1-1": "long", "2-1": "string", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0", "2-2": "Name of the label.", "2-3": "1.0", "1-2": "ID of the label.", "1-3": "1.0", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590a25aed47da32300b68bf6","api":{"settings":"","url":"/vision/datasets","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach and Mountain\" -F \"labels=beach,mountain\" -F \"type=image\" https://api.einstein.ai/v2/vision/datasets","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"id\": 57,\n  \"name\": \"Beach and Mountain\",\n  \"createdAt\": \"2016-09-15T16:51:41.000+0000\",\n  \"updatedAt\": \"2016-09-15T16:51:41.000+0000\",\n  \"labelSummary\": {\n    \"labels\": [\n      {\n        \"id\": 611,\n        \"datasetId\": 57,\n        \"name\": \"beach\",\n        \"numExamples\": 0\n      },\n    {\n        \"id\": 612,\n        \"datasetId\": 57,\n        \"name\": \"mountain\",\n        \"numExamples\": 0\n      }\n          ]\n  },\n  \"totalExamples\": 0,\n  \"totalLabels\": 2,\n  \"available\": true,\n  \"statusMsg\": \"SUCCEEDED\",\n  \"type\": \"image\",\n  \"object\": \"dataset\"\n}\n","name":""},{"status":400,"language":"json","code":"{}","name":""}]}},"category":"59232955c2cabf19005d5ecd","order":2,"parentDoc":null,"link_external":false,"link_url":"","user":"573b5a1f37fcf72000a2e683","body":"[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Warning\",\n  \"body\": \"For better performance, we recommend that you create a dataset by uploading a .zip file. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async).\"\n}\n[/block]\n##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`labels`\",\n    \"1-0\": \"`name`\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Optional comma-separated list of labels. If specified, creates the labels in the dataset. Maximum number of labels per dataset is 250.\",\n    \"0-3\": \"1.0\",\n    \"1-2\": \"Name of the dataset. Maximum length is 180 characters.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`type`\",\n    \"2-1\": \"string\",\n    \"2-3\": \"2.0\",\n    \"2-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\nKeep the following points in mind when creating datasets.\n- Label names can’t contain a comma.\n\n- You can’t delete a label. To change the labels in a dataset, recreate the dataset with the correct labels.\n\n- Label names must be unique within the dataset.\n\n- A dataset must have a minimum of two labels to create a model.\n\n- To add examples to a dataset created using this API, use the [Create an Example](doc:create-an-example) call.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"8-0\": \"`totalLabels`\",\n    \"8-1\": \"int\",\n    \"8-2\": \"Total number of labels in the dataset.\",\n    \"8-3\": \"1.0\",\n    \"10-0\": \"`updatedAt`\",\n    \"10-1\": \"date\",\n    \"10-2\": \"Date and time that the dataset was last updated.\",\n    \"10-3\": \"1.0\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-3\": \"1.0\",\n    \"6-2\": \"Status of the dataset creation and data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"9-0\": \"`type`\",\n    \"9-1\": \"string\",\n    \"9-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label` Available in Einstein Vision API version 2.0 and later.\",\n    \"9-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n## Labels Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the label.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Name of the label.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","hidden":false,"isReference":false,"slug":"create-a-dataset","title":"Create a Dataset","__v":0,"createdAt":"2016-09-19T18:43:54.306Z","excerpt":"Creates a dataset and labels, if they're specified.","next":{"pages":[],"description":""},"updates":[],"version":"590a25abd47da32300b68bd5","githubsync":"","project":"552d474ea86ee20d00780cd7","sync_unique":"","type":"post","childrenPages":[]}

postCreate a Dataset

Creates a dataset and labels, if they're specified.

[block:callout] { "type": "warning", "title": "Warning", "body": "For better performance, we recommend that you create a dataset by uploading a .zip file. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async)." } [/block] ##Request Parameters## [block:parameters] { "data": { "0-0": "`labels`", "1-0": "`name`", "0-1": "string", "1-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Optional comma-separated list of labels. If specified, creates the labels in the dataset. Maximum number of labels per dataset is 250.", "0-3": "1.0", "1-2": "Name of the dataset. Maximum length is 180 characters.", "1-3": "1.0", "2-0": "`type`", "2-1": "string", "2-3": "2.0", "2-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 3 } [/block] Keep the following points in mind when creating datasets. - Label names can’t contain a comma. - You can’t delete a label. To change the labels in a dataset, recreate the dataset with the correct labels. - Label names must be unique within the dataset. - A dataset must have a minimum of two labels to create a model. - To add examples to a dataset created using this API, use the [Create an Example](doc:create-an-example) call. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-3": "1.0", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label` Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ## Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



[block:callout] { "type": "warning", "title": "Warning", "body": "For better performance, we recommend that you create a dataset by uploading a .zip file. See [Create a Dataset From a Zip File Asynchronously](doc:create-a-dataset-zip-async)." } [/block] ##Request Parameters## [block:parameters] { "data": { "0-0": "`labels`", "1-0": "`name`", "0-1": "string", "1-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Optional comma-separated list of labels. If specified, creates the labels in the dataset. Maximum number of labels per dataset is 250.", "0-3": "1.0", "1-2": "Name of the dataset. Maximum length is 180 characters.", "1-3": "1.0", "2-0": "`type`", "2-1": "string", "2-3": "2.0", "2-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 3 } [/block] Keep the following points in mind when creating datasets. - Label names can’t contain a comma. - You can’t delete a label. To change the labels in a dataset, recreate the dataset with the correct labels. - Label names must be unique within the dataset. - A dataset must have a minimum of two labels to create a model. - To add examples to a dataset created using this API, use the [Create an Example](doc:create-an-example) call. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-3": "1.0", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label` Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ## Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590a25aed47da32300b68bf7","hidden":false,"next":{"pages":[],"description":""},"updates":[],"link_external":false,"parentDoc":null,"project":"552d474ea86ee20d00780cd7","type":"get","user":"573b5a1f37fcf72000a2e683","category":"59232955c2cabf19005d5ecd","isReference":false,"sync_unique":"","title":"Get a Dataset","githubsync":"","link_url":"","order":3,"__v":0,"api":{"auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57"}]},"method":"get","params":[],"results":{"codes":[{"name":"","code":"{\n  \"id\": 57,\n  \"name\": \"mountainvsbeach\",\n  \"createdAt\": \"2016-09-15T16:51:41.000+0000\",\n  \"updatedAt\": \"2016-09-15T16:51:41.000+0000\",\n  \"labelSummary\": {\n    \"labels\": [\n      {\n        \"id\": 612,\n        \"datasetId\": 57,\n        \"name\": \"Mountains\",\n        \"numExamples\": 49\n      },\n      {\n        \"id\": 611,\n        \"datasetId\": 57,\n        \"name\": \"Beaches\",\n        \"numExamples\": 50\n      }\n    ]\n  },\n  \"totalExamples\": 99,\n  \"totalLabels\": 2,\n  \"available\": true,\n  \"statusMsg\": \"SUCCEEDED\",\n  \"type\": \"image\",\n  \"object\": \"dataset\"\n}\n","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"/vision/datasets/<DATASET_ID>"},"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"8-0\": \"`totalLabels`\",\n    \"8-1\": \"int\",\n    \"8-2\": \"Total number of labels in the dataset.\",\n    \"8-3\": \"1.0\",\n    \"10-0\": \"`updatedAt`\",\n    \"10-1\": \"date\",\n    \"10-2\": \"Date and time that the dataset was last updated.\",\n    \"10-3\": \"1.0\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-2\": \"Status of the dataset creation and data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"6-3\": \"1.0\",\n    \"9-0\": \"`type`\",\n    \"9-1\": \"string\",\n    \"9-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"9-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n##Labels Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the label.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Name of the label.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","createdAt":"2016-09-23T20:54:05.059Z","excerpt":"Returns a single dataset.","slug":"get-a-dataset","version":"590a25abd47da32300b68bd5","childrenPages":[]}

getGet a Dataset

Returns a single dataset.

##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ##Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "1.0", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ##Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590a25aed47da32300b68bf8","version":"590a25abd47da32300b68bd5","__v":0,"link_url":"","sync_unique":"","api":{"method":"get","params":[],"results":{"codes":[{"code":"{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": 57,\n      \"name\": \"Beach and Mountain\",\n      \"updatedAt\": \"2016-09-09T22:39:22.000+0000\",\n      \"createdAt\": \"2016-09-09T22:39:22.000+0000\",\n     \"labelSummary\": {\n           \"labels\": [\n          {\n              \"id\": 36,\n              \"datasetId\": 57,\n              \"name\": \"beach\",\n              \"numExamples\": 49\n          },\n          {\n            \"id\": 37,\n            \"datasetId\": 57,\n            \"name\": \"mountain\",\n            \"numExamples\": 50\n          }\n        ]\n      },\n      \"totalExamples\": 99,\n      \"totalLabels\": 2,\n      \"available\": true,\n      \"statusMsg\": \"SUCCEEDED\",\n      \"type\": \"image\",\n      \"object\": \"dataset\"\n    },\n    {\n      \"id\": 58,\n      \"name\": \"Brain Scans\",\n      \"updatedAt\": \"2016-09-24T21:35:27.000+0000\",\n      \"createdAt\": \"2016-09-24T21:35:27.000+0000\",\n     \"labelSummary\": {\n           \"labels\": [\n          {\n              \"id\": 122,\n              \"datasetId\": 58,\n              \"name\": \"healthy\",\n              \"numExamples\": 5064\n          },\n          {\n            \"id\": 123,\n            \"datasetId\": 58,\n            \"name\": \"unhealthy\",\n            \"numExamples\": 5080\n          }\n      ]\n     },\n      \"totalExamples\": 10144,\n      \"totalLabels\": 2,\n      \"available\": true,\n      \"statusMsg\": \"SUCCEEDED\",\n      \"type\": \"image\",\n      \"object\": \"dataset\"\n    }\n  ]\n}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","url":"/vision/datasets","auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets"}]}},"project":"552d474ea86ee20d00780cd7","link_external":false,"next":{"pages":[],"description":""},"title":"Get All Datasets","updates":[],"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`data`\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of `dataset` objects.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `list`.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Dataset Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"9-0\": \"`updatedAt`\",\n    \"9-1\": \"date\",\n    \"9-2\": \"Date and time that the dataset was last updated.\",\n    \"9-3\": \"1.0\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"6-0\": \"`totalExamples`\",\n    \"6-1\": \"int\",\n    \"6-2\": \"Total number of examples in the dataset.\",\n    \"6-3\": \"1.0\",\n    \"7-0\": \"`totalLabels`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of labels in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"8-0\": \"`type`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"8-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]\n##Labels Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the label.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Name of the label.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples in the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##Page Through Datasets##\n\nBy default, this call returns 25 datasets. If you want to page through your datasets, use the `offset` and `count` query parameters.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-2\": \"Number of datsets to return. Maximum valid value is 25. If you specify a number greater than 25, the call returns 25 datasets. Optional.\",\n    \"1-2\": \"Index of the dataset from which you want to start paging. Optional.\",\n    \"0-0\": \"`count`\",\n    \"1-0\": \"`offset`\",\n    \"1-1\": \"int\",\n    \"0-1\": \"int\",\n    \"h-3\": \"Available Version\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\nHere's an example of these query parameters. If you omit the `count` parameter, the API returns 25 datasets. If you omit the `offset` parameter, paging starts at 0.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\"  \\\"https://api.einstein.ai/v2/vision/datasets?offset=100&count=20\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nFor example, let's say you want to page through all of your datasets and show 20 at a time. The first call would have `offset=0` and `count=20`, the second call would have `offset=20` and `count=20`, and so on.\n\n##Get Global Datasets##\n\nGlobal datasets are public datasets that Salesforce provides. You can use these datasets to include additional data during training when you create a model. To get a list of the global datasets, use the  `global` query parameter.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"`global`\",\n    \"0-1\": \"boolean\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"If `true`, returns all global datasets.\",\n    \"0-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\nHere's an example of the `global` query parameter. The response JSON is the same as for your own custom datasets.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\"  \\\"https://api.einstein.ai/v2/vision/datasets?global=true\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]","createdAt":"2016-09-23T21:53:15.555Z","excerpt":"Returns a list of datasets and their labels that were created by the current user. The response is sorted by dataset ID.","hidden":false,"parentDoc":null,"slug":"get-all-datasets","type":"get","user":"573b5a1f37fcf72000a2e683","category":"59232955c2cabf19005d5ecd","githubsync":"","isReference":false,"order":4,"childrenPages":[]}

getGet All Datasets

Returns a list of datasets and their labels that were created by the current user. The response is sorted by dataset ID.

##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `dataset` objects.", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Dataset Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`totalExamples`", "6-1": "int", "6-2": "Total number of examples in the dataset.", "6-3": "1.0", "7-0": "`totalLabels`", "7-1": "int", "7-2": "Total number of labels in the dataset.", "7-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block] ##Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples in the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##Page Through Datasets## By default, this call returns 25 datasets. If you want to page through your datasets, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-2": "Number of datsets to return. Maximum valid value is 25. If you specify a number greater than 25, the call returns 25 datasets. Optional.", "1-2": "Index of the dataset from which you want to start paging. Optional.", "0-0": "`count`", "1-0": "`offset`", "1-1": "int", "0-1": "int", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 datasets. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets?offset=100&count=20\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of your datasets and show 20 at a time. The first call would have `offset=0` and `count=20`, the second call would have `offset=20` and `count=20`, and so on. ##Get Global Datasets## Global datasets are public datasets that Salesforce provides. You can use these datasets to include additional data during training when you create a model. To get a list of the global datasets, use the `global` query parameter. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "`global`", "0-1": "boolean", "h-3": "Available Version", "0-2": "If `true`, returns all global datasets.", "0-3": "2.0" }, "cols": 4, "rows": 1 } [/block] Here's an example of the `global` query parameter. The response JSON is the same as for your own custom datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets?global=true\"", "language": "curl" } ] } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `dataset` objects.", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Dataset Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "6-0": "`totalExamples`", "6-1": "int", "6-2": "Total number of examples in the dataset.", "6-3": "1.0", "7-0": "`totalLabels`", "7-1": "int", "7-2": "Total number of labels in the dataset.", "7-3": "1.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "8-3": "1.0" }, "cols": 4, "rows": 10 } [/block] ##Labels Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples in the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##Page Through Datasets## By default, this call returns 25 datasets. If you want to page through your datasets, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-2": "Number of datsets to return. Maximum valid value is 25. If you specify a number greater than 25, the call returns 25 datasets. Optional.", "1-2": "Index of the dataset from which you want to start paging. Optional.", "0-0": "`count`", "1-0": "`offset`", "1-1": "int", "0-1": "int", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 datasets. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets?offset=100&count=20\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of your datasets and show 20 at a time. The first call would have `offset=0` and `count=20`, the second call would have `offset=20` and `count=20`, and so on. ##Get Global Datasets## Global datasets are public datasets that Salesforce provides. You can use these datasets to include additional data during training when you create a model. To get a list of the global datasets, use the `global` query parameter. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "`global`", "0-1": "boolean", "h-3": "Available Version", "0-2": "If `true`, returns all global datasets.", "0-3": "2.0" }, "cols": 4, "rows": 1 } [/block] Here's an example of the `global` query parameter. The response JSON is the same as for your own custom datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets?global=true\"", "language": "curl" } ] } [/block]
{"_id":"590a25aed47da32300b68bf9","githubsync":"","hidden":false,"title":"Delete a Dataset","updates":[],"__v":0,"api":{"examples":{"codes":[{"code":"curl -X DELETE -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/108","language":"curl"}]},"method":"delete","params":[],"results":{"codes":[{"language":"json","code":"{}","name":"","status":204},{"code":"{}","name":"","status":400,"language":"json"}]},"settings":"","url":"/vision/<DATASET_ID>","auth":"required"},"type":"delete","version":"590a25abd47da32300b68bd5","next":{"pages":[],"description":""},"parentDoc":null,"project":"552d474ea86ee20d00780cd7","excerpt":"Deletes the specified dataset and associated labels, examples, and models.","link_external":false,"link_url":"","order":5,"sync_unique":"","body":"This call doesn’t return a response body. Instead, it returns an HTTP status code 204.","category":"59232955c2cabf19005d5ecd","createdAt":"2016-09-23T22:02:04.938Z","user":"573b5a1f37fcf72000a2e683","isReference":false,"slug":"delete-a-dataset","childrenPages":[]}

deleteDelete a Dataset

Deletes the specified dataset and associated labels, examples, and models.

This call doesn’t return a response body. Instead, it returns an HTTP status code 204.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



This call doesn’t return a response body. Instead, it returns an HTTP status code 204.
{"_id":"590a25aed47da32300b68bfc","slug":"create-examples-from-zip","api":{"method":"put","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"id\": 1000022,\n  \"name\": \"mountainvsbeach\",\n  \"createdAt\": \"2017-02-17T00:22:10.000+0000\",\n  \"updatedAt\": \"2017-02-17T00:22:12.000+0000\",\n  \"labelSummary\": {\n    \"labels\": [\n      {\n        \"id\": 1819,\n        \"datasetId\": 1000022,\n        \"name\": \"Mountains\",\n        \"numExamples\": 50\n      },\n      {\n        \"id\": 1820,\n        \"datasetId\": 1000022,\n        \"name\": \"Beaches\",\n        \"numExamples\": 49\n      }\n    ]\n  },\n  \"totalExamples\": 99,\n  \"totalLabels\": 2,\n  \"available\": false,\n  \"statusMsg\": \"UPLOADING\",\n  \"type\": \"image\",\n  \"object\": \"dataset\"\n}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"/vision/datasets/<DATASET_ID>/upload","auth":"required","examples":{"codes":[{"code":"curl -X PUT -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@C:\\Data\\mountainvsbeach.zip\"  https://api.einstein.ai/v2/vision/datasets/1000022/upload\n\ncurl -X PUT -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://metamind.io/images/mountainvsbeach.zip\"  https://api.einstein.ai/v2/vision/datasets/1000022/upload","language":"curl"}]}},"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"0-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Path to the .zip file on the local drive. The maximum file size you can upload from a local drive is 50 MB.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`path`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"URL of the .zip file. The maximum file size you can upload from a web location is 1 GB.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\nYou must provide the path to the .zip file on either the local machine or in the cloud. This call adds examples to the specified dataset from a .zip file. This is an asynchronous call, so the results that are initially returned contain information for the original dataset and `available` is `false`. \n\nUse the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true`  and `statusMsg` is `SUCCEEDED` the data upload is complete. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 1000022,\\n  \\\"name\\\": \\\"mountainvsbeach\\\",\\n  \\\"createdAt\\\": \\\"2017-02-17T00:22:10.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-02-17T00:29:56.000+0000\\\",\\n  \\\"labelSummary\\\": {\\n    \\\"labels\\\": [\\n      {\\n        \\\"id\\\": 1819,\\n        \\\"datasetId\\\": 1000022,\\n        \\\"name\\\": \\\"Mountains\\\",\\n        \\\"numExamples\\\": 150\\n      },\\n      {\\n        \\\"id\\\": 1820,\\n        \\\"datasetId\\\": 1000022,\\n        \\\"name\\\": \\\"Beaches\\\",\\n        \\\"numExamples\\\": 147\\n      }\\n    ]\\n  },\\n  \\\"totalExamples\\\": 297,\\n  \\\"totalLabels\\\": 2,\\n  \\\"available\\\": true,\\n  \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n  \\\"type\\\": \\\"image\\\",\\n  \\\"object\\\": \\\"dataset\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nKeep the following points in mind when creating examples from a .zip file:\n- If the .zip file contains a directory label that's already in the dataset, the API adds the images from that directory to the specified label in the dataset.\n \n- If the .zip file contains a directory name that isn't a label in the dataset, the API adds a new label (limit is 180 characters).\n\n- If you try to create examples in a dataset while a previous call to create examples is still processing (the dataset's `available` value is `false`), the call fails and you receive an error. You must wait until the dataset's `available` value is `true` before starting another upload.\n\n- The .zip file must have a specific directory structure:\n - In the root, there should be a parent directory that contains subdirectories. \n - Each subdirectory below the parent directory becomes a label in the dataset unless the directory name matches a label that's already in the dataset. This subdirectory must contain images to be added to the dataset.\n - Each subdirectory below the parent directory should contain only images and not any nested subdirectories.\n\n\n- If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`.\n\n- The maximum image file name length is 150 characters including the file extension.  If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but API truncates the example name to 150 characters.\n\n- The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but  the API truncates the label name to 180 characters.\n\n- Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned.\n\n- Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail.\n\n- Supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned.\n\n- In the case of duplicate image files in the .zip file, only the first file is uploaded. If there's more than one image file in the same directory with the same file contents, only the first file is uploaded and the others are skipped. Duplicate image files are skipped only within a single directory. If the .zip file has the same image in different directories, both of those images are loaded. However, this API doesn't check for duplicates between the .zip file and the images already in the dataset.\n\n- This API call checks for duplicates in the .zip file that contains the new images using these business rules. However, the call doesn't check for duplicates between the .zip file and the images already in the dataset. Duplicate images are handled differently based on the dataset type.\n -  Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped.\n - Multi-label—For datasets of type  `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label.\n\n\n- If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`.\n\n- When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1`\n\n- If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"ID of the dataset.\",\n    \"2-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"1.0\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"1.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset.\",\n    \"3-3\": \"1.0\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"1.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"1.0\",\n    \"8-0\": \"`totalLabels`\",\n    \"8-1\": \"int\",\n    \"8-2\": \"Total number of labels in the dataset.\",\n    \"8-3\": \"1.0\",\n    \"10-0\": \"`updatedAt`\",\n    \"10-1\": \"date\",\n    \"10-2\": \"Date and time that the dataset was last updated.\",\n    \"10-3\": \"1.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-3\": \"1.0\",\n    \"6-2\": \"Status of the dataset creation and data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"9-0\": \"`type`\",\n    \"9-1\": \"string\",\n    \"9-2\": \"Type of dataset data. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"9-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]\n##Label Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"1-2\": \"ID of the label.\",\n    \"2-2\": \"Name of the label.\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","excerpt":"Adds examples from a .zip file to a dataset. You can use this call only with a dataset that was created from a .zip file.","next":{"pages":[],"description":""},"order":0,"githubsync":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","title":"Create Examples From a Zip File","type":"put","updates":[],"__v":0,"category":"592329ee61ca710f003f4172","createdAt":"2017-02-16T23:16:16.110Z","hidden":false,"isReference":false,"link_url":"","link_external":false,"sync_unique":"","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","childrenPages":[]}

putCreate Examples From a Zip File

Adds examples from a .zip file to a dataset. You can use this call only with a dataset that was created from a .zip file.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive. The maximum file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "1-0": "`path`", "1-1": "string", "1-2": "URL of the .zip file. The maximum file size you can upload from a web location is 1 GB.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This call adds examples to the specified dataset from a .zip file. This is an asynchronous call, so the results that are initially returned contain information for the original dataset and `available` is `false`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED` the data upload is complete. [block:code] { "codes": [ { "code": "{\n \"id\": 1000022,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-17T00:22:10.000+0000\",\n \"updatedAt\": \"2017-02-17T00:29:56.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1819,\n \"datasetId\": 1000022,\n \"name\": \"Mountains\",\n \"numExamples\": 150\n },\n {\n \"id\": 1820,\n \"datasetId\": 1000022,\n \"name\": \"Beaches\",\n \"numExamples\": 147\n }\n ]\n },\n \"totalExamples\": 297,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] Keep the following points in mind when creating examples from a .zip file: - If the .zip file contains a directory label that's already in the dataset, the API adds the images from that directory to the specified label in the dataset. - If the .zip file contains a directory name that isn't a label in the dataset, the API adds a new label (limit is 180 characters). - If you try to create examples in a dataset while a previous call to create examples is still processing (the dataset's `available` value is `false`), the call fails and you receive an error. You must wait until the dataset's `available` value is `true` before starting another upload. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset unless the directory name matches a label that's already in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - Supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - In the case of duplicate image files in the .zip file, only the first file is uploaded. If there's more than one image file in the same directory with the same file contents, only the first file is uploaded and the others are skipped. Duplicate image files are skipped only within a single directory. If the .zip file has the same image in different directories, both of those images are loaded. However, this API doesn't check for duplicates between the .zip file and the images already in the dataset. - This API call checks for duplicates in the .zip file that contains the new images using these business rules. However, the call doesn't check for duplicates between the .zip file and the images already in the dataset. Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "2-0": "`id`", "2-1": "long", "2-2": "ID of the dataset.", "2-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-3": "1.0", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset that the label belongs to.", "1-2": "ID of the label.", "2-2": "Name of the label.", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .zip file on the local drive. The maximum file size you can upload from a local drive is 50 MB.", "0-3": "1.0", "1-0": "`path`", "1-1": "string", "1-2": "URL of the .zip file. The maximum file size you can upload from a web location is 1 GB.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] You must provide the path to the .zip file on either the local machine or in the cloud. This call adds examples to the specified dataset from a .zip file. This is an asynchronous call, so the results that are initially returned contain information for the original dataset and `available` is `false`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED` the data upload is complete. [block:code] { "codes": [ { "code": "{\n \"id\": 1000022,\n \"name\": \"mountainvsbeach\",\n \"createdAt\": \"2017-02-17T00:22:10.000+0000\",\n \"updatedAt\": \"2017-02-17T00:29:56.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 1819,\n \"datasetId\": 1000022,\n \"name\": \"Mountains\",\n \"numExamples\": 150\n },\n {\n \"id\": 1820,\n \"datasetId\": 1000022,\n \"name\": \"Beaches\",\n \"numExamples\": 147\n }\n ]\n },\n \"totalExamples\": 297,\n \"totalLabels\": 2,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] Keep the following points in mind when creating examples from a .zip file: - If the .zip file contains a directory label that's already in the dataset, the API adds the images from that directory to the specified label in the dataset. - If the .zip file contains a directory name that isn't a label in the dataset, the API adds a new label (limit is 180 characters). - If you try to create examples in a dataset while a previous call to create examples is still processing (the dataset's `available` value is `false`), the call fails and you receive an error. You must wait until the dataset's `available` value is `true` before starting another upload. - The .zip file must have a specific directory structure: - In the root, there should be a parent directory that contains subdirectories. - Each subdirectory below the parent directory becomes a label in the dataset unless the directory name matches a label that's already in the dataset. This subdirectory must contain images to be added to the dataset. - Each subdirectory below the parent directory should contain only images and not any nested subdirectories. - If the .zip file has an incorrect structure, the API returns an error: `FAILED: Invalid zip format provided for <dataset_name>`. - The maximum image file name length is 150 characters including the file extension. If the .zip file contains a file with a name greater than 150 characters (including the file extension), the example is created in the dataset but API truncates the example name to 150 characters. - The maximum directory name length is 180 characters. If the .zip file contains a directory with a name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - Image files must be smaller than 1 MB. If the .zip file contains image files larger than 1 MB, the image won't be loaded and no error is returned. - Images must be no larger than 2,000 pixels high by 2,000 pixels wide. You can upload images that are larger, but training the dataset might fail. - Supported image file types are PNG, JPG, and JPEG. If the .zip file contains any unsupported image file types, those images won't be uploaded and no error is returned. - In the case of duplicate image files in the .zip file, only the first file is uploaded. If there's more than one image file in the same directory with the same file contents, only the first file is uploaded and the others are skipped. Duplicate image files are skipped only within a single directory. If the .zip file has the same image in different directories, both of those images are loaded. However, this API doesn't check for duplicates between the .zip file and the images already in the dataset. - This API call checks for duplicates in the .zip file that contains the new images using these business rules. However, the call doesn't check for duplicates between the .zip file and the images already in the dataset. Duplicate images are handled differently based on the dataset type. - Image—For datasets of type `image`, if there are duplicate image files in the .zip file, only the first file is uploaded. Duplicate images are checked within directories and across directories. If there's more than one image file with the same file contents in the same directory or in multiple directories, only the first file is uploaded and the others are skipped. - Multi-label—For datasets of type `image-multi-label`, if there are duplicate image files in a single directory, only the first file is uploaded and the others are skipped. In a multi-label dataset, it's expected that there are duplicate files across directories. If there's more than one image file with the same file contents in multiple directories, the file is loaded multiple times with a different label. - If the .zip file contains an image file that has a name containing spaces, the spaces are removed from the file name before the file is uploaded. For example, if you have a file called `sandy beach.jpg` the example name becomes `sandybeach.jpg`. - When specifying the URL for a .zip file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/mountainvsbeach.zip?dl=1` - If you create a dataset or upload images from a .zip file in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "2-0": "`id`", "2-1": "long", "2-2": "ID of the dataset.", "2-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "1.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "1.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset.", "3-3": "1.0", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "1.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "1.0", "8-0": "`totalLabels`", "8-1": "int", "8-2": "Total number of labels in the dataset.", "8-3": "1.0", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the dataset was last updated.", "10-3": "1.0", "6-0": "`statusMsg`", "6-1": "string", "6-3": "1.0", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "9-0": "`type`", "9-1": "string", "9-2": "Type of dataset data. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0" }, "cols": 4, "rows": 11 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset that the label belongs to.", "1-2": "ID of the label.", "2-2": "Name of the label.", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590a25aed47da32300b68bfd","excerpt":"Adds an example with the specified label to a dataset.","isReference":false,"next":{"pages":[],"description":""},"title":"Create an Example","category":"592329ee61ca710f003f4172","createdAt":"2016-09-23T22:45:33.433Z","sync_unique":"","updates":[],"__v":0,"api":{"url":"/vision/datasets/<DATASET_ID>/examples","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=77880132.jpg\" -F \"labelId=614\" -F \"data=@C:\\Mountains vs Beach\\Beaches\\77880132.jpg\" https://api.einstein.ai/v2/vision/datasets/57/examples","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"id\": 43887,\n  \"name\": \"77880132.jpg\",\n  \"location\": \"https://jBke4mtMuOjrCK3A04Q79O5TBySI2BC3zqi7...\",\n  \"createdAt\": \"2016-09-15T23:18:13.000+0000\",\n  \"label\": {\n    \"id\": 614,\n    \"datasetId\": 57,\n    \"name\": \"beach\",\n    \"numExamples\": 50\n  },\n  \"object\": \"example\"\n}","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":""},"hidden":false,"order":1,"slug":"create-an-example","user":"573b5a1f37fcf72000a2e683","body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"0-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Location of the local image file to upload.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`name`\",\n    \"1-0\": \"`labelId`\",\n    \"1-1\": \"long\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Name of the example. Maximum length is 180 characters.\",\n    \"1-2\": \"ID of the label to add to the example.\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\nKeep the following points in mind when creating examples.\n\n- After you add an example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins.\n\n- Add an example to only one label.\n\n- The maximum image file size is 1 MB.\n\n- We recommend a minimum of 100 examples per label.\n\n- The supported image file types are PNG, JPG, and JPEG.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the example.\",\n    \"1-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the example.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `example`.\",\n    \"5-3\": \"1.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the example was created.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`label`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Contains information about the label with which the example is associated.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`location`\",\n    \"3-1\": \"string\",\n    \"3-3\": \"1.0\",\n    \"3-2\": \"URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI.\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n##Label Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"0-2\": \"ID of the dataset that the example’s label belongs to.\",\n    \"1-2\": \"ID of the example’s label.\",\n    \"2-2\": \"Name of the example’s label.\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","link_external":false,"link_url":"","type":"post","version":"590a25abd47da32300b68bd5","githubsync":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","childrenPages":[]}

postCreate an Example

Adds an example with the specified label to a dataset.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Location of the local image file to upload.", "0-3": "1.0", "2-0": "`name`", "1-0": "`labelId`", "1-1": "long", "2-1": "string", "2-2": "Name of the example. Maximum length is 180 characters.", "1-2": "ID of the label to add to the example.", "1-3": "1.0", "2-3": "1.0" }, "cols": 4, "rows": 3 } [/block] Keep the following points in mind when creating examples. - After you add an example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins. - Add an example to only one label. - The maximum image file size is 1 MB. - We recommend a minimum of 100 examples per label. - The supported image file types are PNG, JPG, and JPEG. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "ID of the example.", "1-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the example.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the example was created.", "0-3": "1.0", "2-0": "`label`", "2-1": "object", "2-2": "Contains information about the label with which the example is associated.", "2-3": "1.0", "3-0": "`location`", "3-1": "string", "3-3": "1.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset that the example’s label belongs to.", "1-2": "ID of the example’s label.", "2-2": "Name of the example’s label.", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Location of the local image file to upload.", "0-3": "1.0", "2-0": "`name`", "1-0": "`labelId`", "1-1": "long", "2-1": "string", "2-2": "Name of the example. Maximum length is 180 characters.", "1-2": "ID of the label to add to the example.", "1-3": "1.0", "2-3": "1.0" }, "cols": 4, "rows": 3 } [/block] Keep the following points in mind when creating examples. - After you add an example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins. - Add an example to only one label. - The maximum image file size is 1 MB. - We recommend a minimum of 100 examples per label. - The supported image file types are PNG, JPG, and JPEG. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "ID of the example.", "1-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the example.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the example was created.", "0-3": "1.0", "2-0": "`label`", "2-1": "object", "2-2": "Contains information about the label with which the example is associated.", "2-3": "1.0", "3-0": "`location`", "3-1": "string", "3-3": "1.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset that the example’s label belongs to.", "1-2": "ID of the example’s label.", "2-2": "Name of the example’s label.", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590b8fc09c24472500ad443f","createdAt":"2017-05-04T20:32:00.696Z","excerpt":"Adds a feedback example to the dataset associated with the specified model. Available in Einstein Vision API version 2.0 and later.","slug":"create-a-feedback-example","sync_unique":"","updates":[],"api":{"method":"post","params":[],"results":{"codes":[{"code":"{\n  \"id\": 618168,\n  \"name\": \"alps.jpg\",\n  \"location\": \"https://HnpTxmdFb6%2BY1jwAqBtjkUMUj6qKQD0CTjsJ...\",\n  \"createdAt\": \"2017-05-04T20:52:02.000+0000\",\n  \"label\": {\n    \"id\": 3235,\n    \"datasetId\": 1000475,\n    \"name\": \"Mountains\",\n    \"numExamples\": 104\n  },\n  \"object\": \"example\"\n}","language":"json","status":200,"name":""},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"/vision/feedback","auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=3CMCRC572BD3OZTQSTTUU4733Y\" -F \"data=@c:\\data\\alps.jpg\" -F \"expectedLabel=Mountains\" https://api.einstein.ai/v2/vision/feedback"}]}},"githubsync":"","link_url":"","parentDoc":null,"type":"post","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","__v":0,"isReference":false,"next":{"pages":[],"description":""},"order":2,"project":"552d474ea86ee20d00780cd7","title":"Create a Feedback Example","body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"0-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Local image file to upload.\",\n    \"0-3\": \"2.0\",\n    \"3-0\": \"`name`\",\n    \"2-0\": \"`modelId`\",\n    \"2-1\": \"string\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Name of the example. Optional. Maximum length is 180 characters.\",\n    \"2-2\": \"ID of the model that misclassified the image. The feedback example is added to the dataset associated with this model.\",\n    \"2-3\": \"2.0\",\n    \"3-3\": \"2.0\",\n    \"1-0\": \"`expectedLabel`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Correct label for the example. Must be a label that exists in the dataset.\",\n    \"1-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nIf a model returns an incorrect prediction for an image, you can use that image to improve the model. You do this by adding the image to the dataset and retraining it to update the model. The misclassified images that you add to the dataset are known as feedback. Use this API to add a misclassified image with the correct label to the dataset from which the model was created. \n\nKeep the following points in mind when creating feedback examples.\n\n- You pass in a `modelId` parameter, but the example is added to the dataset from which the specified model was created.\n\n- If you omit the `name` request parameter, the API uses the file name for the example name.\n\n- Feedback examples must have unique names. If an example with the same name exists in the dataset, you'll receive an error. This rule applies whether the API uses the file name as the example name or whether you pass in an example name in the `name` parameter.\n\n- After you add a feedback example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins.\n\n- Add a feedback example to only one label per call.\n\n- The maximum image file size is 1 MB.\n\n- The supported image file types are PNG, JPG, and JPEG.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the feedback example.\",\n    \"1-3\": \"2.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the feedback example.\",\n    \"4-3\": \"2.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `example`.\",\n    \"5-3\": \"2.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the feedback example was created.\",\n    \"0-3\": \"2.0\",\n    \"2-0\": \"`label`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Contains information about the label that the feedback example is associated with.\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`location`\",\n    \"3-1\": \"string\",\n    \"3-3\": \"2.0\",\n    \"3-2\": \"URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI.\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n##Label Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"0-2\": \"ID of the dataset to which the feedback example’s label belongs.\",\n    \"1-2\": \"ID of the feedback example’s label.\",\n    \"2-2\": \"Name of the feedback example’s label.\",\n    \"0-3\": \"2.0\",\n    \"1-3\": \"2.0\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]","category":"592329ee61ca710f003f4172","hidden":false,"link_external":false,"childrenPages":[]}

postCreate a Feedback Example

Adds a feedback example to the dataset associated with the specified model. Available in Einstein Vision API version 2.0 and later.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Local image file to upload.", "0-3": "2.0", "3-0": "`name`", "2-0": "`modelId`", "2-1": "string", "3-1": "string", "3-2": "Name of the example. Optional. Maximum length is 180 characters.", "2-2": "ID of the model that misclassified the image. The feedback example is added to the dataset associated with this model.", "2-3": "2.0", "3-3": "2.0", "1-0": "`expectedLabel`", "1-1": "string", "1-2": "Correct label for the example. Must be a label that exists in the dataset.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] If a model returns an incorrect prediction for an image, you can use that image to improve the model. You do this by adding the image to the dataset and retraining it to update the model. The misclassified images that you add to the dataset are known as feedback. Use this API to add a misclassified image with the correct label to the dataset from which the model was created. Keep the following points in mind when creating feedback examples. - You pass in a `modelId` parameter, but the example is added to the dataset from which the specified model was created. - If you omit the `name` request parameter, the API uses the file name for the example name. - Feedback examples must have unique names. If an example with the same name exists in the dataset, you'll receive an error. This rule applies whether the API uses the file name as the example name or whether you pass in an example name in the `name` parameter. - After you add a feedback example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins. - Add a feedback example to only one label per call. - The maximum image file size is 1 MB. - The supported image file types are PNG, JPG, and JPEG. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "ID of the feedback example.", "1-3": "2.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the feedback example.", "4-3": "2.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "2.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the feedback example was created.", "0-3": "2.0", "2-0": "`label`", "2-1": "object", "2-2": "Contains information about the label that the feedback example is associated with.", "2-3": "2.0", "3-0": "`location`", "3-1": "string", "3-3": "2.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset to which the feedback example’s label belongs.", "1-2": "ID of the feedback example’s label.", "2-2": "Name of the feedback example’s label.", "0-3": "2.0", "1-3": "2.0", "2-3": "2.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Local image file to upload.", "0-3": "2.0", "3-0": "`name`", "2-0": "`modelId`", "2-1": "string", "3-1": "string", "3-2": "Name of the example. Optional. Maximum length is 180 characters.", "2-2": "ID of the model that misclassified the image. The feedback example is added to the dataset associated with this model.", "2-3": "2.0", "3-3": "2.0", "1-0": "`expectedLabel`", "1-1": "string", "1-2": "Correct label for the example. Must be a label that exists in the dataset.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] If a model returns an incorrect prediction for an image, you can use that image to improve the model. You do this by adding the image to the dataset and retraining it to update the model. The misclassified images that you add to the dataset are known as feedback. Use this API to add a misclassified image with the correct label to the dataset from which the model was created. Keep the following points in mind when creating feedback examples. - You pass in a `modelId` parameter, but the example is added to the dataset from which the specified model was created. - If you omit the `name` request parameter, the API uses the file name for the example name. - Feedback examples must have unique names. If an example with the same name exists in the dataset, you'll receive an error. This rule applies whether the API uses the file name as the example name or whether you pass in an example name in the `name` parameter. - After you add a feedback example, you can return information about it, along with a URL to access the image. The URL expires in 30 mins. - Add a feedback example to only one label per call. - The maximum image file size is 1 MB. - The supported image file types are PNG, JPG, and JPEG. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`id`", "1-1": "long", "1-2": "ID of the feedback example.", "1-3": "2.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the feedback example.", "4-3": "2.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "2.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the feedback example was created.", "0-3": "2.0", "2-0": "`label`", "2-1": "object", "2-2": "Contains information about the label that the feedback example is associated with.", "2-3": "2.0", "3-0": "`location`", "3-1": "string", "3-3": "2.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display images that were uploaded to a dataset in a UI." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "1-0": "`id`", "1-1": "long", "2-0": "`name`", "2-1": "string", "0-2": "ID of the dataset to which the feedback example’s label belongs.", "1-2": "ID of the feedback example’s label.", "2-2": "Name of the feedback example’s label.", "0-3": "2.0", "1-3": "2.0", "2-3": "2.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block]
{"_id":"590a25aed47da32300b68bff","link_external":false,"order":3,"sync_unique":"","user":"573b5a1f37fcf72000a2e683","excerpt":"Returns all the examples for the specified dataset. By default, returns examples created by uploading them from a .zip file.","body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`data`\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of `example` objects.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `list`.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Example Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the example was created.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the example.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`label`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Label that the example is associated with.\",\n    \"2-3\": \"1.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the example.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `example`.\",\n    \"5-3\": \"1.0\",\n    \"3-0\": \"`location`\",\n    \"3-1\": \"string\",\n    \"3-3\": \"1.0\",\n    \"3-2\": \"URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display in a UI images that were uploaded to a dataset.\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n##Label Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"0-2\": \"ID of the dataset that the label belongs to.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the label.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`name`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Name of the label.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`numExamples`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of examples that have the label.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##Page Through Examaples##\n\nBy default, this call returns 100 examples. If you want to page through the examples in a dataset, use the `offset` and `count` query parameters.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"0-0\": \"`count`\",\n    \"0-1\": \"int\",\n    \"0-2\": \"Number of examples to return. Optional.\",\n    \"1-0\": \"`offset`\",\n    \"1-1\": \"int\",\n    \"1-2\": \"Index of the example from which you want to start paging. Optional.\",\n    \"h-3\": \"Available Version\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\nThe following call shows how to page through examples using these query parameters. If you omit the `count` parameter, the API returns 100 examples. If you omit the offset parameter, paging starts at 0.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\"  \\\"https://api.einstein.ai/v2/vision/datasets/57/examples?offset=100&count=50\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\n###How Paging Works###\n\nTo page through all the examples in a dataset:\n\n1. Make the [Get a Dataset](doc:get-a-dataset) call to return the `totalExamples` value for the dataset.\n2. Make the [Get All Examples](doc:get-all-examples) call and pass in the `offset` and `count` values until you reach the end of the examples.\n\nFor example, let's say you have a dataset and you want to display information about the examples in a UI and show 50 at a time. The first call would have `offset=0` and `count=50`, the second call would have `offset=50` and `count=50`, and so on.\n\n##Return Specific Example Types##\n\nBy default, this call returns examples created by uploading images from a .zip file (using either POST or PUT). Use the `source` query parameter to return examples that were created in the dataset as feedback. The `source` query parameter is available in Einstein Vision API version 2.0 and later. Valid values for the `source` parameter are:\n\n- `all`—Return both upload and feedback examples.\n- `feedback`—Return examples that were created as feedback.\n- `upload`—Return examples that were created from uploading a .zip file.\n\n This cURL call returns only feedback examples.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]","category":"592329ee61ca710f003f4172","createdAt":"2016-09-25T00:04:55.609Z","next":{"pages":[],"description":""},"parentDoc":null,"type":"get","version":"590a25abd47da32300b68bd5","hidden":false,"isReference":false,"link_url":"","project":"552d474ea86ee20d00780cd7","slug":"get-all-examples","__v":0,"githubsync":"","title":"Get All Examples","updates":[],"api":{"auth":"required","examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/examples","language":"curl"}]},"method":"get","params":[],"results":{"codes":[{"name":"","code":"{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": 43888,\n      \"name\": \"659803277.jpg\",\n      \"location\": \"https://K3A04Q79O5TBySIZSeMIj%2BC3zqi7rOmeK...\",\n      \"createdAt\": \"2016-09-16T17:14:38.000+0000\",\n      \"label\": {\n        \"id\": 618,\n        \"datasetId\": 57,\n        \"name\": \"Beaches\",\n        \"numExamples\": 50\n    },\n      \"object\": \"example\"\n    },\n    {\n      \"id\": 43889,\n      \"name\": \"661860605.jpg\",\n      \"location\": \"https://jBke4mtMuOjrCK3A04Q79O5TBySI2BC3zqi7...\",\n      \"createdAt\": \"2016-09-16T17:14:42.000+0000\",\n      \"label\": {\n        \"id\": 618,\n        \"datasetId\": 57,\n        \"name\": \"Beaches\",\n        \"numExamples\": 50\n      },\n      \"object\": \"example\"\n    },\n    {\n      \"id\": 43890,\n      \"name\": \"660548647.jpg\",\n      \"location\": \"https://HKzY79n47nd%2F0%2FCem6PJBkUoyxMWVssCX...\",\n      \"createdAt\": \"2016-09-16T17:15:25.000+0000\",\n      \"label\": {\n        \"id\": 619,\n        \"datasetId\": 57,\n        \"name\": \"Mountains\",\n        \"numExamples\": 49\n      },\n      \"object\": \"example\"\n    },\n    {\n      \"id\": 43891,\n      \"name\": \"578339672.jpg\",\n      \"location\": \"https://LRlXQeRyTVDiujSzHTabcJ2FGGnuGhAvedvu0D...\",\n      \"createdAt\": \"2016-09-16T17:15:29.000+0000\",\n      \"label\": {\n        \"id\": 619,\n        \"datasetId\": 57,\n        \"name\": \"Mountains\",\n        \"numExamples\": 49\n      },\n      \"object\": \"example\"\n    }\n  ]\n}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"/vision/datasets/<DATASET_ID>/examples"},"childrenPages":[]}

getGet All Examples

Returns all the examples for the specified dataset. By default, returns examples created by uploading them from a .zip file.

##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `example` objects.", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Example Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the example was created.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the example.", "1-3": "1.0", "2-0": "`label`", "2-1": "object", "2-2": "Label that the example is associated with.", "2-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the example.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "1.0", "3-0": "`location`", "3-1": "string", "3-3": "1.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display in a UI images that were uploaded to a dataset." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##Page Through Examaples## By default, this call returns 100 examples. If you want to page through the examples in a dataset, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "`count`", "0-1": "int", "0-2": "Number of examples to return. Optional.", "1-0": "`offset`", "1-1": "int", "1-2": "Index of the example from which you want to start paging. Optional.", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] The following call shows how to page through examples using these query parameters. If you omit the `count` parameter, the API returns 100 examples. If you omit the offset parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets/57/examples?offset=100&count=50\"", "language": "curl" } ] } [/block] ###How Paging Works### To page through all the examples in a dataset: 1. Make the [Get a Dataset](doc:get-a-dataset) call to return the `totalExamples` value for the dataset. 2. Make the [Get All Examples](doc:get-all-examples) call and pass in the `offset` and `count` values until you reach the end of the examples. For example, let's say you have a dataset and you want to display information about the examples in a UI and show 50 at a time. The first call would have `offset=0` and `count=50`, the second call would have `offset=50` and `count=50`, and so on. ##Return Specific Example Types## By default, this call returns examples created by uploading images from a .zip file (using either POST or PUT). Use the `source` query parameter to return examples that were created in the dataset as feedback. The `source` query parameter is available in Einstein Vision API version 2.0 and later. Valid values for the `source` parameter are: - `all`—Return both upload and feedback examples. - `feedback`—Return examples that were created as feedback. - `upload`—Return examples that were created from uploading a .zip file. This cURL call returns only feedback examples. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback", "language": "curl" } ] } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `example` objects.", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Example Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the example was created.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the example.", "1-3": "1.0", "2-0": "`label`", "2-1": "object", "2-2": "Label that the example is associated with.", "2-3": "1.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the example.", "4-3": "1.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `example`.", "5-3": "1.0", "3-0": "`location`", "3-1": "string", "3-3": "1.0", "3-2": "URL of the image in the dataset. This is a temporary URL that expires in 30 minutes. This URL can be used to display in a UI images that were uploaded to a dataset." }, "cols": 4, "rows": 6 } [/block] ##Label Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetId`", "0-1": "long", "0-2": "ID of the dataset that the label belongs to.", "0-3": "1.0", "1-0": "`id`", "1-1": "long", "1-2": "ID of the label.", "1-3": "1.0", "2-0": "`name`", "2-1": "string", "2-2": "Name of the label.", "2-3": "1.0", "3-0": "`numExamples`", "3-1": "int", "3-2": "Number of examples that have the label.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##Page Through Examaples## By default, this call returns 100 examples. If you want to page through the examples in a dataset, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "0-0": "`count`", "0-1": "int", "0-2": "Number of examples to return. Optional.", "1-0": "`offset`", "1-1": "int", "1-2": "Index of the example from which you want to start paging. Optional.", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] The following call shows how to page through examples using these query parameters. If you omit the `count` parameter, the API returns 100 examples. If you omit the offset parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/datasets/57/examples?offset=100&count=50\"", "language": "curl" } ] } [/block] ###How Paging Works### To page through all the examples in a dataset: 1. Make the [Get a Dataset](doc:get-a-dataset) call to return the `totalExamples` value for the dataset. 2. Make the [Get All Examples](doc:get-all-examples) call and pass in the `offset` and `count` values until you reach the end of the examples. For example, let's say you have a dataset and you want to display information about the examples in a UI and show 50 at a time. The first call would have `offset=0` and `count=50`, the second call would have `offset=50` and `count=50`, and so on. ##Return Specific Example Types## By default, this call returns examples created by uploading images from a .zip file (using either POST or PUT). Use the `source` query parameter to return examples that were created in the dataset as feedback. The `source` query parameter is available in Einstein Vision API version 2.0 and later. Valid values for the `source` parameter are: - `all`—Return both upload and feedback examples. - `feedback`—Return examples that were created as feedback. - `upload`—Return examples that were created from uploading a .zip file. This cURL call returns only feedback examples. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/examples?source=feedback", "language": "curl" } ] } [/block]
{"_id":"590a25aed47da32300b68c01","order":0,"parentDoc":null,"title":"Train a Dataset","githubsync":"","isReference":false,"next":{"pages":[],"description":""},"updates":[],"user":"573b5a1f37fcf72000a2e683","__v":0,"api":{"examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach Mountain Model\" -F \"datasetId=57\" https://api.einstein.ai/v2/vision/train","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"name":"","code":"{\n  \"datasetId\": 57,\n  \"datasetVersionId\": 0,\n  \"name\": \"Beach and Mountain Model\",\n  \"status\": \"QUEUED\",\n  \"progress\": 0,\n  \"createdAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"updatedAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"learningRate\": 0.001,\n  \"epochs\": 3,\n  \"queuePosition\": 1,\n  \"object\": \"training\",\n  \"modelId\": \"7JXCXTRXTMNLJCEF2DR5CJ46QU\",\n  \"trainParams\": null,\n  \"trainStats\": null,\n  \"modelType\": \"image\"\n}","language":"json","status":200},{"name":"","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","language":"json","status":400}]},"settings":"","url":"/vision/train","auth":"required"},"excerpt":"Trains a dataset and creates a model.","version":"590a25abd47da32300b68bd5","body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`datasetId`\",\n    \"0-1\": \"long\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"ID of the dataset to train.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`learningRate`\",\n    \"1-0\": \"`epochs`\",\n    \"1-1\": \"int\",\n    \"2-1\": \"float\",\n    \"2-2\": \"Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.\",\n    \"1-2\": \"Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`name`\",\n    \"3-2\": \"Name of the model. Maximum length is 180 characters.\",\n    \"3-1\": \"string\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`trainParams`\",\n    \"4-1\": \"object\",\n    \"4-3\": \"1.0\",\n    \"4-2\": \"JSON that contains parameters that specify how the model is created. Optional. Valid values:\\n- `{\\\"trainSplitRatio\\\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\\n\\n- `{\\\"withFeedback\\\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\\n\\n- `{\\\"withGlobalDatasetId\\\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later.\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\nIf you’re unsure which values to set for the `epochs` and `learningRate` parameters, we recommend that you omit them and use the defaults.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`datasetId`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the dataset trained to create the model.\",\n    \"1-3\": \"1.0\",\n    \"7-0\": \"`name`\",\n    \"7-1\": \"string\",\n    \"7-2\": \"Name of the model.\",\n    \"7-3\": \"1.0\",\n    \"8-0\": \"`object`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Object returned; in this case, `training`.\",\n    \"8-3\": \"1.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"1.0\",\n    \"5-0\": \"`modelId`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"ID of the model. Contains letters and numbers.\",\n    \"5-3\": \"1.0\",\n    \"3-0\": \"`epochs`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of epochs used during training.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`learningRate`\",\n    \"4-1\": \"float\",\n    \"4-2\": \"Learning rate used during training.\",\n    \"4-3\": \"1.0\",\n    \"9-0\": \"`progress`\",\n    \"9-1\": \"int\",\n    \"9-2\": \"How far the training job has progressed. Values are between 0–1.\",\n    \"9-3\": \"1.0\",\n    \"10-0\": \"`queuePosition`\",\n    \"10-1\": \"int\",\n    \"10-2\": \"Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.\",\n    \"10-3\": \"1.0\",\n    \"11-0\": \"`status`\",\n    \"11-1\": \"string\",\n    \"11-2\": \"Status of the training job. Valid values are:\\n- `QUEUED`—The training job is in the queue.\\n- `RUNNING`—The training job is running.\\n- `SUCCEEDED`—The training job succeeded, and the model was created.\\n- `FAILED`—The training job failed.\",\n    \"14-0\": \"`updatedAt`\",\n    \"14-1\": \"date\",\n    \"14-2\": \"Date and time that the model was last updated.\",\n    \"11-3\": \"1.0\",\n    \"14-3\": \"1.0\",\n    \"2-0\": \"`datasetVersionId`\",\n    \"2-1\": \"int\",\n    \"2-2\": \"N/A\",\n    \"2-3\": \"1.0\",\n    \"12-0\": \"`trainParams`\",\n    \"12-1\": \"object\",\n    \"12-2\": \"Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\\\"trainParams\\\": {\\\"trainSplitRatio\\\": 0.7}`\",\n    \"12-3\": \"1.0\",\n    \"13-0\": \"`trainStats`\",\n    \"13-1\": \"object\",\n    \"13-2\": \"Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.\",\n    \"13-3\": \"1.0\",\n    \"6-0\": \"`modelType`\",\n    \"6-1\": \"string\",\n    \"6-3\": \"1.0\",\n    \"6-2\": \"Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\"\n  },\n  \"cols\": 4,\n  \"rows\": 15\n}\n[/block]\nThis cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=Beach Mountain Model\\\" -F \\\"datasetId=57\\\" -F \\\"trainParams={\\\\\\\"trainSplitRatio\\\\\\\":0.7}\\\" https://api.einstein.ai/v2/vision/train\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nYou can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{\"withFeedback\" : true, \"trainSplitRatio\" : 0.7}`.\n\nIf you want to train a dataset and update an existing model, see [Retrain a Dataset](doc:retrain-a-dataset).","sync_unique":"","link_external":false,"link_url":"","project":"552d474ea86ee20d00780cd7","slug":"train-a-dataset","type":"post","category":"59232ab3a145090f00dfa397","createdAt":"2016-09-25T00:18:41.425Z","hidden":false,"childrenPages":[]}

postTrain a Dataset

Trains a dataset and creates a model.

##Request Parameters## [block:parameters] { "data": { "0-0": "`datasetId`", "0-1": "long", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the dataset to train.", "0-3": "1.0", "2-0": "`learningRate`", "1-0": "`epochs`", "1-1": "int", "2-1": "float", "2-2": "Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.", "1-2": "Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.", "1-3": "1.0", "2-3": "1.0", "3-0": "`name`", "3-2": "Name of the model. Maximum length is 180 characters.", "3-1": "string", "3-3": "1.0", "4-0": "`trainParams`", "4-1": "object", "4-3": "1.0", "4-2": "JSON that contains parameters that specify how the model is created. Optional. Valid values:\n- `{\"trainSplitRatio\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\n\n- `{\"withFeedback\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\n\n- `{\"withGlobalDatasetId\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 5 } [/block] If you’re unsure which values to set for the `epochs` and `learningRate` parameters, we recommend that you omit them and use the defaults. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "7-0": "`name`", "7-1": "string", "7-2": "Name of the model.", "7-3": "1.0", "8-0": "`object`", "8-1": "string", "8-2": "Object returned; in this case, `training`.", "8-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "5-0": "`modelId`", "5-1": "string", "5-2": "ID of the model. Contains letters and numbers.", "5-3": "1.0", "3-0": "`epochs`", "3-1": "int", "3-2": "Number of epochs used during training.", "3-3": "1.0", "4-0": "`learningRate`", "4-1": "float", "4-2": "Learning rate used during training.", "4-3": "1.0", "9-0": "`progress`", "9-1": "int", "9-2": "How far the training job has progressed. Values are between 0–1.", "9-3": "1.0", "10-0": "`queuePosition`", "10-1": "int", "10-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "10-3": "1.0", "11-0": "`status`", "11-1": "string", "11-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and the model was created.\n- `FAILED`—The training job failed.", "14-0": "`updatedAt`", "14-1": "date", "14-2": "Date and time that the model was last updated.", "11-3": "1.0", "14-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "12-0": "`trainParams`", "12-1": "object", "12-2": "Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\"trainParams\": {\"trainSplitRatio\": 0.7}`", "12-3": "1.0", "13-0": "`trainStats`", "13-1": "object", "13-2": "Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.", "13-3": "1.0", "6-0": "`modelType`", "6-1": "string", "6-3": "1.0", "6-2": "Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 15 } [/block] This cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach Mountain Model\" -F \"datasetId=57\" -F \"trainParams={\\\"trainSplitRatio\\\":0.7}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] You can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{"withFeedback" : true, "trainSplitRatio" : 0.7}`. If you want to train a dataset and update an existing model, see [Retrain a Dataset](doc:retrain-a-dataset).

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`datasetId`", "0-1": "long", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the dataset to train.", "0-3": "1.0", "2-0": "`learningRate`", "1-0": "`epochs`", "1-1": "int", "2-1": "float", "2-2": "Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.", "1-2": "Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.", "1-3": "1.0", "2-3": "1.0", "3-0": "`name`", "3-2": "Name of the model. Maximum length is 180 characters.", "3-1": "string", "3-3": "1.0", "4-0": "`trainParams`", "4-1": "object", "4-3": "1.0", "4-2": "JSON that contains parameters that specify how the model is created. Optional. Valid values:\n- `{\"trainSplitRatio\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\n\n- `{\"withFeedback\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\n\n- `{\"withGlobalDatasetId\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 5 } [/block] If you’re unsure which values to set for the `epochs` and `learningRate` parameters, we recommend that you omit them and use the defaults. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "7-0": "`name`", "7-1": "string", "7-2": "Name of the model.", "7-3": "1.0", "8-0": "`object`", "8-1": "string", "8-2": "Object returned; in this case, `training`.", "8-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "5-0": "`modelId`", "5-1": "string", "5-2": "ID of the model. Contains letters and numbers.", "5-3": "1.0", "3-0": "`epochs`", "3-1": "int", "3-2": "Number of epochs used during training.", "3-3": "1.0", "4-0": "`learningRate`", "4-1": "float", "4-2": "Learning rate used during training.", "4-3": "1.0", "9-0": "`progress`", "9-1": "int", "9-2": "How far the training job has progressed. Values are between 0–1.", "9-3": "1.0", "10-0": "`queuePosition`", "10-1": "int", "10-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "10-3": "1.0", "11-0": "`status`", "11-1": "string", "11-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and the model was created.\n- `FAILED`—The training job failed.", "14-0": "`updatedAt`", "14-1": "date", "14-2": "Date and time that the model was last updated.", "11-3": "1.0", "14-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "12-0": "`trainParams`", "12-1": "object", "12-2": "Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\"trainParams\": {\"trainSplitRatio\": 0.7}`", "12-3": "1.0", "13-0": "`trainStats`", "13-1": "object", "13-2": "Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.", "13-3": "1.0", "6-0": "`modelType`", "6-1": "string", "6-3": "1.0", "6-2": "Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 15 } [/block] This cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beach Mountain Model\" -F \"datasetId=57\" -F \"trainParams={\\\"trainSplitRatio\\\":0.7}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] You can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{"withFeedback" : true, "trainSplitRatio" : 0.7}`. If you want to train a dataset and update an existing model, see [Retrain a Dataset](doc:retrain-a-dataset).
{"_id":"590cc9e944c6820f003cd9b3","link_url":"","slug":"retrain-a-dataset","category":"59232ab3a145090f00dfa397","createdAt":"2017-05-05T18:52:25.287Z","excerpt":"Retrains a dataset and updates a model. Use this API call when you want to update a model and keep the model ID instead of creating a new model. Available in Einstein Vision API version 2.0 and later.","githubsync":"","body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`learningRate`\",\n    \"0-0\": \"`epochs`\",\n    \"0-1\": \"int\",\n    \"1-1\": \"float\",\n    \"1-2\": \"Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.\",\n    \"0-2\": \"Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.\",\n    \"0-3\": \"2.0\",\n    \"1-3\": \"2.0\",\n    \"3-0\": \"`trainParams`\",\n    \"3-1\": \"object\",\n    \"3-3\": \"2.0\",\n    \"3-2\": \"JSON that contains parameters that specify how the model is created. Optional. Valid values:\\n- `{\\\"trainSplitRatio\\\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\\n\\n- `{\\\"withFeedback\\\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\\n\\n- `{\\\"withGlobalDatasetId\\\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later.\",\n    \"2-0\": \"`modelId`\",\n    \"2-1\": \"string\",\n    \"2-3\": \"2.0\",\n    \"2-2\": \"ID of the model to be updated from the training.\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nThis call retrains the dataset associated with model you specify in the request parameters. Use this call to retrain a dataset and update the model after new examples are added to a dataset or after feedback examples are added to a dataset. To find out the values specified in the `trainParams` parameter when the model was trained, such as `withFeedback` or `withGlobalDatasetId`, see [Get Training Status](doc:get-training-status).\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`datasetId`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the dataset trained to create the model.\",\n    \"1-3\": \"2.0\",\n    \"7-0\": \"`name`\",\n    \"7-1\": \"string\",\n    \"7-2\": \"Name of the model.\",\n    \"7-3\": \"2.0\",\n    \"8-0\": \"`object`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Object returned; in this case, `training`.\",\n    \"8-3\": \"2.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"2.0\",\n    \"5-0\": \"`modelId`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"ID of the model. Contains letters and numbers.\",\n    \"5-3\": \"2.0\",\n    \"3-0\": \"`epochs`\",\n    \"3-1\": \"int\",\n    \"3-2\": \"Number of epochs used during training.\",\n    \"3-3\": \"2.0\",\n    \"4-0\": \"`learningRate`\",\n    \"4-1\": \"float\",\n    \"4-2\": \"Learning rate used during training.\",\n    \"4-3\": \"2.0\",\n    \"9-0\": \"`progress`\",\n    \"9-1\": \"int\",\n    \"9-2\": \"How far the training job has progressed. Values are between 0–1.\",\n    \"9-3\": \"2.0\",\n    \"10-0\": \"`queuePosition`\",\n    \"10-1\": \"int\",\n    \"10-2\": \"Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.\",\n    \"10-3\": \"2.0\",\n    \"11-0\": \"`status`\",\n    \"11-1\": \"string\",\n    \"11-2\": \"Status of the training job. Valid values are:\\n- `QUEUED`—The training job is in the queue.\\n- `RUNNING`—The training job is running.\\n- `SUCCEEDED`—The training job succeeded, and the model was created.\\n- `FAILED`—The training job failed.\",\n    \"14-0\": \"`updatedAt`\",\n    \"14-1\": \"date\",\n    \"14-2\": \"Date and time that the model was last updated.\",\n    \"11-3\": \"2.0\",\n    \"14-3\": \"2.0\",\n    \"2-0\": \"`datasetVersionId`\",\n    \"2-1\": \"int\",\n    \"2-2\": \"N/A\",\n    \"2-3\": \"2.0\",\n    \"12-0\": \"`trainParams`\",\n    \"12-1\": \"object\",\n    \"12-2\": \"Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\\\"trainParams\\\": {\\\"trainSplitRatio\\\": 0.7}`\",\n    \"12-3\": \"2.0\",\n    \"13-0\": \"`trainStats`\",\n    \"13-1\": \"object\",\n    \"13-2\": \"Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.\",\n    \"13-3\": \"2.0\",\n    \"6-0\": \"`modelType`\",\n    \"6-1\": \"string\",\n    \"6-3\": \"2.0\",\n    \"6-2\": \"Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\\n- `image`\\n- `image-multi-label`— Available in Einstein Vision API version 2.0 and later.\"\n  },\n  \"cols\": 4,\n  \"rows\": 15\n}\n[/block]\nThis cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=7JXCXTRXTMNLJCEF2DR5CJ46QU\\\" -F \\\"trainParams={\\\\\\\"trainSplitRatio\\\\\\\":0.7}\\\" https://api.einstein.ai/v2/vision/retrain\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nYou can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{\"withFeedback\" : true, \"trainSplitRatio\" : 0.7}`.","next":{"pages":[],"description":""},"updates":[],"hidden":false,"parentDoc":null,"sync_unique":"","title":"Retrain a Dataset","order":1,"project":"552d474ea86ee20d00780cd7","type":"post","user":"573b5a1f37fcf72000a2e683","__v":0,"api":{"auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=7JXCXTRXTMNLJCEF2DR5CJ46QU\"  https://api.einstein.ai/v2/vision/retrain"}]},"method":"post","params":[],"results":{"codes":[{"name":"","code":"{\n  \"datasetId\": 57,\n  \"datasetVersionId\": 0,\n  \"name\": \"Beach and Mountain Model\",\n  \"status\": \"QUEUED\",\n  \"progress\": 0,\n  \"createdAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"updatedAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"learningRate\": 0.001,\n  \"epochs\": 3,\n  \"queuePosition\": 1,\n  \"object\": \"training\",\n  \"modelId\": \"7JXCXTRXTMNLJCEF2DR5CJ46QU\",\n  \"trainParams\": null,\n  \"trainStats\": null,\n  \"modelType\": \"image\"\n}","language":"json","status":200},{"name":"","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","language":"json","status":400}]},"settings":"","url":"/vision/retrain"},"isReference":false,"link_external":false,"version":"590a25abd47da32300b68bd5","childrenPages":[]}

postRetrain a Dataset

Retrains a dataset and updates a model. Use this API call when you want to update a model and keep the model ID instead of creating a new model. Available in Einstein Vision API version 2.0 and later.

##Request Parameters## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`learningRate`", "0-0": "`epochs`", "0-1": "int", "1-1": "float", "1-2": "Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.", "0-2": "Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.", "0-3": "2.0", "1-3": "2.0", "3-0": "`trainParams`", "3-1": "object", "3-3": "2.0", "3-2": "JSON that contains parameters that specify how the model is created. Optional. Valid values:\n- `{\"trainSplitRatio\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\n\n- `{\"withFeedback\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\n\n- `{\"withGlobalDatasetId\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later.", "2-0": "`modelId`", "2-1": "string", "2-3": "2.0", "2-2": "ID of the model to be updated from the training." }, "cols": 4, "rows": 4 } [/block] This call retrains the dataset associated with model you specify in the request parameters. Use this call to retrain a dataset and update the model after new examples are added to a dataset or after feedback examples are added to a dataset. To find out the values specified in the `trainParams` parameter when the model was trained, such as `withFeedback` or `withGlobalDatasetId`, see [Get Training Status](doc:get-training-status). ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "2.0", "7-0": "`name`", "7-1": "string", "7-2": "Name of the model.", "7-3": "2.0", "8-0": "`object`", "8-1": "string", "8-2": "Object returned; in this case, `training`.", "8-3": "2.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "2.0", "5-0": "`modelId`", "5-1": "string", "5-2": "ID of the model. Contains letters and numbers.", "5-3": "2.0", "3-0": "`epochs`", "3-1": "int", "3-2": "Number of epochs used during training.", "3-3": "2.0", "4-0": "`learningRate`", "4-1": "float", "4-2": "Learning rate used during training.", "4-3": "2.0", "9-0": "`progress`", "9-1": "int", "9-2": "How far the training job has progressed. Values are between 0–1.", "9-3": "2.0", "10-0": "`queuePosition`", "10-1": "int", "10-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "10-3": "2.0", "11-0": "`status`", "11-1": "string", "11-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and the model was created.\n- `FAILED`—The training job failed.", "14-0": "`updatedAt`", "14-1": "date", "14-2": "Date and time that the model was last updated.", "11-3": "2.0", "14-3": "2.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "2.0", "12-0": "`trainParams`", "12-1": "object", "12-2": "Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\"trainParams\": {\"trainSplitRatio\": 0.7}`", "12-3": "2.0", "13-0": "`trainStats`", "13-1": "object", "13-2": "Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.", "13-3": "2.0", "6-0": "`modelType`", "6-1": "string", "6-3": "2.0", "6-2": "Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\n- `image`\n- `image-multi-label`— Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 15 } [/block] This cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=7JXCXTRXTMNLJCEF2DR5CJ46QU\" -F \"trainParams={\\\"trainSplitRatio\\\":0.7}\" https://api.einstein.ai/v2/vision/retrain", "language": "curl" } ] } [/block] You can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{"withFeedback" : true, "trainSplitRatio" : 0.7}`.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`learningRate`", "0-0": "`epochs`", "0-1": "int", "1-1": "float", "1-2": "Specifies how much the gradient affects the optimization of the model at each time step. Optional. Use this parameter to tune your model. Valid values are between 0.0001 and 0.01. If not specified, the default is 0.0001. We recommend keeping this value between 0.0001 and 0.001.", "0-2": "Number of training iterations for the neural network. Optional. Valid values are 1–1,000. If not specified, the default is calculated based on the dataset size. The larger the number, the longer the training takes to complete.", "0-3": "2.0", "1-3": "2.0", "3-0": "`trainParams`", "3-1": "object", "3-3": "2.0", "3-2": "JSON that contains parameters that specify how the model is created. Optional. Valid values:\n- `{\"trainSplitRatio\": 0.n}`—Lets you specify the ratio of data used to train the dataset and the data used to test the model. The default split ratio is 0.9; 90% of the data is used to train the dataset and create the model and 10% of the data is used to test the model. If you pass in a split ratio of 0.6, then 60% of the data is used to train the dataset and create the model and 40% of the data is used to test the model.\n\n- `{\"withFeedback\": true}`—Lets you specify that feedback examples are included in the data to be trained to create the model. If you omit this parameter, feedback examples aren't used in training. Available in Einstein Vision API version 2.0 and later.\n\n- `{\"withGlobalDatasetId\": <DATASET_ID>}`—Lets you specify that a global dataset is used in addition to the specified dataset to create the model. Available in Einstein Vision API version 2.0 and later.", "2-0": "`modelId`", "2-1": "string", "2-3": "2.0", "2-2": "ID of the model to be updated from the training." }, "cols": 4, "rows": 4 } [/block] This call retrains the dataset associated with model you specify in the request parameters. Use this call to retrain a dataset and update the model after new examples are added to a dataset or after feedback examples are added to a dataset. To find out the values specified in the `trainParams` parameter when the model was trained, such as `withFeedback` or `withGlobalDatasetId`, see [Get Training Status](doc:get-training-status). ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "2.0", "7-0": "`name`", "7-1": "string", "7-2": "Name of the model.", "7-3": "2.0", "8-0": "`object`", "8-1": "string", "8-2": "Object returned; in this case, `training`.", "8-3": "2.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "2.0", "5-0": "`modelId`", "5-1": "string", "5-2": "ID of the model. Contains letters and numbers.", "5-3": "2.0", "3-0": "`epochs`", "3-1": "int", "3-2": "Number of epochs used during training.", "3-3": "2.0", "4-0": "`learningRate`", "4-1": "float", "4-2": "Learning rate used during training.", "4-3": "2.0", "9-0": "`progress`", "9-1": "int", "9-2": "How far the training job has progressed. Values are between 0–1.", "9-3": "2.0", "10-0": "`queuePosition`", "10-1": "int", "10-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "10-3": "2.0", "11-0": "`status`", "11-1": "string", "11-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and the model was created.\n- `FAILED`—The training job failed.", "14-0": "`updatedAt`", "14-1": "date", "14-2": "Date and time that the model was last updated.", "11-3": "2.0", "14-3": "2.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "2.0", "12-0": "`trainParams`", "12-1": "object", "12-2": "Training parameters passed into the request. For example, if you sent in a split of 0.7, the response contains `\"trainParams\": {\"trainSplitRatio\": 0.7}`", "12-3": "2.0", "13-0": "`trainStats`", "13-1": "object", "13-2": "Returns null when you train a dataset. Training statistics are returned when the status is `SUCCEEDED` or `FAILED`.", "13-3": "2.0", "6-0": "`modelType`", "6-1": "string", "6-3": "2.0", "6-2": "Type of data from which the model was created. Inferred from the dataset `type`. Valid values are:\n- `image`\n- `image-multi-label`— Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 15 } [/block] This cURL command sends in the `trainParams` request parameter. This command has double quotes and escaped double quotes around `trainSplitRatio` to run on Windows. You might need to reformat it to run on another OS. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=7JXCXTRXTMNLJCEF2DR5CJ46QU\" -F \"trainParams={\\\"trainSplitRatio\\\":0.7}\" https://api.einstein.ai/v2/vision/retrain", "language": "curl" } ] } [/block] You can pass in multiple training parameters. For example, you specify `withFeedback` and `trainSplitRatio` using this JSON: `{"withFeedback" : true, "trainSplitRatio" : 0.7}`.
{"_id":"590a25aed47da32300b68c02","link_external":false,"next":{"pages":[],"description":""},"parentDoc":null,"sync_unique":"","__v":0,"createdAt":"2016-09-25T00:26:06.156Z","githubsync":"","user":"573b5a1f37fcf72000a2e683","isReference":false,"link_url":"","order":2,"title":"Get Training Status","api":{"params":[],"results":{"codes":[{"code":"{\n  \"datasetId\": 57,\n  \"datasetVersionId\": 0,\n  \"name\": \"Beach and Mountain Model\",\n  \"status\": \"SUCCEEDED\",\n  \"progress\": 1,\n  \"createdAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"updatedAt\": \"2016-09-16T18:03:21.000+0000\",\n  \"learningRate\": 0.001,\n  \"epochs\": 3,\n  \"object\": \"training\",\n  \"modelId\": \"7JXCXTRXTMNLJCEF2DR5CJ46QU\",\n  \"trainParams\": {\"trainSplitRatio\": 0.7},\n  \"trainStats\": {\n    \"labels\": 2,\n    \"examples\": 99,\n    \"totalTime\": \"00:01:35:171\",\n    \"trainingTime\": \"00:01:32:259\",\n    \"earlyStopping\": false,\n    \"lastEpochDone\": 3,\n    \"modelSaveTime\": \"00:00:02:667\",\n    \"testSplitSize\": 33,\n    \"trainSplitSize\": 66,\n    \"datasetLoadTime\": \"00:00:02:893\"\n  },\n  \"modelType\": \"image\"\n}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":"/vision/train/<MODEL_ID>","auth":"required","examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/train/7JXCXTRXTMNLJCEF2DR5CJ46QU","language":"curl"}]},"method":"get"},"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`datasetId`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the dataset trained to create the model.\",\n    \"1-3\": \"1.0\",\n    \"10-0\": \"`name`\",\n    \"10-1\": \"string\",\n    \"10-2\": \"Name of the model.\",\n    \"10-3\": \"1.0\",\n    \"11-0\": \"`object`\",\n    \"11-1\": \"string\",\n    \"11-2\": \"Object returned; in this case, `training`.\",\n    \"11-3\": \"1.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"1.0\",\n    \"8-0\": \"`modelId`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"ID of the model. Contains letters and numbers.\",\n    \"8-3\": \"1.0\",\n    \"4-0\": \"`epochs`\",\n    \"4-1\": \"int\",\n    \"4-2\": \"Number of epochs used during training.\",\n    \"4-3\": \"1.0\",\n    \"7-0\": \"`learningRate`\",\n    \"7-1\": \"float\",\n    \"7-2\": \"Learning rate used during training.\",\n    \"7-3\": \"1.0\",\n    \"12-0\": \"`progress`\",\n    \"12-1\": \"int\",\n    \"12-2\": \"How far the training job has progressed. Values are between 0–1.\",\n    \"12-3\": \"1.0\",\n    \"13-0\": \"`queuePosition`\",\n    \"13-1\": \"int\",\n    \"13-2\": \"Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.\",\n    \"13-3\": \"1.0\",\n    \"14-0\": \"`status`\",\n    \"14-1\": \"string\",\n    \"14-2\": \"Status of the training job. Valid values are:\\n- `QUEUED`—The training job is in the queue.\\n- `RUNNING`—The training job is running.\\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\\n- `FAILED`—The training job failed.\",\n    \"17-0\": \"`updatedAt`\",\n    \"17-1\": \"string\",\n    \"17-2\": \"Date and time that the model was last updated.\",\n    \"14-3\": \"1.0\",\n    \"17-3\": \"1.0\",\n    \"5-0\": \"`failureMsg`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Reason the dataset training failed. Returned only if the training status is `FAILED`.\",\n    \"5-3\": \"1.0\",\n    \"2-0\": \"`datasetVersionId`\",\n    \"2-1\": \"int\",\n    \"2-2\": \"N/A\",\n    \"2-3\": \"1.0\",\n    \"15-0\": \"`trainParams`\",\n    \"15-1\": \"string\",\n    \"15-2\": \"Training parameters passed into the request.\",\n    \"15-3\": \"1.0\",\n    \"16-0\": \"`trainStats`\",\n    \"16-1\": \"object\",\n    \"16-2\": \"Statistics about the training.\",\n    \"16-3\": \"1.0\",\n    \"9-0\": \"`modelType`\",\n    \"9-1\": \"string\",\n    \"9-2\": \"Type of data from which the model was created. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\",\n    \"9-3\": \"1.0\",\n    \"3-0\": \"`earlyStopping`\",\n    \"3-1\": \"boolean\",\n    \"3-3\": \"2.0\",\n    \"3-2\": \"Specifies whether the training process stopped before completing all the epochs. The training process stops before the specified number of epochs when the model has reached the optimal accuracy. The `lastEpochDone` value specifies the last training iteration.\",\n    \"6-0\": \"`lastEpochDone`\",\n    \"6-1\": \"int\",\n    \"6-2\": \"Last training iteration performed.\",\n    \"6-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 18\n}\n[/block]\n##TrainStats Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`datasetLoadTime`\",\n    \"1-0\": \"`examples`\",\n    \"2-0\": \"`labels`\",\n    \"3-0\": \"`lastEpochDone`\",\n    \"4-0\": \"`modelSaveTime`\",\n    \"5-0\": \"`testSplitSize`\",\n    \"6-0\": \"`totalTime`\",\n    \"7-0\": \"`trainingTime`\",\n    \"8-0\": \"`trainSplitSize`\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\",\n    \"3-3\": \"1.0\",\n    \"4-3\": \"1.0\",\n    \"5-3\": \"1.0\",\n    \"6-3\": \"1.0\",\n    \"7-3\": \"1.0\",\n    \"8-3\": \"1.0\",\n    \"1-1\": \"int\",\n    \"2-1\": \"int\",\n    \"1-2\": \"Total number of examples in the dataset from which the model was created.\",\n    \"2-2\": \"Total number of labels in the dataset from which the model was created.\",\n    \"3-1\": \"int\",\n    \"0-1\": \"string \\nin HH:MM:SS:SSS format\",\n    \"0-2\": \"Time it took to load the dataset to be trained.\",\n    \"4-1\": \"string \\nin HH:MM:SS:SSS format\",\n    \"6-1\": \"string \\nin HH:MM:SS:SSS format\",\n    \"5-1\": \"int\",\n    \"7-1\": \"string \\nin HH:MM:SS:SSS format\",\n    \"8-1\": \"int\",\n    \"3-2\": \"Number of the last training iteration that completed.\",\n    \"5-2\": \"Number of examples (from the dataset total number of examples) used to test the model. `testSplitSize` + `trainSplitSize` is equal to `examples`.\",\n    \"8-2\": \"Number of examples (from the dataset total number of examples) used to train the model. `trainSplitSize` + `testSplitSize` is equal to `examples`.\",\n    \"4-2\": \"Time it took to save the model.\",\n    \"6-2\": \"Total training time: `datasetLoadTime` + `trainingTime` + `modelSaveTime`\",\n    \"7-2\": \"Time it took to train the dataset to create the model.\"\n  },\n  \"cols\": 4,\n  \"rows\": 9\n}\n[/block]","hidden":false,"updates":[],"type":"get","version":"590a25abd47da32300b68bd5","category":"59232ab3a145090f00dfa397","excerpt":"Returns the status of a training job. Use the progress field to determine how far the training has progressed. When training completes successfully, the `status` is `SUCCEEDED` and the `progress` is `1`.","project":"552d474ea86ee20d00780cd7","slug":"get-training-status","childrenPages":[]}

getGet Training Status

Returns the status of a training job. Use the progress field to determine how far the training has progressed. When training completes successfully, the `status` is `SUCCEEDED` and the `progress` is `1`.

##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "10-0": "`name`", "10-1": "string", "10-2": "Name of the model.", "10-3": "1.0", "11-0": "`object`", "11-1": "string", "11-2": "Object returned; in this case, `training`.", "11-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "8-0": "`modelId`", "8-1": "string", "8-2": "ID of the model. Contains letters and numbers.", "8-3": "1.0", "4-0": "`epochs`", "4-1": "int", "4-2": "Number of epochs used during training.", "4-3": "1.0", "7-0": "`learningRate`", "7-1": "float", "7-2": "Learning rate used during training.", "7-3": "1.0", "12-0": "`progress`", "12-1": "int", "12-2": "How far the training job has progressed. Values are between 0–1.", "12-3": "1.0", "13-0": "`queuePosition`", "13-1": "int", "13-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "13-3": "1.0", "14-0": "`status`", "14-1": "string", "14-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\n- `FAILED`—The training job failed.", "17-0": "`updatedAt`", "17-1": "string", "17-2": "Date and time that the model was last updated.", "14-3": "1.0", "17-3": "1.0", "5-0": "`failureMsg`", "5-1": "string", "5-2": "Reason the dataset training failed. Returned only if the training status is `FAILED`.", "5-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "15-0": "`trainParams`", "15-1": "string", "15-2": "Training parameters passed into the request.", "15-3": "1.0", "16-0": "`trainStats`", "16-1": "object", "16-2": "Statistics about the training.", "16-3": "1.0", "9-0": "`modelType`", "9-1": "string", "9-2": "Type of data from which the model was created. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0", "3-0": "`earlyStopping`", "3-1": "boolean", "3-3": "2.0", "3-2": "Specifies whether the training process stopped before completing all the epochs. The training process stops before the specified number of epochs when the model has reached the optimal accuracy. The `lastEpochDone` value specifies the last training iteration.", "6-0": "`lastEpochDone`", "6-1": "int", "6-2": "Last training iteration performed.", "6-3": "2.0" }, "cols": 4, "rows": 18 } [/block] ##TrainStats Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetLoadTime`", "1-0": "`examples`", "2-0": "`labels`", "3-0": "`lastEpochDone`", "4-0": "`modelSaveTime`", "5-0": "`testSplitSize`", "6-0": "`totalTime`", "7-0": "`trainingTime`", "8-0": "`trainSplitSize`", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-3": "1.0", "4-3": "1.0", "5-3": "1.0", "6-3": "1.0", "7-3": "1.0", "8-3": "1.0", "1-1": "int", "2-1": "int", "1-2": "Total number of examples in the dataset from which the model was created.", "2-2": "Total number of labels in the dataset from which the model was created.", "3-1": "int", "0-1": "string \nin HH:MM:SS:SSS format", "0-2": "Time it took to load the dataset to be trained.", "4-1": "string \nin HH:MM:SS:SSS format", "6-1": "string \nin HH:MM:SS:SSS format", "5-1": "int", "7-1": "string \nin HH:MM:SS:SSS format", "8-1": "int", "3-2": "Number of the last training iteration that completed.", "5-2": "Number of examples (from the dataset total number of examples) used to test the model. `testSplitSize` + `trainSplitSize` is equal to `examples`.", "8-2": "Number of examples (from the dataset total number of examples) used to train the model. `trainSplitSize` + `testSplitSize` is equal to `examples`.", "4-2": "Time it took to save the model.", "6-2": "Total training time: `datasetLoadTime` + `trainingTime` + `modelSaveTime`", "7-2": "Time it took to train the dataset to create the model." }, "cols": 4, "rows": 9 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "10-0": "`name`", "10-1": "string", "10-2": "Name of the model.", "10-3": "1.0", "11-0": "`object`", "11-1": "string", "11-2": "Object returned; in this case, `training`.", "11-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "8-0": "`modelId`", "8-1": "string", "8-2": "ID of the model. Contains letters and numbers.", "8-3": "1.0", "4-0": "`epochs`", "4-1": "int", "4-2": "Number of epochs used during training.", "4-3": "1.0", "7-0": "`learningRate`", "7-1": "float", "7-2": "Learning rate used during training.", "7-3": "1.0", "12-0": "`progress`", "12-1": "int", "12-2": "How far the training job has progressed. Values are between 0–1.", "12-3": "1.0", "13-0": "`queuePosition`", "13-1": "int", "13-2": "Where the training job is in the queue. This field appears in the response only if the status is `QUEUED`.", "13-3": "1.0", "14-0": "`status`", "14-1": "string", "14-2": "Status of the training job. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\n- `FAILED`—The training job failed.", "17-0": "`updatedAt`", "17-1": "string", "17-2": "Date and time that the model was last updated.", "14-3": "1.0", "17-3": "1.0", "5-0": "`failureMsg`", "5-1": "string", "5-2": "Reason the dataset training failed. Returned only if the training status is `FAILED`.", "5-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "15-0": "`trainParams`", "15-1": "string", "15-2": "Training parameters passed into the request.", "15-3": "1.0", "16-0": "`trainStats`", "16-1": "object", "16-2": "Statistics about the training.", "16-3": "1.0", "9-0": "`modelType`", "9-1": "string", "9-2": "Type of data from which the model was created. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.", "9-3": "1.0", "3-0": "`earlyStopping`", "3-1": "boolean", "3-3": "2.0", "3-2": "Specifies whether the training process stopped before completing all the epochs. The training process stops before the specified number of epochs when the model has reached the optimal accuracy. The `lastEpochDone` value specifies the last training iteration.", "6-0": "`lastEpochDone`", "6-1": "int", "6-2": "Last training iteration performed.", "6-3": "2.0" }, "cols": 4, "rows": 18 } [/block] ##TrainStats Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`datasetLoadTime`", "1-0": "`examples`", "2-0": "`labels`", "3-0": "`lastEpochDone`", "4-0": "`modelSaveTime`", "5-0": "`testSplitSize`", "6-0": "`totalTime`", "7-0": "`trainingTime`", "8-0": "`trainSplitSize`", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "3-3": "1.0", "4-3": "1.0", "5-3": "1.0", "6-3": "1.0", "7-3": "1.0", "8-3": "1.0", "1-1": "int", "2-1": "int", "1-2": "Total number of examples in the dataset from which the model was created.", "2-2": "Total number of labels in the dataset from which the model was created.", "3-1": "int", "0-1": "string \nin HH:MM:SS:SSS format", "0-2": "Time it took to load the dataset to be trained.", "4-1": "string \nin HH:MM:SS:SSS format", "6-1": "string \nin HH:MM:SS:SSS format", "5-1": "int", "7-1": "string \nin HH:MM:SS:SSS format", "8-1": "int", "3-2": "Number of the last training iteration that completed.", "5-2": "Number of examples (from the dataset total number of examples) used to test the model. `testSplitSize` + `trainSplitSize` is equal to `examples`.", "8-2": "Number of examples (from the dataset total number of examples) used to train the model. `trainSplitSize` + `testSplitSize` is equal to `examples`.", "4-2": "Time it took to save the model.", "6-2": "Total training time: `datasetLoadTime` + `trainingTime` + `modelSaveTime`", "7-2": "Time it took to train the dataset to create the model." }, "cols": 4, "rows": 9 } [/block]
{"_id":"590a25aed47da32300b68c03","__v":0,"next":{"pages":[],"description":""},"order":0,"type":"get","user":"573b5a1f37fcf72000a2e683","githubsync":"","link_url":"","updates":[],"version":"590a25abd47da32300b68bd5","api":{"url":"/vision/models/<MODEL_ID>","auth":"required","examples":{"codes":[{"language":"curl","code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/7JXCXTRXTMNLJCEF2DR5CJ46QU"}]},"method":"get","params":[],"results":{"codes":[{"status":200,"name":"","code":"{\n  \"metricsData\": {\n    \"f1\": [\n      0.9090909090909092,\n      0.9411764705882352\n    ],\n    \"labels\": [\n      \"beach\",\n      \"mountain\"\n    ],\n    \"testAccuracy\": 0.9286,\n    \"trainingLoss\": 0.021,\n    \"confusionMatrix\": [\n      [\n        5,\n        0\n      ],\n      [\n        1,\n        8\n      ]\n    ],\n    \"trainingAccuracy\": 0.9941\n  },\n  \"createdAt\": \"2016-09-16T18:04:59.000+0000\",\n  \"id\": \"7JXCXTRXTMNLJCEF2DR5CJ46QU\",\n  \"object\": \"metrics\"\n}","language":"json"},{"name":"","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","language":"json","status":400}]},"settings":""},"category":"59232b0631efc40f00046ad1","createdAt":"2016-09-25T00:32:29.792Z","excerpt":"Returns the metrics for a model that has a `modelType` of `image`, such as the f1 score, accuracy, and confusion matrix. The combination of these metrics gives you a picture of model accuracy and how well the model will perform. This call returns the metrics for the last epoch in the training used to create the model. To see the metrics for each epoch, see [Get Model Learning Curve](doc:get-model-learning-curve).","parentDoc":null,"title":"Get Image Model Metrics","slug":"get-model-metrics","sync_unique":"","body":"The call that you make to get model metrics is always the same format, the response varies depending on the type of model for which you retrieve metrics.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"ID of the model. Contains letters and numbers.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`metricsData`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Model metrics values.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`object`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Object returned; in this case, `metrics`.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##MetricsData Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`confusionMatrix`\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`f1`\",\n    \"1-1\": \"array\",\n    \"1-2\": \"Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.\",\n    \"1-3\": \"1.0\",\n    \"3-0\": \"`testAccuracy`\",\n    \"3-1\": \"float\",\n    \"3-2\": \"Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`trainingAccuracy`\",\n    \"4-1\": \"float\",\n    \"4-2\": \"Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`trainingLoss`\",\n    \"5-1\": \"float\",\n    \"5-2\": \"Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.\",\n    \"5-3\": \"1.0\",\n    \"2-0\": \"`labels`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.\",\n    \"2-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\nUse the `labels` array and the `confusionMatrix` array to build the confusion matrix for a model. The labels in the array become the matrix rows and columns. Here's what the confusion matrix for the example results looks like.\n[block:parameters]\n{\n  \"data\": {\n    \"0-1\": \"5\",\n    \"0-2\": \"0\",\n    \"h-1\": \"beach\",\n    \"h-2\": \"mountain\",\n    \"1-0\": \"**mountain**\",\n    \"0-0\": \"**beach**\",\n    \"1-1\": \"1\",\n    \"1-2\": \"8\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]","hidden":false,"isReference":true,"link_external":false,"project":"552d474ea86ee20d00780cd7","childrenPages":[]}

getGet Image Model Metrics

Returns the metrics for a model that has a `modelType` of `image`, such as the f1 score, accuracy, and confusion matrix. The combination of these metrics gives you a picture of model accuracy and how well the model will perform. This call returns the metrics for the last epoch in the training used to create the model. To see the metrics for each epoch, see [Get Model Learning Curve](doc:get-model-learning-curve).

The call that you make to get model metrics is always the same format, the response varies depending on the type of model for which you retrieve metrics. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "1-0": "`id`", "1-1": "string", "1-2": "ID of the model. Contains letters and numbers.", "1-3": "1.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `metrics`.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrix`", "0-1": "array", "0-2": "Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.", "0-3": "1.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.", "1-3": "1.0", "3-0": "`testAccuracy`", "3-1": "float", "3-2": "Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.", "3-3": "1.0", "4-0": "`trainingAccuracy`", "4-1": "float", "4-2": "Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.", "4-3": "1.0", "5-0": "`trainingLoss`", "5-1": "float", "5-2": "Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.", "5-3": "1.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "1.0" }, "cols": 4, "rows": 6 } [/block] Use the `labels` array and the `confusionMatrix` array to build the confusion matrix for a model. The labels in the array become the matrix rows and columns. Here's what the confusion matrix for the example results looks like. [block:parameters] { "data": { "0-1": "5", "0-2": "0", "h-1": "beach", "h-2": "mountain", "1-0": "**mountain**", "0-0": "**beach**", "1-1": "1", "1-2": "8" }, "cols": 3, "rows": 2 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The call that you make to get model metrics is always the same format, the response varies depending on the type of model for which you retrieve metrics. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "1-0": "`id`", "1-1": "string", "1-2": "ID of the model. Contains letters and numbers.", "1-3": "1.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `metrics`.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrix`", "0-1": "array", "0-2": "Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.", "0-3": "1.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.", "1-3": "1.0", "3-0": "`testAccuracy`", "3-1": "float", "3-2": "Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.", "3-3": "1.0", "4-0": "`trainingAccuracy`", "4-1": "float", "4-2": "Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.", "4-3": "1.0", "5-0": "`trainingLoss`", "5-1": "float", "5-2": "Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.", "5-3": "1.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "1.0" }, "cols": 4, "rows": 6 } [/block] Use the `labels` array and the `confusionMatrix` array to build the confusion matrix for a model. The labels in the array become the matrix rows and columns. Here's what the confusion matrix for the example results looks like. [block:parameters] { "data": { "0-1": "5", "0-2": "0", "h-1": "beach", "h-2": "mountain", "1-0": "**mountain**", "0-0": "**beach**", "1-1": "1", "1-2": "8" }, "cols": 3, "rows": 2 } [/block]
{"_id":"592314af31efc40f00046841","__v":0,"api":{"settings":"","url":"/vision/models/<MODEL_ID>","auth":"required","examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/Q6QQF7T5P3SLVPN7E6QH5KZ76A","language":"curl"}]},"method":"get","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{\n    \"metricsData\": {\n        \"f1\": [\n            [\n                0.9690721649484536,\n                0.7692307692307692\n            ],\n            [\n                0.9761904761904764,\n                0.923076923076923\n            ],\n            [\n                0.989247311827957,\n                0.9411764705882352\n            ],\n            [\n                0.9565217391304348,\n                0.7777777777777777\n            ],\n            [\n                0.9777777777777776,\n                0.9\n            ],\n            [\n                1,\n                1\n            ]\n        ],\n        \"labels\": [\n            \"basketball-hoop\",\n            \"tennis-court\",\n            \"baseball-glove\",\n            \"tennis-racket\",\n            \"baseball-bat\",\n            \"tennis-ball\"\n        ],\n        \"testAccuracies\": [\n            0.9455,\n            0.9636,\n            0.9818,\n            0.9273,\n            0.9636,\n            1\n        ],\n        \"confusionMatrices\": {\n            \"tennis-ball\": [\n                [\n                    43,\n                    0\n                ],\n                [\n                    0,\n                    12\n                ]\n            ],\n            \"baseball-bat\": [\n                [\n                    44,\n                    2\n                ],\n                [\n                    0,\n                    9\n                ]\n            ],\n            \"tennis-court\": [\n                [\n                    41,\n                    2\n                ],\n                [\n                    0,\n                    12\n                ]\n            ],\n            \"tennis-racket\": [\n                [\n                    44,\n                    3\n                ],\n                [\n                    1,\n                    7\n                ]\n            ],\n            \"baseball-glove\": [\n                [\n                    46,\n                    1\n                ],\n                [\n                    0,\n                    8\n                ]\n            ],\n            \"basketball-hoop\": [\n                [\n                    47,\n                    2\n                ],\n                [\n                    1,\n                    5\n                ]\n            ]\n        },\n        \"trainingAccuracies\": [\n            0.8809,\n            0.9629,\n            0.96,\n            0.938,\n            0.9224,\n            0.9482\n        ]\n    },\n    \"createdAt\": \"2017-06-13T16:39:49.000+0000\",\n    \"id\": \"Q6QQF7T5P3SLVPN7E6QH5KZ76A\",\n    \"object\": \"metrics\"\n}"},{"status":400,"name":"","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","language":"json"}]}},"excerpt":"Returns the metrics for a model that has a `modelType` of `image-multi-label`, such as the f1 score, accuracy, and confusion matrix. The combination of these metrics gives you a picture of model accuracy and how well the model will perform. This call returns the metrics for the last epoch in the training used to create the model. To see the metrics for each epoch, see [Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve).\n\nMulti-label models are available in Einstein Vision API verison 2.0 and later.","link_external":false,"next":{"pages":[],"description":""},"title":"Get Multi-Label Model Metrics","version":"590a25abd47da32300b68bd5","body":"The call that you make to get model metrics is always the same format, but the response varies depending on the type of model for which you retrieve metrics.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"2.0\",\n    \"1-0\": \"`id`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"ID of the model. Contains letters and numbers.\",\n    \"1-3\": \"2.0\",\n    \"2-0\": \"`metricsData`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Model metrics values.\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`object`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Object returned; in this case, `metrics`.\",\n    \"3-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##MetricsData Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`confusionMatrices`\",\n    \"0-1\": \"object\",\n    \"0-2\": \"This object contains:\\n- A string for each label in the model.\\n- For each label, a two-element array.\\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\\n\\nUse this field to build a binary confusion matrix for each label in the model.\",\n    \"0-3\": \"2.0\",\n    \"1-0\": \"`f1`\",\n    \"1-1\": \"array\",\n    \"1-2\": \"Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.\",\n    \"1-3\": \"2.0\",\n    \"3-0\": \"`testAccuracies`\",\n    \"3-1\": \"array\",\n    \"3-2\": \"Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.\",\n    \"3-3\": \"2.0\",\n    \"4-0\": \"`trainingAccuracies`\",\n    \"4-1\": \"array\",\n    \"4-2\": \"Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the  `trainingAccuracies` array.\",\n    \"4-3\": \"2.0\",\n    \"2-0\": \"`labels`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.\",\n    \"2-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\nUse the `confusionMatrices` array to build a binary confusion matrix for each label in a model. Here's what the confusion matrices for the first three labels in the example results might look like.\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**tennis-ball**\",\n    \"h-1\": \"tennis-ball\",\n    \"h-2\": \"not tennis-ball\",\n    \"1-0\": \"**not tennis-ball**\",\n    \"0-1\": \"43\",\n    \"0-2\": \"0\",\n    \"1-1\": \"0\",\n    \"1-2\": \"12\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**baseball-bat**\",\n    \"1-0\": \"**not baseball-bat**\",\n    \"h-1\": \"baseball-bat\",\n    \"h-2\": \"not baseball-bat\",\n    \"0-1\": \"44\",\n    \"0-2\": \"2\",\n    \"1-1\": \"0\",\n    \"1-2\": \"9\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**tennis-court**\",\n    \"1-0\": \"**not tennis-court**\",\n    \"h-1\": \"tennis-court\",\n    \"h-2\": \"not tennis-court\",\n    \"0-1\": \"41\",\n    \"0-2\": \"2\",\n    \"1-1\": \"0\",\n    \"1-2\": \"12\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]","githubsync":"","hidden":false,"category":"59232b0631efc40f00046ad1","isReference":false,"link_url":"","type":"get","updates":[],"createdAt":"2017-05-22T16:41:19.729Z","order":1,"parentDoc":null,"project":"552d474ea86ee20d00780cd7","slug":"get-multi-label-model-metrics","sync_unique":"","user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

getGet Multi-Label Model Metrics

Returns the metrics for a model that has a `modelType` of `image-multi-label`, such as the f1 score, accuracy, and confusion matrix. The combination of these metrics gives you a picture of model accuracy and how well the model will perform. This call returns the metrics for the last epoch in the training used to create the model. To see the metrics for each epoch, see [Get Multi-Label Model Learning Curve](doc:get-multi-label-model-learning-curve). Multi-label models are available in Einstein Vision API verison 2.0 and later.

The call that you make to get model metrics is always the same format, but the response varies depending on the type of model for which you retrieve metrics. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "2.0", "1-0": "`id`", "1-1": "string", "1-2": "ID of the model. Contains letters and numbers.", "1-3": "2.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "2.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `metrics`.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrices`", "0-1": "object", "0-2": "This object contains:\n- A string for each label in the model.\n- For each label, a two-element array.\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\n\nUse this field to build a binary confusion matrix for each label in the model.", "0-3": "2.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.", "1-3": "2.0", "3-0": "`testAccuracies`", "3-1": "array", "3-2": "Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.", "3-3": "2.0", "4-0": "`trainingAccuracies`", "4-1": "array", "4-2": "Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the `trainingAccuracies` array.", "4-3": "2.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "2.0" }, "cols": 4, "rows": 5 } [/block] Use the `confusionMatrices` array to build a binary confusion matrix for each label in a model. Here's what the confusion matrices for the first three labels in the example results might look like. [block:parameters] { "data": { "0-0": "**tennis-ball**", "h-1": "tennis-ball", "h-2": "not tennis-ball", "1-0": "**not tennis-ball**", "0-1": "43", "0-2": "0", "1-1": "0", "1-2": "12" }, "cols": 3, "rows": 2 } [/block] [block:parameters] { "data": { "0-0": "**baseball-bat**", "1-0": "**not baseball-bat**", "h-1": "baseball-bat", "h-2": "not baseball-bat", "0-1": "44", "0-2": "2", "1-1": "0", "1-2": "9" }, "cols": 3, "rows": 2 } [/block] [block:parameters] { "data": { "0-0": "**tennis-court**", "1-0": "**not tennis-court**", "h-1": "tennis-court", "h-2": "not tennis-court", "0-1": "41", "0-2": "2", "1-1": "0", "1-2": "12" }, "cols": 3, "rows": 2 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The call that you make to get model metrics is always the same format, but the response varies depending on the type of model for which you retrieve metrics. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "2.0", "1-0": "`id`", "1-1": "string", "1-2": "ID of the model. Contains letters and numbers.", "1-3": "2.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "2.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `metrics`.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrices`", "0-1": "object", "0-2": "This object contains:\n- A string for each label in the model.\n- For each label, a two-element array.\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\n\nUse this field to build a binary confusion matrix for each label in the model.", "0-3": "2.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.", "1-3": "2.0", "3-0": "`testAccuracies`", "3-1": "array", "3-2": "Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.", "3-3": "2.0", "4-0": "`trainingAccuracies`", "4-1": "array", "4-2": "Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the `trainingAccuracies` array.", "4-3": "2.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "2.0" }, "cols": 4, "rows": 5 } [/block] Use the `confusionMatrices` array to build a binary confusion matrix for each label in a model. Here's what the confusion matrices for the first three labels in the example results might look like. [block:parameters] { "data": { "0-0": "**tennis-ball**", "h-1": "tennis-ball", "h-2": "not tennis-ball", "1-0": "**not tennis-ball**", "0-1": "43", "0-2": "0", "1-1": "0", "1-2": "12" }, "cols": 3, "rows": 2 } [/block] [block:parameters] { "data": { "0-0": "**baseball-bat**", "1-0": "**not baseball-bat**", "h-1": "baseball-bat", "h-2": "not baseball-bat", "0-1": "44", "0-2": "2", "1-1": "0", "1-2": "9" }, "cols": 3, "rows": 2 } [/block] [block:parameters] { "data": { "0-0": "**tennis-court**", "1-0": "**not tennis-court**", "h-1": "tennis-court", "h-2": "not tennis-court", "0-1": "41", "0-2": "2", "1-1": "0", "1-2": "12" }, "cols": 3, "rows": 2 } [/block]
{"_id":"590a25aed47da32300b68c04","api":{"examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/7JXCXTRXTMNLJCEF2DR5CJ46QU/lc","language":"curl"}]},"method":"get","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"// epochResults values for epoch 2 omitted for brevity\n{\n    \"object\": \"list\",\n    \"data\": [\n        {\n            \"epoch\": 1,\n            \"metricsData\": {\n                \"f1\": [\n                    0.7499999999999999,\n                    0.8333333333333333\n                ],\n                \"labels\": [\n                    \"Mountains\",\n                    \"Beaches\"\n                ],\n                \"testAccuracy\": 0.8,\n                \"trainingLoss\": 0.2573,\n                \"confusionMatrix\": [\n                    [\n                        3,\n                        2\n                    ],\n                    [\n                        0,\n                        5\n                    ]\n                ],\n                \"trainingAccuracy\": 0.8809\n            },\n            \"epochResults\": [\n                {\n                    \"exampleName\": \"601053842.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"578339672.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"549525751.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"521811667.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"479111308.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"155304150.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"566675649.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"175551857.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"459120189.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"109558771.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                }\n            ],\n            \"object\": \"learningcurve\"\n        },\n        {\n            \"epoch\": 2,\n            \"metricsData\": {\n                \"f1\": [\n                    0.7499999999999999,\n                    0.8333333333333333\n                ],\n                \"labels\": [\n                    \"Mountains\",\n                    \"Beaches\"\n                ],\n                \"testAccuracy\": 0.8,\n                \"trainingLoss\": 0.0531,\n                \"confusionMatrix\": [\n                    [\n                        3,\n                        2\n                    ],\n                    [\n                        0,\n                        5\n                    ]\n                ],\n                \"trainingAccuracy\": 0.9824\n            },\n            \"epochResults\": [],\n            \"object\": \"learningcurve\"\n        },\n        {\n            \"epoch\": 3,\n            \"metricsData\": {\n                \"f1\": [\n                    0.8000000000000002,\n                    0.8000000000000002\n                ],\n                \"labels\": [\n                    \"Mountains\",\n                    \"Beaches\"\n                ],\n                \"testAccuracy\": 0.8,\n                \"trainingLoss\": 0.0278,\n                \"confusionMatrix\": [\n                    [\n                        4,\n                        1\n                    ],\n                    [\n                        1,\n                        4\n                    ]\n                ],\n                \"trainingAccuracy\": 0.9893\n            },\n            \"epochResults\": [\n                {\n                    \"exampleName\": \"601053842.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"578339672.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"549525751.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"521811667.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"479111308.jpg-Mountains\",\n                    \"expectedLabel\": \"Mountains\",\n                    \"predictedLabel\": \"Mountains\"\n                },\n                {\n                    \"exampleName\": \"155304150.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"566675649.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"175551857.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"459120189.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Beaches\"\n                },\n                {\n                    \"exampleName\": \"109558771.jpg-Beaches\",\n                    \"expectedLabel\": \"Beaches\",\n                    \"predictedLabel\": \"Mountains\"\n                }\n            ],\n            \"object\": \"learningcurve\"\n        }\n    ]\n}"},{"language":"json","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","name":"","status":400}]},"settings":"","url":"/vision/models/<MODEL_ID>/lc","auth":"required"},"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of `learningcurve` objects.\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `list`.\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##LearningCurve Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`epoch`\",\n    \"0-1\": \"int\",\n    \"0-2\": \"Epoch to which the metrics correspond.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`epochResults`\",\n    \"1-1\": \"object\",\n    \"1-2\": \"Prediction results for the set of data used to test the model during training.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`metricsData`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Model metrics values.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`object`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Object returned; in this case, `learningcurve`.\",\n    \"3-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##MetricsData Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`confusionMatrix`\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`f1`\",\n    \"1-1\": \"array\",\n    \"1-2\": \"Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.\",\n    \"1-3\": \"1.0\",\n    \"3-0\": \"`testAccuracy`\",\n    \"3-1\": \"float\",\n    \"3-2\": \"Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`trainingAccuracy`\",\n    \"4-1\": \"float\",\n    \"4-2\": \"Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.\",\n    \"4-3\": \"1.0\",\n    \"5-0\": \"`trainingLoss`\",\n    \"5-1\": \"float\",\n    \"5-2\": \"Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.\",\n    \"5-3\": \"1.0\",\n    \"2-0\": \"`labels`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.\",\n    \"2-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n##EpochResults Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-3\": \"1.0\",\n    \"1-3\": \"1.0\",\n    \"2-3\": \"1.0\",\n    \"0-0\": \"`exampleName`\",\n    \"1-0\": \"`expectedLabel`\",\n    \"2-0\": \"`predictedLabel`\",\n    \"1-2\": \"Image label provided when the dataset (used to create the model) was created.\",\n    \"0-2\": \"Example name, followed by a hyphen, and the expected label. For example, `\\\"exampleName\\\": \\\"549525751.jpg-Mountains\\\"`.\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Label that the model predicted for the example\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\nYou can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. \n\nWhen you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on.\n\nWhen it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data).\n\nFor information about correlating the confusion matrix values and the labels, see [Get Model Metrics](doc:get-model-metrics).\n\n###Use the Epoch Results to Tune the Model###\n\nUse the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions.\n\n##Query Parameters##\n\nBy default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Available Version\",\n    \"0-2\": \"1.0\",\n    \"1-2\": \"1.0\",\n    \"0-0\": \"`count`\",\n    \"1-0\": \"`offset`\",\n    \"0-1\": \"Number of epochs to return. Optional.\",\n    \"1-1\": \"Index of the epoch from which you want to start paging. Optional.\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\nHere's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: BEARER <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\"  \\\"https://api.einstein.ai/v2/vision/models/7JXCXTRXTMNLJCEF2DR5CJ46QU/lc?offset=30&count=10\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nFor example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.","githubsync":"","hidden":false,"link_external":false,"updates":[],"user":"573b5a1f37fcf72000a2e683","excerpt":"Returns the metrics for each epoch in a model that has a `modelType` of `image`. These metrics show you the f1 score, accuracy, confusion matrix, test accuracy, and so on for each training iteration performed to create the model.","next":{"pages":[],"description":""},"order":2,"slug":"get-model-learning-curve","category":"59232b0631efc40f00046ad1","isReference":false,"link_url":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","sync_unique":"","title":"Get Image Model Learning Curve","__v":0,"createdAt":"2017-03-14T18:10:10.384Z","type":"get","version":"590a25abd47da32300b68bd5","childrenPages":[]}

getGet Image Model Learning Curve

Returns the metrics for each epoch in a model that has a `modelType` of `image`. These metrics show you the f1 score, accuracy, confusion matrix, test accuracy, and so on for each training iteration performed to create the model.

##Response Body## [block:parameters] { "data": { "0-0": "`data`", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-1": "array", "0-2": "Array of `learningcurve` objects.", "0-3": "1.0", "1-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`." }, "cols": 4, "rows": 2 } [/block] ##LearningCurve Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`epoch`", "0-1": "int", "0-2": "Epoch to which the metrics correspond.", "0-3": "1.0", "1-0": "`epochResults`", "1-1": "object", "1-2": "Prediction results for the set of data used to test the model during training.", "1-3": "1.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `learningcurve`.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrix`", "0-1": "array", "0-2": "Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.", "0-3": "1.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.", "1-3": "1.0", "3-0": "`testAccuracy`", "3-1": "float", "3-2": "Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.", "3-3": "1.0", "4-0": "`trainingAccuracy`", "4-1": "float", "4-2": "Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.", "4-3": "1.0", "5-0": "`trainingLoss`", "5-1": "float", "5-2": "Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.", "5-3": "1.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "1.0" }, "cols": 4, "rows": 6 } [/block] ##EpochResults Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "0-0": "`exampleName`", "1-0": "`expectedLabel`", "2-0": "`predictedLabel`", "1-2": "Image label provided when the dataset (used to create the model) was created.", "0-2": "Example name, followed by a hyphen, and the expected label. For example, `\"exampleName\": \"549525751.jpg-Mountains\"`.", "0-1": "string", "1-1": "string", "2-1": "string", "2-2": "Label that the model predicted for the example" }, "cols": 4, "rows": 3 } [/block] You can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. When you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on. When it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data). For information about correlating the confusion matrix values and the labels, see [Get Model Metrics](doc:get-model-metrics). ###Use the Epoch Results to Tune the Model### Use the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions. ##Query Parameters## By default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Description", "h-2": "Available Version", "0-2": "1.0", "1-2": "1.0", "0-0": "`count`", "1-0": "`offset`", "0-1": "Number of epochs to return. Optional.", "1-1": "Index of the epoch from which you want to start paging. Optional." }, "cols": 3, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: BEARER <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/models/7JXCXTRXTMNLJCEF2DR5CJ46QU/lc?offset=30&count=10\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "0-0": "`data`", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-1": "array", "0-2": "Array of `learningcurve` objects.", "0-3": "1.0", "1-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`." }, "cols": 4, "rows": 2 } [/block] ##LearningCurve Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`epoch`", "0-1": "int", "0-2": "Epoch to which the metrics correspond.", "0-3": "1.0", "1-0": "`epochResults`", "1-1": "object", "1-2": "Prediction results for the set of data used to test the model during training.", "1-3": "1.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "1.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `learningcurve`.", "3-3": "1.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrix`", "0-1": "array", "0-2": "Array of integers that contains the correct and incorrect classifications for each label in the dataset based on testing done during the training process.", "0-3": "1.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of floats that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the first f1 score in the `f1` array corresponds to the first label in the `labels` array.", "1-3": "1.0", "3-0": "`testAccuracy`", "3-1": "float", "3-2": "Accuracy of the test data. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported as `testAccuracy`.", "3-3": "1.0", "4-0": "`trainingAccuracy`", "4-1": "float", "4-2": "Accuracy of the training data. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported as `trainingAccuracy`.", "4-3": "1.0", "5-0": "`trainingLoss`", "5-1": "float", "5-2": "Summary of the errors made in predictions using the training and validation data. The lower the number value, the more accurate the model.", "5-3": "1.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "1.0" }, "cols": 4, "rows": 6 } [/block] ##EpochResults Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-3": "1.0", "1-3": "1.0", "2-3": "1.0", "0-0": "`exampleName`", "1-0": "`expectedLabel`", "2-0": "`predictedLabel`", "1-2": "Image label provided when the dataset (used to create the model) was created.", "0-2": "Example name, followed by a hyphen, and the expected label. For example, `\"exampleName\": \"549525751.jpg-Mountains\"`.", "0-1": "string", "1-1": "string", "2-1": "string", "2-2": "Label that the model predicted for the example" }, "cols": 4, "rows": 3 } [/block] You can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. When you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on. When it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data). For information about correlating the confusion matrix values and the labels, see [Get Model Metrics](doc:get-model-metrics). ###Use the Epoch Results to Tune the Model### Use the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions. ##Query Parameters## By default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Description", "h-2": "Available Version", "0-2": "1.0", "1-2": "1.0", "0-0": "`count`", "1-0": "`offset`", "0-1": "Number of epochs to return. Optional.", "1-1": "Index of the epoch from which you want to start paging. Optional." }, "cols": 3, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: BEARER <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/models/7JXCXTRXTMNLJCEF2DR5CJ46QU/lc?offset=30&count=10\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.
{"_id":"59232cefb90d7919007e746c","title":"Get Multi-Label Model Learning Curve","body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of `learningcurve` objects.\",\n    \"0-3\": \"2.0\",\n    \"1-3\": \"2.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `list`.\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##LearningCurve Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`epoch`\",\n    \"0-1\": \"int\",\n    \"0-2\": \"Epoch to which the metrics correspond.\",\n    \"0-3\": \"2.0\",\n    \"1-0\": \"`epochResults`\",\n    \"1-1\": \"object\",\n    \"1-2\": \"Prediction results for the set of data used to test the model during training.\",\n    \"1-3\": \"2.0\",\n    \"2-0\": \"`metricsData`\",\n    \"2-1\": \"object\",\n    \"2-2\": \"Model metrics values.\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`object`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Object returned; in this case, `learningcurve`.\",\n    \"3-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\n##MetricsData Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`confusionMatrices`\",\n    \"0-1\": \"object\",\n    \"0-2\": \"This object contains:\\n- A string for each label in the model.\\n- For each label, a two-element array.\\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\\n\\nUse this field to build a binary confusion matrix for each label in the model.\",\n    \"0-3\": \"2.0\",\n    \"1-0\": \"`f1`\",\n    \"1-1\": \"array\",\n    \"1-2\": \"Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.\",\n    \"1-3\": \"2.0\",\n    \"3-0\": \"`testAccuracies`\",\n    \"3-1\": \"array\",\n    \"3-2\": \"Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.\",\n    \"3-3\": \"2.0\",\n    \"4-0\": \"`trainingAccuracies`\",\n    \"4-1\": \"array\",\n    \"4-2\": \"Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the  `trainingAccuracies` array.\",\n    \"4-3\": \"2.0\",\n    \"2-0\": \"`labels`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.\",\n    \"2-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n##EpochResults Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-3\": \"2.0\",\n    \"1-3\": \"2.0\",\n    \"2-3\": \"2.0\",\n    \"0-0\": \"`exampleName`\",\n    \"1-0\": \"`expectedLabel`\",\n    \"2-0\": \"`predictedLabel`\",\n    \"1-2\": \"Image label provided when the dataset (used to create the model) was created.\",\n    \"0-2\": \"Example name, followed by a hyphen, and the expected label. For example, `\\\"exampleName\\\": \\\"006_0034.jpg-006.basketball\\\"`.\",\n    \"0-1\": \"string\",\n    \"1-1\": \"string\",\n    \"2-1\": \"string\",\n    \"2-2\": \"Label that the model predicted for the example\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\nYou can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. \n\nWhen you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on.\n\nWhen it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data).\n\nFor information about correlating the confusion matrix values and the labels, see [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics).\n\n###Use the Epoch Results to Tune the Model###\n\nUse the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions.\n\n##Query Parameters##\n\nBy default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Available Version\",\n    \"0-2\": \"1.0\",\n    \"1-2\": \"1.0\",\n    \"0-0\": \"`count`\",\n    \"1-0\": \"`offset`\",\n    \"0-1\": \"Number of epochs to return. Optional.\",\n    \"1-1\": \"Index of the epoch from which you want to start paging. Optional.\"\n  },\n  \"cols\": 3,\n  \"rows\": 2\n}\n[/block]\nHere's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\"  \\\"https://api.einstein.ai/v2/vision/models/7JPFL6UKMHUEJLHJ6FEX4YBV4U/lc?offset=30&count=10\\\"\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nFor example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.","excerpt":"Returns the metrics for each epoch in a model that has a `modelType` of `image-multi-label`. These metrics show you the f1 score, accuracy, confusion matrix, test accuracy, and so on for each training iteration performed to create the model.\n\nMulti-label models are available in Einstein Vision API verison 2.0 and later.","hidden":false,"order":3,"slug":"get-multi-label-model-learning-curve","user":"573b5a1f37fcf72000a2e683","category":"59232b0631efc40f00046ad1","isReference":false,"link_external":false,"next":{"pages":[],"description":""},"__v":0,"api":{"url":"/vision/models/<MODEL_ID>/lc","auth":"required","examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/models/7JPFL6UKMHUEJLHJ6FEX4YBV4U/lc","language":"curl"}]},"method":"get","params":[],"results":{"codes":[{"status":200,"language":"json","code":"// epoch 1 epochResults values abbreviated and epochs 2 and 3 abbreviated for brevity\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"epoch\": 1,\n      \"metricsData\": {\n        \"f1\": [\n          [\n            0.9111111111111112,\n            0.6\n          ],\n          [\n            0.9767441860465116,\n            0.9166666666666666\n          ],\n          [\n            0.989247311827957,\n            0.9411764705882352\n          ],\n          [\n            0.9333333333333332,\n            0.7000000000000001\n          ],\n          [\n            0.9662921348314606,\n            0.8571428571428571\n          ],\n          [\n            0.9647058823529412,\n            0.8799999999999999\n          ]\n        ],\n        \"labels\": [\n          \"basketball-hoop\",\n          \"tennis-court\",\n          \"baseball-glove\",\n          \"tennis-racket\",\n          \"baseball-bat\",\n          \"tennis-ball\"\n        ],\n        \"testAccuracies\": [\n          0.8545,\n          0.9636,\n          0.9818,\n          0.8909,\n          0.9455,\n          0.9455\n        ],\n        \"confusionMatrices\": {\n          \"tennis-ball\": [\n            [\n              41,\n              2\n            ],\n            [\n              1,\n              11\n            ]\n          ],\n          \"baseball-bat\": [\n            [\n              43,\n              3\n            ],\n            [\n              0,\n              9\n            ]\n          ],\n          \"tennis-court\": [\n            [\n              42,\n              1\n            ],\n            [\n              1,\n              11\n            ]\n          ],\n          \"tennis-racket\": [\n            [\n              42,\n              5\n            ],\n            [\n              1,\n              7\n            ]\n          ],\n          \"baseball-glove\": [\n            [\n              46,\n              1\n            ],\n            [\n              0,\n              8\n            ]\n          ],\n          \"basketball-hoop\": [\n            [\n              41,\n              8\n            ],\n            [\n              0,\n              6\n            ]\n          ]\n        },\n        \"trainingAccuracies\": [\n          0.6279,\n          0.7568,\n          0.8169,\n          0.6694,\n          0.7837,\n          0.7012\n        ]\n      },\n      \"epochResults\": {\n        \"216.tennis-ball\": [\n          {\n            \"exampleName\": \"006_0034.jpg-basketball\",\n            \"expectedLabel\": \"tennis-ball_negative\",\n            \"predictedLabel\": \"tennis-ball_negative\"\n          },\n          {\n            \"exampleName\": \"006_0010.jpg-basketball\",\n            \"expectedLabel\": \"tennis-ball_negative\",\n            \"predictedLabel\": \"tennis-ball_negative\"\n          },\n          {\n            \"exampleName\": \"006_0076.jpg-basketball\",\n            \"expectedLabel\": \"tennis-ball_negative\",\n            \"predictedLabel\": \"tennis-ball_negative\"\n          },\n          {\n            \"exampleName\": \"216_0085.jpg-tennis\",\n            \"expectedLabel\": \"tennis-ball_positive\",\n            \"predictedLabel\": \"tennis-ball_negative\"\n          },\n          {\n            \"exampleName\": \"216_0068.jpg-tennis\",\n            \"expectedLabel\": \"tennis-ball_positive\",\n            \"predictedLabel\": \"tennis-ball_positive\"\n          },\n          {\n            \"exampleName\": \"216_0030.jpg-tennis\",\n            \"expectedLabel\": \"tennis-ball_positive\",\n            \"predictedLabel\": \"tennis-ball_positive\"\n          }\n        ],\n        \"baseball-bat\": [],\n        \"tennis-court\": [],\n        \"tennis-racket\": [],\n        \"baseball-glove\": [],\n        \"basketball-hoop\": []\n      },\n      \"object\": \"learningcurve\"\n    },\n    {\n      \"epoch\": 2,\n      \"metricsData\": {},\n      \"epochResults\": {},\n      \"object\": \"learningcurve\"\n    },\n    {\n      \"epoch\": 3,\n      \"metricsData\": {},\n      \"epochResults\": {},\n      \"object\": \"learningcurve\"\n    }\n  ]\n}","name":""},{"status":400,"language":"json","code":"{\n  \"message\": \"Train job not yet completed successfully\"\n}","name":""}]},"settings":""},"sync_unique":"","updates":[],"type":"get","version":"590a25abd47da32300b68bd5","createdAt":"2017-05-22T18:24:47.785Z","githubsync":"","link_url":"","parentDoc":null,"project":"552d474ea86ee20d00780cd7","childrenPages":[]}

getGet Multi-Label Model Learning Curve

Returns the metrics for each epoch in a model that has a `modelType` of `image-multi-label`. These metrics show you the f1 score, accuracy, confusion matrix, test accuracy, and so on for each training iteration performed to create the model. Multi-label models are available in Einstein Vision API verison 2.0 and later.

##Response Body## [block:parameters] { "data": { "0-0": "`data`", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-1": "array", "0-2": "Array of `learningcurve` objects.", "0-3": "2.0", "1-3": "2.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`." }, "cols": 4, "rows": 2 } [/block] ##LearningCurve Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`epoch`", "0-1": "int", "0-2": "Epoch to which the metrics correspond.", "0-3": "2.0", "1-0": "`epochResults`", "1-1": "object", "1-2": "Prediction results for the set of data used to test the model during training.", "1-3": "2.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "2.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `learningcurve`.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrices`", "0-1": "object", "0-2": "This object contains:\n- A string for each label in the model.\n- For each label, a two-element array.\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\n\nUse this field to build a binary confusion matrix for each label in the model.", "0-3": "2.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.", "1-3": "2.0", "3-0": "`testAccuracies`", "3-1": "array", "3-2": "Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.", "3-3": "2.0", "4-0": "`trainingAccuracies`", "4-1": "array", "4-2": "Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the `trainingAccuracies` array.", "4-3": "2.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "2.0" }, "cols": 4, "rows": 5 } [/block] ##EpochResults Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-3": "2.0", "1-3": "2.0", "2-3": "2.0", "0-0": "`exampleName`", "1-0": "`expectedLabel`", "2-0": "`predictedLabel`", "1-2": "Image label provided when the dataset (used to create the model) was created.", "0-2": "Example name, followed by a hyphen, and the expected label. For example, `\"exampleName\": \"006_0034.jpg-006.basketball\"`.", "0-1": "string", "1-1": "string", "2-1": "string", "2-2": "Label that the model predicted for the example" }, "cols": 4, "rows": 3 } [/block] You can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. When you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on. When it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data). For information about correlating the confusion matrix values and the labels, see [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics). ###Use the Epoch Results to Tune the Model### Use the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions. ##Query Parameters## By default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Description", "h-2": "Available Version", "0-2": "1.0", "1-2": "1.0", "0-0": "`count`", "1-0": "`offset`", "0-1": "Number of epochs to return. Optional.", "1-1": "Index of the epoch from which you want to start paging. Optional." }, "cols": 3, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/models/7JPFL6UKMHUEJLHJ6FEX4YBV4U/lc?offset=30&count=10\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "0-0": "`data`", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-1": "array", "0-2": "Array of `learningcurve` objects.", "0-3": "2.0", "1-3": "2.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `list`." }, "cols": 4, "rows": 2 } [/block] ##LearningCurve Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`epoch`", "0-1": "int", "0-2": "Epoch to which the metrics correspond.", "0-3": "2.0", "1-0": "`epochResults`", "1-1": "object", "1-2": "Prediction results for the set of data used to test the model during training.", "1-3": "2.0", "2-0": "`metricsData`", "2-1": "object", "2-2": "Model metrics values.", "2-3": "2.0", "3-0": "`object`", "3-1": "string", "3-2": "Object returned; in this case, `learningcurve`.", "3-3": "2.0" }, "cols": 4, "rows": 4 } [/block] ##MetricsData Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`confusionMatrices`", "0-1": "object", "0-2": "This object contains:\n- A string for each label in the model.\n- For each label, a two-element array.\n- For each element in the array, a two-element integer array that contains the confusion matrix values. These values are the correct and incorrect classifications for the label based on testing done during the training process.\n\nUse this field to build a binary confusion matrix for each label in the model.", "0-3": "2.0", "1-0": "`f1`", "1-1": "array", "1-2": "Array of float arrays that contains the weighted average of precision and recall for each label in the dataset. The corresponding label for each value in this array can be found in the `labels` array. For example, the f1 score in the first array corresponds to the first label in the `labels` array.", "1-3": "2.0", "3-0": "`testAccuracies`", "3-1": "array", "3-2": "Array of floats that specify the accuracy of the test data for each label. From your initial dataset, by default, 10% of the data is set aside and isn't used during training to create the model. This 10% is then sent to the model for prediction. How often the correct prediction is made with this 10% is reported for each label in the `testAccuracies` array.", "3-3": "2.0", "4-0": "`trainingAccuracies`", "4-1": "array", "4-2": "Array of floats that specify the accuracy of the training data for each label. By default, 90% of the data from your dataset is left after the test accuracy set is set aside. This 90% is then sent to the model for prediction. How often the correct prediction is made with this 90% is reported for each label in the `trainingAccuracies` array.", "4-3": "2.0", "2-0": "`labels`", "2-1": "array", "2-2": "Array of strings that contains the dataset labels. These labels correspond to the values in the `f1` array and the `confusionMatrix` array.", "2-3": "2.0" }, "cols": 4, "rows": 5 } [/block] ##EpochResults Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-3": "2.0", "1-3": "2.0", "2-3": "2.0", "0-0": "`exampleName`", "1-0": "`expectedLabel`", "2-0": "`predictedLabel`", "1-2": "Image label provided when the dataset (used to create the model) was created.", "0-2": "Example name, followed by a hyphen, and the expected label. For example, `\"exampleName\": \"006_0034.jpg-006.basketball\"`.", "0-1": "string", "1-1": "string", "2-1": "string", "2-2": "Label that the model predicted for the example" }, "cols": 4, "rows": 3 } [/block] You can use the learning curve data to see how a model performed in each training iteration. This information helps you tune your model and identify the optimal number of epochs to specify when you train a dataset. When you train a dataset, you can specify the number of epochs used to create the model, or if you don't specify any epochs, the training call selects a number of epochs based on the dataset data. In each epoch, machine learning happens behind the scenes to create the model. Information from an epoch is passed into the next epoch, from that epoch to the next, and so on. When it comes to epochs, more isn't always better. For example, you could train a dataset and specify five epochs. Using the learning curve data for the resulting model, you might see that the most accurate results for that dataset are in the third epoch. You can use the learning curve data to see if your model is overfit (model predicts accurately with training data but not unseen data) or underfit (model doesn't predict accurately with training data or unseen data). For information about correlating the confusion matrix values and the labels, see [Get Multi-Label Model Metrics](doc:get-multi-label-model-metrics). ###Use the Epoch Results to Tune the Model### Use the `epochResults` values to better understand the `testAccuracy` number the model returns for each epoch. For example, if `testAccuracy` is 1, then each example in the set of test examples was predicted correctly. But if `testAccuracy` is .5, then you can look at the `epochResults` to see for which test data the model returned incorrect predictions. ##Query Parameters## By default, this call returns 25 epochs. To page through the epochs for a model, use the `offset` and `count` query parameters. [block:parameters] { "data": { "h-0": "Name", "h-1": "Description", "h-2": "Available Version", "0-2": "1.0", "1-2": "1.0", "0-0": "`count`", "1-0": "`offset`", "0-1": "Number of epochs to return. Optional.", "1-1": "Index of the epoch from which you want to start paging. Optional." }, "cols": 3, "rows": 2 } [/block] Here's an example of these query parameters. If you omit the `count` parameter, the API returns 25 epochs. If you omit the `offset` parameter, paging starts at 0. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" \"https://api.einstein.ai/v2/vision/models/7JPFL6UKMHUEJLHJ6FEX4YBV4U/lc?offset=30&count=10\"", "language": "curl" } ] } [/block] For example, let's say you want to page through all of the model epochs and show 10 at a time. The first call would have `offset=0` and `count=10`, the second call would have `offset=10` and `count=10`, and so on.
{"_id":"590a25aed47da32300b68c05","type":"get","updates":[],"version":"590a25abd47da32300b68bd5","__v":0,"excerpt":"Returns all models for the specified dataset.","link_external":false,"next":{"pages":[],"description":""},"project":"552d474ea86ee20d00780cd7","sync_unique":"","githubsync":"","isReference":false,"parentDoc":null,"title":"Get All Models","order":4,"slug":"get-all-models","api":{"auth":"required","examples":{"codes":[{"code":"curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets/57/models","language":"curl"}]},"method":"get","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"datasetId\": 57,\n      \"datasetVersionId\": 0,\n      \"name\": \"Beach Mountain Model - Test1\",\n      \"status\": \"FAILED\",\n      \"progress\": 0,\n      \"createdAt\": \"2016-09-15T15:31:23.000+0000\",\n      \"updatedAt\": \"2016-09-15T15:32:53.000+0000\",\n      \"failureMsg\": \"To train a dataset and create a model, the dataset must contain at least 100 examples per label for test set\",\n      \"object\": \"model\",\n      \"modelId\": \"2KXJEOM3N562JBT4P7OX7VID2Q\",\n      \"modelType\": \"image\"\n    },\n    {\n      \"datasetId\": 57,\n      \"datasetVersionId\": 0,\n      \"name\": \"Beach Mountain Model - Test2\",\n      \"status\": \"SUCCEEDED\",\n      \"progress\": 1,\n      \"createdAt\": \"2016-09-15T16:15:46.000+0000\",\n      \"updatedAt\": \"2016-09-15T16:17:19.000+0000\",\n      \"object\": \"model\",\n      \"modelId\": \"YCQ4ZACEPJFGXZNRA6ERF3GL5E\",\n      \"modelType\": \"image\"\n    }\n  ]\n}","name":""},{"name":"","status":400,"language":"json","code":"{}"}]},"settings":"","url":"/vision/datasets/<DATASET_ID>/models"},"body":"##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`data`\",\n    \"0-1\": \"array\",\n    \"0-2\": \"Array of `model` objects. If the dataset has no models, the array is empty.\",\n    \"0-3\": \"1.0\",\n    \"1-2\": \"Object returned; in this case, `list`.\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Training Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"1-0\": \"`datasetId`\",\n    \"1-1\": \"long\",\n    \"1-2\": \"ID of the dataset trained to create the model.\",\n    \"1-3\": \"1.0\",\n    \"6-0\": \"`name`\",\n    \"6-1\": \"string\",\n    \"6-2\": \"Name of the model.\",\n    \"6-3\": \"1.0\",\n    \"7-0\": \"`object`\",\n    \"7-1\": \"string\",\n    \"7-2\": \"Object returned; in this case, `model`.\",\n    \"7-3\": \"1.0\",\n    \"0-0\": \"`createdAt`\",\n    \"0-1\": \"date\",\n    \"0-2\": \"Date and time that the model was created.\",\n    \"0-3\": \"1.0\",\n    \"4-0\": \"`modelId`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"ID of the model. Contains letters and numbers.\",\n    \"4-3\": \"1.0\",\n    \"9-0\": \"`status`\",\n    \"9-1\": \"string\",\n    \"9-2\": \"Status of the model. Valid values are:\\n- `QUEUED`—The training job is in the queue.\\n- `RUNNING`—The training job is running.\\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\\n- `FAILED`—The training job failed.\",\n    \"10-0\": \"`updatedAt`\",\n    \"10-1\": \"date\",\n    \"10-2\": \"Date and time that the model was last updated.\",\n    \"9-3\": \"1.0\",\n    \"10-3\": \"1.0\",\n    \"3-0\": \"`failureMsg`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Reason the dataset training failed. Returned only if the training status is `FAILED`.\",\n    \"3-3\": \"1.0\",\n    \"8-0\": \"`progress`\",\n    \"8-1\": \"int\",\n    \"8-2\": \"How far the dataset training has progressed. Values are between 0–1.\",\n    \"8-3\": \"1.0\",\n    \"2-0\": \"`datasetVersionId`\",\n    \"2-1\": \"int\",\n    \"2-2\": \"N/A\",\n    \"2-3\": \"1.0\",\n    \"5-0\": \"`modelType`\",\n    \"5-1\": \"string\",\n    \"5-3\": \"1.0\",\n    \"5-2\": \"Type of data from which the model was created. Type of data from which the model was created. Valid values are:\\n- `image`\\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later.\"\n  },\n  \"cols\": 4,\n  \"rows\": 11\n}\n[/block]","category":"59232b0631efc40f00046ad1","createdAt":"2016-09-25T00:40:32.207Z","hidden":false,"link_url":"","user":"573b5a1f37fcf72000a2e683","childrenPages":[]}

getGet All Models

Returns all models for the specified dataset.

##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `model` objects. If the dataset has no models, the array is empty.", "0-3": "1.0", "1-2": "Object returned; in this case, `list`.", "1-0": "`object`", "1-1": "string", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Training Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "6-0": "`name`", "6-1": "string", "6-2": "Name of the model.", "6-3": "1.0", "7-0": "`object`", "7-1": "string", "7-2": "Object returned; in this case, `model`.", "7-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "4-0": "`modelId`", "4-1": "string", "4-2": "ID of the model. Contains letters and numbers.", "4-3": "1.0", "9-0": "`status`", "9-1": "string", "9-2": "Status of the model. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\n- `FAILED`—The training job failed.", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the model was last updated.", "9-3": "1.0", "10-3": "1.0", "3-0": "`failureMsg`", "3-1": "string", "3-2": "Reason the dataset training failed. Returned only if the training status is `FAILED`.", "3-3": "1.0", "8-0": "`progress`", "8-1": "int", "8-2": "How far the dataset training has progressed. Values are between 0–1.", "8-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "5-0": "`modelType`", "5-1": "string", "5-3": "1.0", "5-2": "Type of data from which the model was created. Type of data from which the model was created. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 11 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`data`", "0-1": "array", "0-2": "Array of `model` objects. If the dataset has no models, the array is empty.", "0-3": "1.0", "1-2": "Object returned; in this case, `list`.", "1-0": "`object`", "1-1": "string", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Training Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "1-0": "`datasetId`", "1-1": "long", "1-2": "ID of the dataset trained to create the model.", "1-3": "1.0", "6-0": "`name`", "6-1": "string", "6-2": "Name of the model.", "6-3": "1.0", "7-0": "`object`", "7-1": "string", "7-2": "Object returned; in this case, `model`.", "7-3": "1.0", "0-0": "`createdAt`", "0-1": "date", "0-2": "Date and time that the model was created.", "0-3": "1.0", "4-0": "`modelId`", "4-1": "string", "4-2": "ID of the model. Contains letters and numbers.", "4-3": "1.0", "9-0": "`status`", "9-1": "string", "9-2": "Status of the model. Valid values are:\n- `QUEUED`—The training job is in the queue.\n- `RUNNING`—The training job is running.\n- `SUCCEEDED`—The training job succeeded, and you can use the model.\n- `FAILED`—The training job failed.", "10-0": "`updatedAt`", "10-1": "date", "10-2": "Date and time that the model was last updated.", "9-3": "1.0", "10-3": "1.0", "3-0": "`failureMsg`", "3-1": "string", "3-2": "Reason the dataset training failed. Returned only if the training status is `FAILED`.", "3-3": "1.0", "8-0": "`progress`", "8-1": "int", "8-2": "How far the dataset training has progressed. Values are between 0–1.", "8-3": "1.0", "2-0": "`datasetVersionId`", "2-1": "int", "2-2": "N/A", "2-3": "1.0", "5-0": "`modelType`", "5-1": "string", "5-3": "1.0", "5-2": "Type of data from which the model was created. Type of data from which the model was created. Valid values are:\n- `image`\n- `image-multi-label`—Available in Einstein Vision API version 2.0 and later." }, "cols": 4, "rows": 11 } [/block]
{"_id":"590a25aed47da32300b68c06","link_external":false,"link_url":"","parentDoc":null,"api":{"settings":"","url":"/vision/predict","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleBase64Content=/9j/4AAQSkZ...\" -F \"modelId=YCQ4ZACEPJFGXZNRA6ERF3GL5E\" https://api.einstein.ai/v2/vision/predict","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"probabilities\": [\n    {\n      \"label\": \"beach\",\n      \"probability\": 0.9602110385894775\n    },\n    {\n      \"label\": \"mountain\",\n      \"probability\": 0.039788953959941864\n    }\n  ],\n  \"object\": \"predictresponse\"\n}","name":""},{"status":400,"language":"json","code":"{}","name":""}]}},"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`modelId`\",\n    \"2-0\": \"`sampleBase64Content`\",\n    \"0-1\": \"string\",\n    \"2-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"ID of the model that makes the prediction.\",\n    \"0-3\": \"1.0\",\n    \"2-2\": \"The image contained in a base64 string.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleId`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.\",\n    \"3-3\": \"1.0\",\n    \"1-0\": \"`numResults`\",\n    \"1-1\": \"int\",\n    \"1-2\": \"Number of probabilities to return. Optional. If passed, must be a number greater than zero.\\n\\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.\",\n    \"1-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nKeep the following points in mind when sending an image in for prediction:\n- The maximum image file size you can pass to this resource is 5 MB. \n- The supported image file types are PNG, JPG, and JPEG.\n- If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities.\n- The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`message`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Error message. Returned only if the status is something other than successful (200).\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `predictresponse`.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`probabilities`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of probabilities for the prediction.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleId`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`status`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Status of the prediction. Status of 200 means the prediction was successful.\",\n    \"4-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n##Probabilities Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`label`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Probability label for the input.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`probability`\",\n    \"1-1\": \"float\",\n    \"1-2\": \"Probability value for the input. Values are between 0–1.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Probabilities from a Multi-Label Model##\n\nA multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one.\n\nFor example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"baseball-bat\\\",\\n      \\\"probability\\\": 0.7356758\\n    },\\n    {\\n      \\\"label\\\": \\\"baseball-glove\\\",\\n      \\\"probability\\\": 0.74909562\\n    },\\n    {\\n      \\\"label\\\": \\\"basketball-hoop\\\",\\n      \\\"probability\\\": 0.112600096\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-ball\\\",\\n      \\\"probability\\\": 0.088070825\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-racket\\\",\\n      \\\"probability\\\": 0.0854089\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-court\\\",\\n      \\\"probability\\\": 0.0007318517\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhen a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later.\n\n###Rate Limit Headers##\n\nAny time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"X-RateLimit-Limit 1000\\nX-RateLimit-Remaining 997\\nX-RateLimit-Reset 2017-04-01 19:31:42.0\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Header\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Example\",\n    \"0-0\": \"`X-RateLimit-Limit`\",\n    \"0-1\": \"Maximum number of prediction calls available for the current plan month.\",\n    \"0-2\": \"1000\",\n    \"1-0\": \"`X-RateLimit-Remaining`\",\n    \"1-1\": \"Total number of prediction calls you have left for the current plan month.\",\n    \"1-2\": \"997\",\n    \"2-0\": \"`X-RateLimit-Reset`\",\n    \"2-1\": \"Date on which your predictions are next provisioned. Always the first of the month.\",\n    \"2-2\": \"2017-04-01 22:07:40.0\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]","type":"post","version":"590a25abd47da32300b68bd5","next":{"pages":[],"description":""},"slug":"prediction-with-image-base64-string","title":"Prediction with Image Base64 String","user":"573b5a1f37fcf72000a2e683","excerpt":"Returns a prediction for the specified image converted into a base64 string.","isReference":false,"category":"59232b955c48c70f00f22354","createdAt":"2016-09-25T00:45:40.004Z","githubsync":"","hidden":false,"order":0,"project":"552d474ea86ee20d00780cd7","__v":0,"sync_unique":"","updates":[],"childrenPages":[]}

postPrediction with Image Base64 String

Returns a prediction for the specified image converted into a base64 string.

##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "2-0": "`sampleBase64Content`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-2": "The image contained in a base64 string.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-0": "`X-RateLimit-Remaining`", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-0": "`X-RateLimit-Reset`", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "2-0": "`sampleBase64Content`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-2": "The image contained in a base64 string.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-0": "`X-RateLimit-Remaining`", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-0": "`X-RateLimit-Reset`", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]
{"_id":"590a25aed47da32300b68c07","order":1,"parentDoc":null,"project":"552d474ea86ee20d00780cd7","sync_unique":"","version":"590a25abd47da32300b68bd5","api":{"results":{"codes":[{"language":"json","code":"{\n  \"probabilities\": [\n    {\n      \"label\": \"beach\",\n      \"probability\": 0.980938732624054\n    },\n    {\n      \"label\": \"mountain\",\n      \"probability\": 0.0190612580627203\n    }\n  ],\n  \"object\": \"predictresponse\"\n}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"/vision/predict","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleId=Photo Prediction\"  -F \"sampleContent=@/FileToPredict/our_trip_to_the_beach.jpg\" -F \"modelId=YCQ4ZACEPJFGXZNRA6ERF3GL5E\" https://api.einstein.ai/v2/vision/predict","language":"curl"}]},"method":"post","params":[]},"hidden":false,"slug":"prediction-with-image-file","title":"Prediction with Image File","updates":["589baec16113c325002f4d8a"],"type":"post","body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`modelId`\",\n    \"2-0\": \"`sampleContent`\",\n    \"0-1\": \"string\",\n    \"2-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"ID of the model that makes the prediction.\",\n    \"0-3\": \"1.0\",\n    \"2-2\": \"File system location of the image file to upload.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleId`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.\",\n    \"3-3\": \"1.0\",\n    \"1-0\": \"`numResults`\",\n    \"1-1\": \"int\",\n    \"1-2\": \"Number of probabilities to return. Optional. If passed, must be a number greater than zero.\\n\\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.\",\n    \"1-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nKeep the following points in mind when sending an image in for prediction:\n- The maximum image file size you can pass to this resource is 5 MB. \n- The supported image file types are PNG, JPG, and JPEG.\n- If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities.\n- The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`message`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Error message. Returned only if the status is something other than successful (200).\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `predictresponse`.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`probabilities`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of probabilities for the prediction.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleId`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`status`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Status of the prediction. Status of 200 means the prediction was successful.\",\n    \"4-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n##Probabilities Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`label`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Probability label for the input.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`probability`\",\n    \"1-1\": \"float\",\n    \"1-2\": \"Probability value for the input. Values are between 0–1.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Probabilities from a Multi-Label Model##\n\nA multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one.\n\nFor example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"baseball-bat\\\",\\n      \\\"probability\\\": 0.7356758\\n    },\\n    {\\n      \\\"label\\\": \\\"baseball-glove\\\",\\n      \\\"probability\\\": 0.74909562\\n    },\\n    {\\n      \\\"label\\\": \\\"basketball-hoop\\\",\\n      \\\"probability\\\": 0.112600096\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-ball\\\",\\n      \\\"probability\\\": 0.088070825\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-racket\\\",\\n      \\\"probability\\\": 0.0854089\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-court\\\",\\n      \\\"probability\\\": 0.0007318517\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhen a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later.\n\n###Rate Limit Headers##\n\nAny time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"X-RateLimit-Limit 1000\\nX-RateLimit-Remaining 997\\nX-RateLimit-Reset 2017-04-01 19:31:42.0\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Header\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Example\",\n    \"0-0\": \"`X-RateLimit-Limit`\",\n    \"0-1\": \"Maximum number of prediction calls available for the current plan month.\",\n    \"0-2\": \"1000\",\n    \"1-0\": \"`X-RateLimit-Remaining`\",\n    \"1-1\": \"Total number of prediction calls you have left for the current plan month.\",\n    \"1-2\": \"997\",\n    \"2-0\": \"`X-RateLimit-Reset`\",\n    \"2-1\": \"Date on which your predictions are next provisioned. Always the first of the month.\",\n    \"2-2\": \"2017-04-01 22:07:40.0\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]","createdAt":"2016-09-25T00:52:21.290Z","excerpt":"Returns a prediction for the specified local image file.","githubsync":"","isReference":false,"link_external":false,"link_url":"","user":"573b5a1f37fcf72000a2e683","__v":0,"category":"59232b955c48c70f00f22354","next":{"pages":[],"description":""},"childrenPages":[]}

postPrediction with Image File

Returns a prediction for the specified local image file.

##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "2-0": "`sampleContent`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-2": "File system location of the image file to upload.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-0": "`X-RateLimit-Remaining`", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-0": "`X-RateLimit-Reset`", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "2-0": "`sampleContent`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-2": "File system location of the image file to upload.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-0": "`X-RateLimit-Remaining`", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-0": "`X-RateLimit-Reset`", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]
{"_id":"590a25aed47da32300b68c08","category":"59232b955c48c70f00f22354","createdAt":"2016-09-25T00:59:47.456Z","hidden":false,"link_external":false,"project":"552d474ea86ee20d00780cd7","sync_unique":"","title":"Prediction with Image URL","api":{"url":"/vision/predict","auth":"required","examples":{"codes":[{"code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"sampleLocation=http://www.mysite.com/our_beach_vacation.jpg\" -F \"modelId=YCQ4ZACEPJFGXZNRA6ERF3GL5E\" https://api.einstein.ai/v2/vision/predict","language":"curl"}]},"method":"post","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{\n  \"probabilities\": [\n    {\n      \"label\": \"beach\",\n      \"probability\": 0.9997345805168152\n    },\n    {\n      \"label\": \"mountain\",\n      \"probability\": 0.0002654256531968713\n    }\n  ],\n  \"object\": \"predictresponse\"\n}","name":""},{"language":"json","code":"{}","name":"","status":400}]},"settings":""},"githubsync":"","link_url":"","order":2,"updates":[],"excerpt":"Returns a prediction for the image file specified by its URL.","isReference":false,"next":{"pages":[],"description":""},"slug":"prediction-with-image-url","user":"573b5a1f37fcf72000a2e683","version":"590a25abd47da32300b68bd5","__v":0,"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`modelId`\",\n    \"0-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"ID of the model that makes the prediction.\",\n    \"0-3\": \"1.0\",\n    \"2-0\": \"`sampleId`\",\n    \"2-1\": \"string\",\n    \"2-2\": \"String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleLocation`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"URL of the image file.\",\n    \"3-3\": \"1.0\",\n    \"1-0\": \"`numResults`\",\n    \"1-1\": \"int\",\n    \"1-2\": \"Number of probabilities to return. Optional. If passed, must be a number greater than zero.\\n\\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.\",\n    \"1-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nKeep the following points in mind when sending an image in for prediction:\n- The maximum image file size you can pass to this resource is 5 MB. \n- The supported image file types are PNG, JPG, and JPEG.\n- If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities.\n- The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`message`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Error message. Returned only if the status is something other than successful (200).\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`object`\",\n    \"1-1\": \"string\",\n    \"1-2\": \"Object returned; in this case, `predictresponse`.\",\n    \"1-3\": \"1.0\",\n    \"2-0\": \"`probabilities`\",\n    \"2-1\": \"array\",\n    \"2-2\": \"Array of probabilities for the prediction.\",\n    \"2-3\": \"1.0\",\n    \"3-0\": \"`sampleId`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.\",\n    \"3-3\": \"1.0\",\n    \"4-0\": \"`status`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Status of the prediction. Status of 200 means the prediction was successful.\",\n    \"4-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n##Probabilities Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`label`\",\n    \"0-1\": \"string\",\n    \"0-2\": \"Probability label for the input.\",\n    \"0-3\": \"1.0\",\n    \"1-0\": \"`probability`\",\n    \"1-1\": \"float\",\n    \"1-2\": \"Probability value for the input. Values are between 0–1.\",\n    \"1-3\": \"1.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n##Probabilities from a Multi-Label Model##\n\nA multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one.\n\nFor example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `.baseball-bat` and the `baseball-glove` labels.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"baseball-bat\\\",\\n      \\\"probability\\\": 0.7356758\\n    },\\n    {\\n      \\\"label\\\": \\\"baseball-glove\\\",\\n      \\\"probability\\\": 0.74909562\\n    },\\n    {\\n      \\\"label\\\": \\\"basketball-hoop\\\",\\n      \\\"probability\\\": 0.112600096\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-ball\\\",\\n      \\\"probability\\\": 0.088070825\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-racket\\\",\\n      \\\"probability\\\": 0.0854089\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-court\\\",\\n      \\\"probability\\\": 0.0007318517\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhen a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later.\n\n###Rate Limit Headers##\n\nAny time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"X-RateLimit-Limit 1000\\nX-RateLimit-Remaining 997\\nX-RateLimit-Reset 2017-04-01 19:31:42.0\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Header\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Example\",\n    \"0-0\": \"`X-RateLimit-Limit`\",\n    \"1-0\": \"`X-RateLimit-Remaining`\",\n    \"2-0\": \"`X-RateLimit-Reset`\",\n    \"0-1\": \"Maximum number of prediction calls available for the current plan month.\",\n    \"0-2\": \"1000\",\n    \"1-1\": \"Total number of prediction calls you have left for the current plan month.\",\n    \"1-2\": \"997\",\n    \"2-1\": \"Date on which your predictions are next provisioned. Always the first of the month.\",\n    \"2-2\": \"2017-04-01 22:07:40.0\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]","parentDoc":null,"type":"post","childrenPages":[]}

postPrediction with Image URL

Returns a prediction for the image file specified by its URL.

##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-0": "`sampleId`", "2-1": "string", "2-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "2-3": "1.0", "3-0": "`sampleLocation`", "3-1": "string", "3-2": "URL of the image file.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `.baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "1-0": "`X-RateLimit-Remaining`", "2-0": "`X-RateLimit-Reset`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`modelId`", "0-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "ID of the model that makes the prediction.", "0-3": "1.0", "2-0": "`sampleId`", "2-1": "string", "2-2": "String that you can pass in to tag the prediction. Optional. Can be any value, and is returned in the response.", "2-3": "1.0", "3-0": "`sampleLocation`", "3-1": "string", "3-2": "URL of the image file.", "3-3": "1.0", "1-0": "`numResults`", "1-1": "int", "1-2": "Number of probabilities to return. Optional. If passed, must be a number greater than zero.\n\nThe response is sorted by `probability` in descending order. For example, if you pass in `3`, only the top three `label` and `probability` values are returned.", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] Keep the following points in mind when sending an image in for prediction: - The maximum image file size you can pass to this resource is 5 MB. - The supported image file types are PNG, JPG, and JPEG. - If you omit the `numResults` parameter and the `modelId` specifies a standard classification model, the response returns the top five labels and probabilities. - The `numResults` parameter has no effect on the response from a multi-label model. The prediction response from a multi-label model always returns probabilities for all the labels in a model. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`message`", "0-1": "string", "0-2": "Error message. Returned only if the status is something other than successful (200).", "0-3": "1.0", "1-0": "`object`", "1-1": "string", "1-2": "Object returned; in this case, `predictresponse`.", "1-3": "1.0", "2-0": "`probabilities`", "2-1": "array", "2-2": "Array of probabilities for the prediction.", "2-3": "1.0", "3-0": "`sampleId`", "3-1": "string", "3-2": "Value passed in when the prediction call was made. Returned only if the `sampleId` request parameter is provided.", "3-3": "1.0", "4-0": "`status`", "4-1": "string", "4-2": "Status of the prediction. Status of 200 means the prediction was successful.", "4-3": "1.0" }, "cols": 4, "rows": 5 } [/block] ##Probabilities Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`label`", "0-1": "string", "0-2": "Probability label for the input.", "0-3": "1.0", "1-0": "`probability`", "1-1": "float", "1-2": "Probability value for the input. Values are between 0–1.", "1-3": "1.0" }, "cols": 4, "rows": 2 } [/block] ##Probabilities from a Multi-Label Model## A multi-label model (`modelType` is `image-multi-label`) is designed to return predictions for multiple objects in an image. The response format is the same as a prediction from a model with a `modelType` of `image`, however, the probabilities don't add up to one. For example, if you send an image of a baseball bat and a baseball glove into a sports-related multi-label model, the response might look something like the following JSON. This response shows high probabilities for both the `.baseball-bat` and the `baseball-glove` labels. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] When a response comes back from a multi-label model, it returns probabilities for all the labels in the model. Multi-label models are available in Einstein Vision API verison 2.0 and later. ###Rate Limit Headers## Any time you make an API call to the `/predict` resource, your rate limit information is returned in the header. The rate limit headers specify your prediction usage for the current calendar month only. [block:code] { "codes": [ { "code": "X-RateLimit-Limit 1000\nX-RateLimit-Remaining 997\nX-RateLimit-Reset 2017-04-01 19:31:42.0", "language": "text" } ] } [/block] [block:parameters] { "data": { "h-0": "Header", "h-1": "Description", "h-2": "Example", "0-0": "`X-RateLimit-Limit`", "1-0": "`X-RateLimit-Remaining`", "2-0": "`X-RateLimit-Reset`", "0-1": "Maximum number of prediction calls available for the current plan month.", "0-2": "1000", "1-1": "Total number of prediction calls you have left for the current plan month.", "1-2": "997", "2-1": "Date on which your predictions are next provisioned. Always the first of the month.", "2-2": "2017-04-01 22:07:40.0" }, "cols": 3, "rows": 3 } [/block]
{"_id":"590a25aed47da32300b68c0c","createdAt":"2016-09-19T17:55:51.515Z","excerpt":"","isReference":false,"link_external":false,"next":{"pages":[],"description":""},"parentDoc":null,"__v":0,"slug":"dataset-and-model-best-practices","sync_unique":"","type":"basic","project":"552d474ea86ee20d00780cd7","githubsync":"","title":"Dataset and Model Best Practices","updates":[],"user":"573b5a1f37fcf72000a2e683","body":"- A dataset should contain at least 1,000 images per label.\n\n- Each dataset label should have about the same number of images. For example, avoid a situation where you have 1,000 images in one label and 400 in another within the same dataset.\n\n- Each dataset label should have a wide variety of images. If you have a label that contains images of a certain object, include images:\n  - In color\n  - In black and white\n  - Blurred\n  - That contain the object with other objects it might typically be seen with\n  - With text and without text (if applicable)\n\n \n- A dataset with a wide variety of images means that the model will be more accurate. For example, if you have a dataset label called “buildings,” include images of many different styles of buildings: Asian, Medieval, Renaissance, Modern, and so on.\n\n- In a binary dataset, include images in the negative label that look similar to images in the positive label. For example, if your positive label is oranges be sure to have grapefruits, tangerines, lemons, and other citrus fruits in your negative label.\n\n- As you test your model, take the false positives and false negatives and add them to your training dataset to make the model more accurate.\n\n- If your dataset changes, you must train it and create a new model.","link_url":"","order":0,"category":"590a25abd47da32300b68bdc","hidden":false,"version":"590a25abd47da32300b68bd5","api":{"params":[],"url":"","results":{"codes":[{"status":200,"name":"","code":"{}","language":"json"},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"","auth":"required"},"childrenPages":[]}

Dataset and Model Best Practices


- A dataset should contain at least 1,000 images per label. - Each dataset label should have about the same number of images. For example, avoid a situation where you have 1,000 images in one label and 400 in another within the same dataset. - Each dataset label should have a wide variety of images. If you have a label that contains images of a certain object, include images: - In color - In black and white - Blurred - That contain the object with other objects it might typically be seen with - With text and without text (if applicable) - A dataset with a wide variety of images means that the model will be more accurate. For example, if you have a dataset label called “buildings,” include images of many different styles of buildings: Asian, Medieval, Renaissance, Modern, and so on. - In a binary dataset, include images in the negative label that look similar to images in the positive label. For example, if your positive label is oranges be sure to have grapefruits, tangerines, lemons, and other citrus fruits in your negative label. - As you test your model, take the false positives and false negatives and add them to your training dataset to make the model more accurate. - If your dataset changes, you must train it and create a new model.
- A dataset should contain at least 1,000 images per label. - Each dataset label should have about the same number of images. For example, avoid a situation where you have 1,000 images in one label and 400 in another within the same dataset. - Each dataset label should have a wide variety of images. If you have a label that contains images of a certain object, include images: - In color - In black and white - Blurred - That contain the object with other objects it might typically be seen with - With text and without text (if applicable) - A dataset with a wide variety of images means that the model will be more accurate. For example, if you have a dataset label called “buildings,” include images of many different styles of buildings: Asian, Medieval, Renaissance, Modern, and so on. - In a binary dataset, include images in the negative label that look similar to images in the positive label. For example, if your positive label is oranges be sure to have grapefruits, tangerines, lemons, and other citrus fruits in your negative label. - As you test your model, take the false positives and false negatives and add them to your training dataset to make the model more accurate. - If your dataset changes, you must train it and create a new model.
{"_id":"590a25aed47da32300b68c0d","link_url":"","next":{"pages":[],"description":""},"parentDoc":null,"type":"basic","__v":0,"body":"##[Create a Dataset and Upload Images Asynchronously From a Zip File](doc:create-a-dataset-zip-async)##\n\nThis call creates a dataset, labels, and examples from a .zip file in a single asynchronous operation. \n\n- This API call returns a response in which the `available` value is `false` and the `statusMsg` value is `UPLOADING`. \n- After you make the call, use the call to [Get a Dataset](doc:get-a-dataset) and check the `available` and `statusMsg` values. \n- When `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model.\n\nUse this call when you have a .zip file that’s 10 MB or larger. If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass in the URL.\n\n\n##[Create a Dataset and Upload Images Synchronously From a Zip File](doc:create-a-dataset-zip-sync)##\n\nThis call creates a dataset, labels, and examples from a .zip file in a single synchronous operation. \n\n- The response is returned only after the call completes. \n- The `available` and `statusMsg` fields in the response indicate whether the call was successful. If `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model.\n\nUse this call when you have a .zip file that’s less than 10 MB.\n\n###How Datasets are Created From a Zip File###\n\nWhen you create a dataset from a .zip file, the API uses the structure of the .zip file. \n- The dataset name is the name of the .zip file minus the file extension.\n- A label is created for each directory that contains images, and the label name is the same as the directory name.\n- An example is created for each image, and the example name is the same as the file name.\n\nThe .zip file can be on a local drive or accessible from a cloud location that doesn’t require authentication. You can add images to a dataset created from a .zip file only by using the [Create Examples From a Zip File](doc:create-examples-from-zip) call.\n\n\n##[Create an Empty Dataset](doc:create-a-dataset)##\n\nThis call creates an empty dataset and labels. To create examples in a dataset that you create using this call, you must use the [Create an Example](doc:create-an-example) call to add the images individually.\n\nAfter you create this type of dataset, you can only add images individually, you can’t add examples to the dataset from a .zip file. Therefore, we recommend that you create a dataset from a .zip file using either the asynchronous or synchronous call, depending on the amount of data.","category":"590a25abd47da32300b68bdc","link_external":false,"updates":[],"version":"590a25abd47da32300b68bd5","sync_unique":"","user":"573b5a1f37fcf72000a2e683","excerpt":"There are three different API calls you can use to create a dataset. The first two APIs create a dataset from a .zip file.","githubsync":"","hidden":false,"project":"552d474ea86ee20d00780cd7","api":{"results":{"codes":[{"status":200,"name":"","code":"{}","language":"json"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"title":"Ways to Create a Dataset","createdAt":"2017-03-03T22:15:57.228Z","order":1,"slug":"ways-to-create-a-dataset","childrenPages":[]}

Ways to Create a Dataset

There are three different API calls you can use to create a dataset. The first two APIs create a dataset from a .zip file.

##[Create a Dataset and Upload Images Asynchronously From a Zip File](doc:create-a-dataset-zip-async)## This call creates a dataset, labels, and examples from a .zip file in a single asynchronous operation. - This API call returns a response in which the `available` value is `false` and the `statusMsg` value is `UPLOADING`. - After you make the call, use the call to [Get a Dataset](doc:get-a-dataset) and check the `available` and `statusMsg` values. - When `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model. Use this call when you have a .zip file that’s 10 MB or larger. If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass in the URL. ##[Create a Dataset and Upload Images Synchronously From a Zip File](doc:create-a-dataset-zip-sync)## This call creates a dataset, labels, and examples from a .zip file in a single synchronous operation. - The response is returned only after the call completes. - The `available` and `statusMsg` fields in the response indicate whether the call was successful. If `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model. Use this call when you have a .zip file that’s less than 10 MB. ###How Datasets are Created From a Zip File### When you create a dataset from a .zip file, the API uses the structure of the .zip file. - The dataset name is the name of the .zip file minus the file extension. - A label is created for each directory that contains images, and the label name is the same as the directory name. - An example is created for each image, and the example name is the same as the file name. The .zip file can be on a local drive or accessible from a cloud location that doesn’t require authentication. You can add images to a dataset created from a .zip file only by using the [Create Examples From a Zip File](doc:create-examples-from-zip) call. ##[Create an Empty Dataset](doc:create-a-dataset)## This call creates an empty dataset and labels. To create examples in a dataset that you create using this call, you must use the [Create an Example](doc:create-an-example) call to add the images individually. After you create this type of dataset, you can only add images individually, you can’t add examples to the dataset from a .zip file. Therefore, we recommend that you create a dataset from a .zip file using either the asynchronous or synchronous call, depending on the amount of data.
##[Create a Dataset and Upload Images Asynchronously From a Zip File](doc:create-a-dataset-zip-async)## This call creates a dataset, labels, and examples from a .zip file in a single asynchronous operation. - This API call returns a response in which the `available` value is `false` and the `statusMsg` value is `UPLOADING`. - After you make the call, use the call to [Get a Dataset](doc:get-a-dataset) and check the `available` and `statusMsg` values. - When `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model. Use this call when you have a .zip file that’s 10 MB or larger. If your .zip file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass in the URL. ##[Create a Dataset and Upload Images Synchronously From a Zip File](doc:create-a-dataset-zip-sync)## This call creates a dataset, labels, and examples from a .zip file in a single synchronous operation. - The response is returned only after the call completes. - The `available` and `statusMsg` fields in the response indicate whether the call was successful. If `available` is `true` and `statusMsg` is `SUCCEEDED`, all the data has been uploaded from the .zip file, and you can train the dataset to create a model. Use this call when you have a .zip file that’s less than 10 MB. ###How Datasets are Created From a Zip File### When you create a dataset from a .zip file, the API uses the structure of the .zip file. - The dataset name is the name of the .zip file minus the file extension. - A label is created for each directory that contains images, and the label name is the same as the directory name. - An example is created for each image, and the example name is the same as the file name. The .zip file can be on a local drive or accessible from a cloud location that doesn’t require authentication. You can add images to a dataset created from a .zip file only by using the [Create Examples From a Zip File](doc:create-examples-from-zip) call. ##[Create an Empty Dataset](doc:create-a-dataset)## This call creates an empty dataset and labels. To create examples in a dataset that you create using this call, you must use the [Create an Example](doc:create-an-example) call to add the images individually. After you create this type of dataset, you can only add images individually, you can’t add examples to the dataset from a .zip file. Therefore, we recommend that you create a dataset from a .zip file using either the asynchronous or synchronous call, depending on the amount of data.
{"_id":"59246ff3afc7bc0f005fe0c5","body":"The type of model you need depends on the images you’re sending into the model and what you want the model to identify in those images. The model type is defined by the dataset type and the data in the dataset from which the model is created.\n\nEinstein Vision supports these model types:\n- Classification—predicts the single class into which an image falls.\n- Multi-label classification—predicts multiple classes into which an image falls. \n\n##Classification##\n\nThe purpose of an image classification model is to predict the class into which an image most likely falls. In the Create a Custom Classifier [Scenario](doc:scenario), you create a beaches and mountains dataset and then train that dataset to create a model. The goal of that model is to identify if an image falls into one of those classes: was the photo taken at the beach or was it taken in the mountains.\n\nThe prediction response from this model type returns the top five classes sorted by probability in descending order. The probabilities in that response add up to 1. So if you send an image of a beach into a beaches and mountains model, the results look like this JSON.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"Beaches\\\",\\n      \\\"probability\\\": 0.97554934\\n    },\\n    {\\n      \\\"label\\\": \\\"Mountains\\\",\\n      \\\"probability\\\": 0.024450686\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nUse the standard classification model when you want the model to return a response that tells you that an image is a specific thing. For example, in the case of cars, you might have a model with different car brands. When an image is sent to the model, the response tells you the likelihood that the image is a specific car brand.\n\nTo create a classification model, you first specify `image` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image`.\n\n##Multi-Label Classification##\n\nThe purpose of a multi-label model is to predict multiple classes into which an image most likely falls. This type of model predicts probabilities for multiple classes based on what’s in an image. The prediction response returns all the labels in the model sorted by probability in descending order. \n\nIn a multi-label model, the prediction response returns labels and probabilities; but those probabilities don’t add up to 1. For example, if you had a multi-label model for sports equipment, and an image that contains a baseball glove and bat is sent in, the response looks like this JSON.\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"baseball-bat\\\",\\n      \\\"probability\\\": 0.7356758\\n    },\\n    {\\n      \\\"label\\\": \\\"baseball-glove\\\",\\n      \\\"probability\\\": 0.74909562\\n    },\\n    {\\n      \\\"label\\\": \\\"basketball-hoop\\\",\\n      \\\"probability\\\": 0.112600096\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-ball\\\",\\n      \\\"probability\\\": 0.088070825\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-racket\\\",\\n      \\\"probability\\\": 0.0854089\\n    },\\n    {\\n      \\\"label\\\": \\\"tennis-court\\\",\\n      \\\"probability\\\": 0.0007318517\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nUse a multi-label model when your scenario requires an image to be classified in multiple classes. For example, let’s say you’re a developer that works for a company that makes clothing accessories like shoes, hats, scarves, and backpacks. Your job is to implement functionality whereby someone can upload a photo and find out what products are in the photo. \n\nAn image can contain multiple products, so the model must return a prediction that identifies each product in the image. In this case, you create a multi-label model that can identify multiple products in a single image.\n\nThe process for building a multi-label model is the same as an image classification model: you gather the data, create the dataset, and then train the dataset to create the model. The difference is the response that comes back when an image is classified against a multi-label model.\n\nTo create a multi-label model, you first specify `image-multi-label` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image-multi-label`.","isReference":false,"slug":"determine-model-type","project":"552d474ea86ee20d00780cd7","type":"basic","__v":0,"category":"590a25abd47da32300b68bdc","createdAt":"2017-05-23T17:22:59.005Z","link_url":"","next":{"pages":[],"description":""},"order":2,"version":"590a25abd47da32300b68bd5","link_external":false,"sync_unique":"","user":"573b5a1f37fcf72000a2e683","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"excerpt":"You can use the Einstein Vision API to create different types of models depending on what you want the model to identify in images.","githubsync":"","hidden":false,"title":"Determine the Model Type You Need","updates":[],"parentDoc":null,"childrenPages":[]}

Determine the Model Type You Need

You can use the Einstein Vision API to create different types of models depending on what you want the model to identify in images.

The type of model you need depends on the images you’re sending into the model and what you want the model to identify in those images. The model type is defined by the dataset type and the data in the dataset from which the model is created. Einstein Vision supports these model types: - Classification—predicts the single class into which an image falls. - Multi-label classification—predicts multiple classes into which an image falls. ##Classification## The purpose of an image classification model is to predict the class into which an image most likely falls. In the Create a Custom Classifier [Scenario](doc:scenario), you create a beaches and mountains dataset and then train that dataset to create a model. The goal of that model is to identify if an image falls into one of those classes: was the photo taken at the beach or was it taken in the mountains. The prediction response from this model type returns the top five classes sorted by probability in descending order. The probabilities in that response add up to 1. So if you send an image of a beach into a beaches and mountains model, the results look like this JSON. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Beaches\",\n \"probability\": 0.97554934\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 0.024450686\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] Use the standard classification model when you want the model to return a response that tells you that an image is a specific thing. For example, in the case of cars, you might have a model with different car brands. When an image is sent to the model, the response tells you the likelihood that the image is a specific car brand. To create a classification model, you first specify `image` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image`. ##Multi-Label Classification## The purpose of a multi-label model is to predict multiple classes into which an image most likely falls. This type of model predicts probabilities for multiple classes based on what’s in an image. The prediction response returns all the labels in the model sorted by probability in descending order. In a multi-label model, the prediction response returns labels and probabilities; but those probabilities don’t add up to 1. For example, if you had a multi-label model for sports equipment, and an image that contains a baseball glove and bat is sent in, the response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] Use a multi-label model when your scenario requires an image to be classified in multiple classes. For example, let’s say you’re a developer that works for a company that makes clothing accessories like shoes, hats, scarves, and backpacks. Your job is to implement functionality whereby someone can upload a photo and find out what products are in the photo. An image can contain multiple products, so the model must return a prediction that identifies each product in the image. In this case, you create a multi-label model that can identify multiple products in a single image. The process for building a multi-label model is the same as an image classification model: you gather the data, create the dataset, and then train the dataset to create the model. The difference is the response that comes back when an image is classified against a multi-label model. To create a multi-label model, you first specify `image-multi-label` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image-multi-label`.
The type of model you need depends on the images you’re sending into the model and what you want the model to identify in those images. The model type is defined by the dataset type and the data in the dataset from which the model is created. Einstein Vision supports these model types: - Classification—predicts the single class into which an image falls. - Multi-label classification—predicts multiple classes into which an image falls. ##Classification## The purpose of an image classification model is to predict the class into which an image most likely falls. In the Create a Custom Classifier [Scenario](doc:scenario), you create a beaches and mountains dataset and then train that dataset to create a model. The goal of that model is to identify if an image falls into one of those classes: was the photo taken at the beach or was it taken in the mountains. The prediction response from this model type returns the top five classes sorted by probability in descending order. The probabilities in that response add up to 1. So if you send an image of a beach into a beaches and mountains model, the results look like this JSON. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Beaches\",\n \"probability\": 0.97554934\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 0.024450686\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] Use the standard classification model when you want the model to return a response that tells you that an image is a specific thing. For example, in the case of cars, you might have a model with different car brands. When an image is sent to the model, the response tells you the likelihood that the image is a specific car brand. To create a classification model, you first specify `image` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image`. ##Multi-Label Classification## The purpose of a multi-label model is to predict multiple classes into which an image most likely falls. This type of model predicts probabilities for multiple classes based on what’s in an image. The prediction response returns all the labels in the model sorted by probability in descending order. In a multi-label model, the prediction response returns labels and probabilities; but those probabilities don’t add up to 1. For example, if you had a multi-label model for sports equipment, and an image that contains a baseball glove and bat is sent in, the response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"baseball-bat\",\n \"probability\": 0.7356758\n },\n {\n \"label\": \"baseball-glove\",\n \"probability\": 0.74909562\n },\n {\n \"label\": \"basketball-hoop\",\n \"probability\": 0.112600096\n },\n {\n \"label\": \"tennis-ball\",\n \"probability\": 0.088070825\n },\n {\n \"label\": \"tennis-racket\",\n \"probability\": 0.0854089\n },\n {\n \"label\": \"tennis-court\",\n \"probability\": 0.0007318517\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] Use a multi-label model when your scenario requires an image to be classified in multiple classes. For example, let’s say you’re a developer that works for a company that makes clothing accessories like shoes, hats, scarves, and backpacks. Your job is to implement functionality whereby someone can upload a photo and find out what products are in the photo. An image can contain multiple products, so the model must return a prediction that identifies each product in the image. In this case, you create a multi-label model that can identify multiple products in a single image. The process for building a multi-label model is the same as an image classification model: you gather the data, create the dataset, and then train the dataset to create the model. The difference is the response that comes back when an image is classified against a multi-label model. To create a multi-label model, you first specify `image-multi-label` in the `type` request parameter of the API call to create a dataset. Then ensure that the image data that you add to that dataset supports the kind of predictions you expect to see from the model. When you train the dataset, the resulting model has a `modelType` of `image-multi-label`.
{"_id":"59335fe98da9bb00239e7d28","project":"552d474ea86ee20d00780cd7","version":"590a25abd47da32300b68bd5","category":"590a25abd47da32300b68bdc","user":"573b5a1f37fcf72000a2e683","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-06-04T01:18:33.365Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":3,"body":"One way you use global datasets is to create a negative class in your model. A negative class is returned in a prediction for an image that doesn't match any of the other classes. \n\nFor example, the beaches and mountains model has only two classes: Beaches and Mountains. If you classify an image of an airplane using that model, the response returns probabilities for those two classes, which aren’t very helpful.\n \nInstead, you can use the global dataset to add another label named \"other\". Now when you train the beaches and mountains dataset, you include the global dataset. Your original dataset stays the same, but the data from the global dataset is added to the model. The model then contains these labels: Mountains, Beaches, and other.\n\n##Use a Global Dataset to Create a Model##\n\nThis cURL command trains a dataset and creates a model using one of the global datasets. Replace <DATASET_ID> with your dataset ID. The global dataset ID specified here (1005161) is the ID for a standard image classification dataset.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=Beaches and Mountains w/Global Other Dataset\\\" -F \\\"datasetId=<DATASET_ID>\\\" -F \\\"trainParams={\\\\\\\"withGlobalDatasetId\\\\\\\" : 1005161}\\\" https://api.einstein.ai/v2/vision/train\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nNow when you send an image of an airplane for classification, the model returns this response.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n    \\\"probabilities\\\": [\\n        {\\n            \\\"label\\\": \\\"other\\\",\\n            \\\"probability\\\": 0.99999857\\n        },\\n        {\\n            \\\"label\\\": \\\"Beaches\\\",\\n            \\\"probability\\\": 8.929781e-7\\n        },\\n        {\\n            \\\"label\\\": \\\"Mountains\\\",\\n            \\\"probability\\\": 5.91046e-7\\n        }\\n    ],\\n    \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nYou can use global datasets in both train and retrain API calls.\n\n##Find Out What Global Datasets are Available##\n\nUse the `global` query parameter to return a list of global datasets. This cURL command returns all the global datasets.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/vision/datasets?global=true\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThis cURL call returns a response similar to this one. Note the dataset type, and be sure that the global dataset type matches the type of the dataset that you train to create a model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"object\\\": \\\"list\\\",\\n  \\\"data\\\": [\\n    {\\n      \\\"id\\\": 1005161,\\n      \\\"name\\\": \\\"other\\\",\\n      \\\"createdAt\\\": \\\"2017-06-27T23:21:16.000+0000\\\",\\n      \\\"updatedAt\\\": \\\"2017-06-27T23:21:19.000+0000\\\",\\n      \\\"labelSummary\\\": {\\n        \\\"labels\\\": [\\n          {\\n            \\\"id\\\": 24197,\\n            \\\"datasetId\\\": 1005161,\\n            \\\"name\\\": \\\"other\\\",\\n            \\\"numExamples\\\": 455\\n          }\\n        ]\\n      },\\n      \\\"totalExamples\\\": 455,\\n      \\\"totalLabels\\\": 1,\\n      \\\"available\\\": true,\\n      \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n      \\\"type\\\": \\\"image\\\",\\n      \\\"object\\\": \\\"dataset\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nGlobal datasets are a little different than datasets that you create using your own data. \n- You can return global datasets only by using the API call that gets all datasets.\n- Global datasets can only be used together with one of your own datasets to create a model.\n- You can’t get a single global dataset, get its examples, train it, or delete it.","excerpt":"Global datasets are public datasets that Salesforce provides. You can use these datasets to include additional data during training when you create a model.","slug":"use-global-datasets","type":"basic","title":"Use Global Datasets","__v":0,"parentDoc":null,"childrenPages":[]}

Use Global Datasets

Global datasets are public datasets that Salesforce provides. You can use these datasets to include additional data during training when you create a model.

One way you use global datasets is to create a negative class in your model. A negative class is returned in a prediction for an image that doesn't match any of the other classes. For example, the beaches and mountains model has only two classes: Beaches and Mountains. If you classify an image of an airplane using that model, the response returns probabilities for those two classes, which aren’t very helpful. Instead, you can use the global dataset to add another label named "other". Now when you train the beaches and mountains dataset, you include the global dataset. Your original dataset stays the same, but the data from the global dataset is added to the model. The model then contains these labels: Mountains, Beaches, and other. ##Use a Global Dataset to Create a Model## This cURL command trains a dataset and creates a model using one of the global datasets. Replace <DATASET_ID> with your dataset ID. The global dataset ID specified here (1005161) is the ID for a standard image classification dataset. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beaches and Mountains w/Global Other Dataset\" -F \"datasetId=<DATASET_ID>\" -F \"trainParams={\\\"withGlobalDatasetId\\\" : 1005161}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] Now when you send an image of an airplane for classification, the model returns this response. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"other\",\n \"probability\": 0.99999857\n },\n {\n \"label\": \"Beaches\",\n \"probability\": 8.929781e-7\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 5.91046e-7\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] You can use global datasets in both train and retrain API calls. ##Find Out What Global Datasets are Available## Use the `global` query parameter to return a list of global datasets. This cURL command returns all the global datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets?global=true", "language": "curl" } ] } [/block] This cURL call returns a response similar to this one. Note the dataset type, and be sure that the global dataset type matches the type of the dataset that you train to create a model. [block:code] { "codes": [ { "code": "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": 1005161,\n \"name\": \"other\",\n \"createdAt\": \"2017-06-27T23:21:16.000+0000\",\n \"updatedAt\": \"2017-06-27T23:21:19.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 24197,\n \"datasetId\": 1005161,\n \"name\": \"other\",\n \"numExamples\": 455\n }\n ]\n },\n \"totalExamples\": 455,\n \"totalLabels\": 1,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n }\n ]\n}", "language": "json" } ] } [/block] Global datasets are a little different than datasets that you create using your own data. - You can return global datasets only by using the API call that gets all datasets. - Global datasets can only be used together with one of your own datasets to create a model. - You can’t get a single global dataset, get its examples, train it, or delete it.
One way you use global datasets is to create a negative class in your model. A negative class is returned in a prediction for an image that doesn't match any of the other classes. For example, the beaches and mountains model has only two classes: Beaches and Mountains. If you classify an image of an airplane using that model, the response returns probabilities for those two classes, which aren’t very helpful. Instead, you can use the global dataset to add another label named "other". Now when you train the beaches and mountains dataset, you include the global dataset. Your original dataset stays the same, but the data from the global dataset is added to the model. The model then contains these labels: Mountains, Beaches, and other. ##Use a Global Dataset to Create a Model## This cURL command trains a dataset and creates a model using one of the global datasets. Replace <DATASET_ID> with your dataset ID. The global dataset ID specified here (1005161) is the ID for a standard image classification dataset. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Beaches and Mountains w/Global Other Dataset\" -F \"datasetId=<DATASET_ID>\" -F \"trainParams={\\\"withGlobalDatasetId\\\" : 1005161}\" https://api.einstein.ai/v2/vision/train", "language": "curl" } ] } [/block] Now when you send an image of an airplane for classification, the model returns this response. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"other\",\n \"probability\": 0.99999857\n },\n {\n \"label\": \"Beaches\",\n \"probability\": 8.929781e-7\n },\n {\n \"label\": \"Mountains\",\n \"probability\": 5.91046e-7\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block] You can use global datasets in both train and retrain API calls. ##Find Out What Global Datasets are Available## Use the `global` query parameter to return a list of global datasets. This cURL command returns all the global datasets. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/vision/datasets?global=true", "language": "curl" } ] } [/block] This cURL call returns a response similar to this one. Note the dataset type, and be sure that the global dataset type matches the type of the dataset that you train to create a model. [block:code] { "codes": [ { "code": "{\n \"object\": \"list\",\n \"data\": [\n {\n \"id\": 1005161,\n \"name\": \"other\",\n \"createdAt\": \"2017-06-27T23:21:16.000+0000\",\n \"updatedAt\": \"2017-06-27T23:21:19.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 24197,\n \"datasetId\": 1005161,\n \"name\": \"other\",\n \"numExamples\": 455\n }\n ]\n },\n \"totalExamples\": 455,\n \"totalLabels\": 1,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"image\",\n \"object\": \"dataset\"\n }\n ]\n}", "language": "json" } ] } [/block] Global datasets are a little different than datasets that you create using your own data. - You can return global datasets only by using the API call that gets all datasets. - Global datasets can only be used together with one of your own datasets to create a model. - You can’t get a single global dataset, get its examples, train it, or delete it.
{"_id":"5935bf31cfb17f0025c2deee","project":"552d474ea86ee20d00780cd7","version":"590a25abd47da32300b68bd5","category":"5935bf0db940120025b85668","user":"573b5a1f37fcf72000a2e683","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-06-05T20:29:37.281Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Note\",\n  \"body\": \"This release contains a beta version of Einstein Language, which means it’s a high-quality feature with known limitations. Einstein Language isn’t generally available unless or until Salesforce announces its general availability in documentation or in press releases or public statements. We can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features. You can provide feedback and suggestions for Einstein Language on the [IdeaExchange](https://success.salesforce.com/ideaSearch) in the Success Community.\"\n}\n[/block]\nEinstein Language includes two APIs that you can use to unlock powerful insights within text.\n\n- Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes to understand the feeling behind text. You can use the Einstein Sentiment API to analyze emails, social media, and text from chat to: \n\n - Identify the sentiment of a prospect’s emails to trend a lead or opportunity up or down.\n - Provide proactive service by helping dissatisfied customers first or extending promotional offers to satisfied customers.\n - Use trending sentiment to identify product deficiencies and measure overall satisfaction or dissatisfaction with your products.\n - Monitor the perception of your brand across social media channels, identify brand evangelists, and monitor customer satisfaction.\n\n\n You can create your own custom model or use our pre-built sentiment model. See [Use the Pre-Built Sentiment Model](doc:use-pre-built-models-sentiment).\n\n- Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish. Leverage the Einstein Intent API to analyze text from emails, chats, or web forms to:\n\n - Determine what products prospects are interested in and send customer inquiries to the appropriate sales person.\n - Identify topics across unstructured text in emails, meeting notes, or account notes to summarize key points.\n - Route service cases to the correct agents or departments, or provide self-service options.\n - Understand customer posts to provide personalized self-service in your communities.\n\nCurrently, Einstein Language supports only English.","excerpt":"Create natural language processing models to classify the intent of text or to classify text as positive, negative, and neutral. Use the Einstein Language APIs to build natural language processing into your apps.","slug":"intro-to-einstein-language","type":"basic","title":"Introduction to Salesforce Einstein Language (Beta)","__v":0,"parentDoc":null,"childrenPages":[]}

Introduction to Salesforce Einstein Language (Beta)

Create natural language processing models to classify the intent of text or to classify text as positive, negative, and neutral. Use the Einstein Language APIs to build natural language processing into your apps.

[block:callout] { "type": "info", "title": "Note", "body": "This release contains a beta version of Einstein Language, which means it’s a high-quality feature with known limitations. Einstein Language isn’t generally available unless or until Salesforce announces its general availability in documentation or in press releases or public statements. We can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features. You can provide feedback and suggestions for Einstein Language on the [IdeaExchange](https://success.salesforce.com/ideaSearch) in the Success Community." } [/block] Einstein Language includes two APIs that you can use to unlock powerful insights within text. - Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes to understand the feeling behind text. You can use the Einstein Sentiment API to analyze emails, social media, and text from chat to: - Identify the sentiment of a prospect’s emails to trend a lead or opportunity up or down. - Provide proactive service by helping dissatisfied customers first or extending promotional offers to satisfied customers. - Use trending sentiment to identify product deficiencies and measure overall satisfaction or dissatisfaction with your products. - Monitor the perception of your brand across social media channels, identify brand evangelists, and monitor customer satisfaction. You can create your own custom model or use our pre-built sentiment model. See [Use the Pre-Built Sentiment Model](doc:use-pre-built-models-sentiment). - Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish. Leverage the Einstein Intent API to analyze text from emails, chats, or web forms to: - Determine what products prospects are interested in and send customer inquiries to the appropriate sales person. - Identify topics across unstructured text in emails, meeting notes, or account notes to summarize key points. - Route service cases to the correct agents or departments, or provide self-service options. - Understand customer posts to provide personalized self-service in your communities. Currently, Einstein Language supports only English.
[block:callout] { "type": "info", "title": "Note", "body": "This release contains a beta version of Einstein Language, which means it’s a high-quality feature with known limitations. Einstein Language isn’t generally available unless or until Salesforce announces its general availability in documentation or in press releases or public statements. We can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features. You can provide feedback and suggestions for Einstein Language on the [IdeaExchange](https://success.salesforce.com/ideaSearch) in the Success Community." } [/block] Einstein Language includes two APIs that you can use to unlock powerful insights within text. - Einstein Sentiment (Beta)—Classify the sentiment of text into positive, negative, and neutral classes to understand the feeling behind text. You can use the Einstein Sentiment API to analyze emails, social media, and text from chat to: - Identify the sentiment of a prospect’s emails to trend a lead or opportunity up or down. - Provide proactive service by helping dissatisfied customers first or extending promotional offers to satisfied customers. - Use trending sentiment to identify product deficiencies and measure overall satisfaction or dissatisfaction with your products. - Monitor the perception of your brand across social media channels, identify brand evangelists, and monitor customer satisfaction. You can create your own custom model or use our pre-built sentiment model. See [Use the Pre-Built Sentiment Model](doc:use-pre-built-models-sentiment). - Einstein Intent (Beta)—Categorize unstructured text into user-defined labels to better understand what users are trying to accomplish. Leverage the Einstein Intent API to analyze text from emails, chats, or web forms to: - Determine what products prospects are interested in and send customer inquiries to the appropriate sales person. - Identify topics across unstructured text in emails, meeting notes, or account notes to summarize key points. - Route service cases to the correct agents or departments, or provide self-service options. - Understand customer posts to provide personalized self-service in your communities. Currently, Einstein Language supports only English.
{"_id":"594c03c401cfe6000f40f563","project":"552d474ea86ee20d00780cd7","version":"590a25abd47da32300b68bd5","category":"5935bf0db940120025b85668","user":"573b5a1f37fcf72000a2e683","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-06-22T17:52:04.412Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"code":"{}","language":"json","status":400,"name":""}]},"auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"This graphic shows you the overall process to create a custom classifier that detects intent in text.\n\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/3342fe7-intent_and_sentiment_flow.png\",\n        \"intent_and_sentiment_flow.png\",\n        1310,\n        319,\n        \"#ebeff0\"\n      ]\n    }\n  ]\n}\n[/block]\n##Prerequisites##\n\n- **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account.\n\n- **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded as part of that process. This file contains your private key.\n\n- **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html)\n\n- **Get a Token**—The Einstein Platform Services APIs use OAuth 2.0 JWT bearer token flow for authorization. Use the [token page](https://api.einstein.ai/token) to upload your key file and generate a JWT token. For step-by-step instructions, see [Set Up Authorization](doc:set-up-auth).\n\n\n##Step 1: Define Your Classes and Gather Data##\n\nIn this step, you define the labels that you want the model to output when text is sent into the model for prediction. Then you gather text data for each of those labels, and that text is used to create a model.\n\nThis is typically the most time-consuming part of of the process. To make it easier for you to go through these steps, we provide a case routing [.csv file](http://einstein.ai/text/case_routing_intent.csv) that you can use. \n\nThe labels in the case routing dataset define the intent behind the text. The intent can then be used to route that case to the right department. Those labels are:\n\n- `Billing`\n- `Order Change`\n- `Password Help`\n- `Sales Opportunity`\n- `Shipping Info`\n\n##Step 2: Create the Dataset##\n\nIn this step, you use the data you gathered to create a dataset. In the following command, replace `<TOKEN>` with your JWT token and run the command. This command:\n\n- Creates a dataset called `case_routing_intent` from the specified .csv file by accessing the file via a URL\n- Creates five labels as specified in the .csv file\n- Creates 150 examples\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"path=http://einstein.ai/text/case_routing_intent.csv\\\" -F \\\"type=text-intent\\\"  https://api.einstein.ai/v2/language/datasets/upload\",\n      \"language\": \"curl\",\n      \"name\": null\n    }\n  ]\n}\n[/block]\nThis call is asynchronous, so the response looks like this JSON.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 1004804,\\n  \\\"name\\\": \\\"case_routing_intent.csv\\\",\\n  \\\"createdAt\\\": \\\"2017-06-22T19:31:58.000+0000.\\\",\\n  \\\"updatedAt\\\": \\\"2017-06-22T19:31:58.000+0000\\\",\\n  \\\"labelSummary\\\": {\\n    \\\"labels\\\": []\\n  },\\n  \\\"totalExamples\\\": 0,\\n  \\\"available\\\": false,\\n  \\\"statusMsg\\\": \\\"UPLOADING\\\",\\n  \\\"type\\\": \\\"text-intent\\\",\\n  \\\"object\\\": \\\"dataset\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nTo verify that the data has been loaded, make a call to get the dataset. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/language/datasets/<DATASET_ID>\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe results look something like this JSON. You know the dataset is ready when `available` is `true` and `statusMsg` is `SUCCEEDED`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": 1004804,\\n  \\\"name\\\": \\\"case_routing_intent.csv\\\",\\n  \\\"createdAt\\\": \\\"2017-06-22T19:31:58.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-06-22T19:31:59.000+0000\\\",\\n  \\\"labelSummary\\\": {\\n    \\\"labels\\\": [\\n      {\\n        \\\"id\\\": 23649,\\n        \\\"datasetId\\\": 1004804,\\n        \\\"name\\\": \\\"Order Change\\\",\\n        \\\"numExamples\\\": 26\\n      },\\n      {\\n        \\\"id\\\": 23650,\\n        \\\"datasetId\\\": 1004804,\\n        \\\"name\\\": \\\"Sales Opportunity\\\",\\n        \\\"numExamples\\\": 44\\n      },\\n      {\\n        \\\"id\\\": 23651,\\n        \\\"datasetId\\\": 1004804,\\n        \\\"name\\\": \\\"Billing\\\",\\n        \\\"numExamples\\\": 24\\n      },\\n      {\\n        \\\"id\\\": 23652,\\n        \\\"datasetId\\\": 1004804,\\n        \\\"name\\\": \\\"Shipping Info\\\",\\n        \\\"numExamples\\\": 30\\n      },\\n      {\\n        \\\"id\\\": 23653,\\n        \\\"datasetId\\\": 1004804,\\n        \\\"name\\\": \\\"Password Help\\\",\\n        \\\"numExamples\\\": 26\\n      }\\n    ]\\n  },\\n  \\\"totalExamples\\\": 150,\\n  \\\"totalLabels\\\": 5,\\n  \\\"available\\\": true,\\n  \\\"statusMsg\\\": \\\"SUCCEEDED\\\",\\n  \\\"type\\\": \\\"text-intent\\\",\\n  \\\"object\\\": \\\"dataset\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Step 3: Train the Dataset to Create the Model##\n\nUse this cURL command to train the dataset and create a model. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"name=Case Routing Model\\\" -F \\\"datasetId=<DATASET_ID>\\\" https://api.einstein.ai/v2/language/train\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe response looks like this JSON.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 1004804,\\n  \\\"datasetVersionId\\\": 0,\\n  \\\"name\\\": \\\"Case Routing Model\\\",\\n  \\\"status\\\": \\\"QUEUED\\\",\\n  \\\"progress\\\": 0,\\n  \\\"createdAt\\\": \\\"2017-06-22T19:39:38.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-06-22T19:39:38.000+0000\\\",\\n  \\\"learningRate\\\": 0,\\n  \\\"epochs\\\": 0,\\n  \\\"queuePosition\\\": 1,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"5SXGNLCCOFGTMNMQYEOTAGBPVU\\\",\\n  \\\"trainParams\\\": null,\\n  \\\"trainStats\\\": null,\\n  \\\"modelType\\\": \\\"text-intent\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nUse the `modelId` to make this call and get the training status. Replace`<TOKEN>` with your JWT token and `MODEL_ID` with the ID of the model you created.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" https://api.einstein.ai/v2/language/train/<MODEL_ID>\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe training status response looks like this JSON. The `status` of `SUCCEEDED` means that the model is ready for predictions.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"datasetId\\\": 1004804,\\n  \\\"datasetVersionId\\\": 2473,\\n  \\\"name\\\": \\\"Case Routing Model\\\",\\n  \\\"status\\\": \\\"SUCCEEDED\\\",\\n  \\\"progress\\\": 1,\\n  \\\"createdAt\\\": \\\"2017-06-22T19:39:38.000+0000\\\",\\n  \\\"updatedAt\\\": \\\"2017-06-22T19:43:39.000+0000\\\",\\n  \\\"learningRate\\\": 0,\\n  \\\"epochs\\\": 300,\\n  \\\"object\\\": \\\"training\\\",\\n  \\\"modelId\\\": \\\"5SXGNLCCOFGTMNMQYEOTAGBPVU\\\",\\n  \\\"trainParams\\\": null,\\n  \\\"trainStats\\\": {\\n    \\\"labels\\\": 5,\\n    \\\"examples\\\": 150,\\n    \\\"totalTime\\\": \\\"00:03:54:159\\\",\\n    \\\"trainingTime\\\": \\\"00:03:53:150\\\",\\n    \\\"earlyStopping\\\": true,\\n    \\\"lastEpochDone\\\": 267,\\n    \\\"modelSaveTime\\\": \\\"00:00:01:561\\\",\\n    \\\"testSplitSize\\\": 11,\\n    \\\"trainSplitSize\\\": 139,\\n    \\\"datasetLoadTime\\\": \\\"00:00:01:008\\\"\\n  },\\n  \\\"modelType\\\": \\\"text-intent\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n##Step 4: Send Text in for Prediction##\n\nNow your model is ready to go! To test it out, send some text in for prediction. This cURL call takes the `modelId` of the model from which you want to return a prediction and the text string to analyze. Replace `<TOKEN>` with your JWT token and `<MODEL_ID>` with the ID of your model.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST -H \\\"Authorization: Bearer <TOKEN>\\\" -H \\\"Cache-Control: no-cache\\\" -H \\\"Content-Type: multipart/form-data\\\" -F \\\"modelId=<MODEL_ID>\\\" -F \\\"document=how is my package being shipped?\\\"  https://api.einstein.ai/v2/language/intent\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nThe response looks like this JSON. The model predicts that the text indicates that the user has a comment or question about shipping, so the model returns `Shipping Info` as the top probability. Your app can then use this information to route the case to the right department or agent.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"probabilities\\\": [\\n    {\\n      \\\"label\\\": \\\"Shipping Info\\\",\\n      \\\"probability\\\": 0.82365495\\n    },\\n    {\\n      \\\"label\\\": \\\"Sales Opportunity\\\",\\n      \\\"probability\\\": 0.12523715\\n    },\\n    {\\n      \\\"label\\\": \\\"Billing\\\",\\n      \\\"probability\\\": 0.0487557\\n    },\\n    {\\n      \\\"label\\\": \\\"Order Change\\\",\\n      \\\"probability\\\": 0.0021365683\\n    },\\n    {\\n      \\\"label\\\": \\\"Password Help\\\",\\n      \\\"probability\\\": 0.0002156619\\n    }\\n  ],\\n  \\\"object\\\": \\\"predictresponse\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","excerpt":"This quick start shows you how to use the Einstein Intent API to create a model to route support cases. You can then use this model to analyze text and infer what the user wants to accomplish.","slug":"intent-quick-start-custom-classifier","type":"basic","title":"Einstein Intent (Beta) Quick Start","__v":0,"parentDoc":null,"childrenPages":[]}

Einstein Intent (Beta) Quick Start

This quick start shows you how to use the Einstein Intent API to create a model to route support cases. You can then use this model to analyze text and infer what the user wants to accomplish.

This graphic shows you the overall process to create a custom classifier that detects intent in text. [block:image] { "images": [ { "image": [ "https://files.readme.io/3342fe7-intent_and_sentiment_flow.png", "intent_and_sentiment_flow.png", 1310, 319, "#ebeff0" ] } ] } [/block] ##Prerequisites## - **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded as part of that process. This file contains your private key. - **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html) - **Get a Token**—The Einstein Platform Services APIs use OAuth 2.0 JWT bearer token flow for authorization. Use the [token page](https://api.einstein.ai/token) to upload your key file and generate a JWT token. For step-by-step instructions, see [Set Up Authorization](doc:set-up-auth). ##Step 1: Define Your Classes and Gather Data## In this step, you define the labels that you want the model to output when text is sent into the model for prediction. Then you gather text data for each of those labels, and that text is used to create a model. This is typically the most time-consuming part of of the process. To make it easier for you to go through these steps, we provide a case routing [.csv file](http://einstein.ai/text/case_routing_intent.csv) that you can use. The labels in the case routing dataset define the intent behind the text. The intent can then be used to route that case to the right department. Those labels are: - `Billing` - `Order Change` - `Password Help` - `Sales Opportunity` - `Shipping Info` ##Step 2: Create the Dataset## In this step, you use the data you gathered to create a dataset. In the following command, replace `<TOKEN>` with your JWT token and run the command. This command: - Creates a dataset called `case_routing_intent` from the specified .csv file by accessing the file via a URL - Creates five labels as specified in the .csv file - Creates 150 examples [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://einstein.ai/text/case_routing_intent.csv\" -F \"type=text-intent\" https://api.einstein.ai/v2/language/datasets/upload", "language": "curl", "name": null } ] } [/block] This call is asynchronous, so the response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"id\": 1004804,\n \"name\": \"case_routing_intent.csv\",\n \"createdAt\": \"2017-06-22T19:31:58.000+0000.\",\n \"updatedAt\": \"2017-06-22T19:31:58.000+0000\",\n \"labelSummary\": {\n \"labels\": []\n },\n \"totalExamples\": 0,\n \"available\": false,\n \"statusMsg\": \"UPLOADING\",\n \"type\": \"text-intent\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] To verify that the data has been loaded, make a call to get the dataset. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/language/datasets/<DATASET_ID>", "language": "curl" } ] } [/block] The results look something like this JSON. You know the dataset is ready when `available` is `true` and `statusMsg` is `SUCCEEDED`. [block:code] { "codes": [ { "code": "{\n \"id\": 1004804,\n \"name\": \"case_routing_intent.csv\",\n \"createdAt\": \"2017-06-22T19:31:58.000+0000\",\n \"updatedAt\": \"2017-06-22T19:31:59.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 23649,\n \"datasetId\": 1004804,\n \"name\": \"Order Change\",\n \"numExamples\": 26\n },\n {\n \"id\": 23650,\n \"datasetId\": 1004804,\n \"name\": \"Sales Opportunity\",\n \"numExamples\": 44\n },\n {\n \"id\": 23651,\n \"datasetId\": 1004804,\n \"name\": \"Billing\",\n \"numExamples\": 24\n },\n {\n \"id\": 23652,\n \"datasetId\": 1004804,\n \"name\": \"Shipping Info\",\n \"numExamples\": 30\n },\n {\n \"id\": 23653,\n \"datasetId\": 1004804,\n \"name\": \"Password Help\",\n \"numExamples\": 26\n }\n ]\n },\n \"totalExamples\": 150,\n \"totalLabels\": 5,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"text-intent\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] ##Step 3: Train the Dataset to Create the Model## Use this cURL command to train the dataset and create a model. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Case Routing Model\" -F \"datasetId=<DATASET_ID>\" https://api.einstein.ai/v2/language/train", "language": "curl" } ] } [/block] The response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1004804,\n \"datasetVersionId\": 0,\n \"name\": \"Case Routing Model\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-06-22T19:39:38.000+0000\",\n \"updatedAt\": \"2017-06-22T19:39:38.000+0000\",\n \"learningRate\": 0,\n \"epochs\": 0,\n \"queuePosition\": 1,\n \"object\": \"training\",\n \"modelId\": \"5SXGNLCCOFGTMNMQYEOTAGBPVU\",\n \"trainParams\": null,\n \"trainStats\": null,\n \"modelType\": \"text-intent\"\n}", "language": "json" } ] } [/block] Use the `modelId` to make this call and get the training status. Replace`<TOKEN>` with your JWT token and `MODEL_ID` with the ID of the model you created. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/language/train/<MODEL_ID>", "language": "curl" } ] } [/block] The training status response looks like this JSON. The `status` of `SUCCEEDED` means that the model is ready for predictions. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1004804,\n \"datasetVersionId\": 2473,\n \"name\": \"Case Routing Model\",\n \"status\": \"SUCCEEDED\",\n \"progress\": 1,\n \"createdAt\": \"2017-06-22T19:39:38.000+0000\",\n \"updatedAt\": \"2017-06-22T19:43:39.000+0000\",\n \"learningRate\": 0,\n \"epochs\": 300,\n \"object\": \"training\",\n \"modelId\": \"5SXGNLCCOFGTMNMQYEOTAGBPVU\",\n \"trainParams\": null,\n \"trainStats\": {\n \"labels\": 5,\n \"examples\": 150,\n \"totalTime\": \"00:03:54:159\",\n \"trainingTime\": \"00:03:53:150\",\n \"earlyStopping\": true,\n \"lastEpochDone\": 267,\n \"modelSaveTime\": \"00:00:01:561\",\n \"testSplitSize\": 11,\n \"trainSplitSize\": 139,\n \"datasetLoadTime\": \"00:00:01:008\"\n },\n \"modelType\": \"text-intent\"\n}", "language": "json" } ] } [/block] ##Step 4: Send Text in for Prediction## Now your model is ready to go! To test it out, send some text in for prediction. This cURL call takes the `modelId` of the model from which you want to return a prediction and the text string to analyze. Replace `<TOKEN>` with your JWT token and `<MODEL_ID>` with the ID of your model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=<MODEL_ID>\" -F \"document=how is my package being shipped?\" https://api.einstein.ai/v2/language/intent", "language": "curl" } ] } [/block] The response looks like this JSON. The model predicts that the text indicates that the user has a comment or question about shipping, so the model returns `Shipping Info` as the top probability. Your app can then use this information to route the case to the right department or agent. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Shipping Info\",\n \"probability\": 0.82365495\n },\n {\n \"label\": \"Sales Opportunity\",\n \"probability\": 0.12523715\n },\n {\n \"label\": \"Billing\",\n \"probability\": 0.0487557\n },\n {\n \"label\": \"Order Change\",\n \"probability\": 0.0021365683\n },\n {\n \"label\": \"Password Help\",\n \"probability\": 0.0002156619\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block]
This graphic shows you the overall process to create a custom classifier that detects intent in text. [block:image] { "images": [ { "image": [ "https://files.readme.io/3342fe7-intent_and_sentiment_flow.png", "intent_and_sentiment_flow.png", 1310, 319, "#ebeff0" ] } ] } [/block] ##Prerequisites## - **Sign up for an account**—Follow the steps in [What You Need to Call the API](doc:what-you-need-to-call-api) to set up your Einstein Platform Services account. - **Find your key file**—If you've already created an account, locate the `einstein_platform.pem` file that you downloaded as part of that process. This file contains your private key. - **Install cURL**—We’ll be using the cURL command line tool throughout the following steps. This tool is installed by default on Linux and OSX. If you don’t already have it installed, download it from [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html) - **Get a Token**—The Einstein Platform Services APIs use OAuth 2.0 JWT bearer token flow for authorization. Use the [token page](https://api.einstein.ai/token) to upload your key file and generate a JWT token. For step-by-step instructions, see [Set Up Authorization](doc:set-up-auth). ##Step 1: Define Your Classes and Gather Data## In this step, you define the labels that you want the model to output when text is sent into the model for prediction. Then you gather text data for each of those labels, and that text is used to create a model. This is typically the most time-consuming part of of the process. To make it easier for you to go through these steps, we provide a case routing [.csv file](http://einstein.ai/text/case_routing_intent.csv) that you can use. The labels in the case routing dataset define the intent behind the text. The intent can then be used to route that case to the right department. Those labels are: - `Billing` - `Order Change` - `Password Help` - `Sales Opportunity` - `Shipping Info` ##Step 2: Create the Dataset## In this step, you use the data you gathered to create a dataset. In the following command, replace `<TOKEN>` with your JWT token and run the command. This command: - Creates a dataset called `case_routing_intent` from the specified .csv file by accessing the file via a URL - Creates five labels as specified in the .csv file - Creates 150 examples [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://einstein.ai/text/case_routing_intent.csv\" -F \"type=text-intent\" https://api.einstein.ai/v2/language/datasets/upload", "language": "curl", "name": null } ] } [/block] This call is asynchronous, so the response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"id\": 1004804,\n \"name\": \"case_routing_intent.csv\",\n \"createdAt\": \"2017-06-22T19:31:58.000+0000.\",\n \"updatedAt\": \"2017-06-22T19:31:58.000+0000\",\n \"labelSummary\": {\n \"labels\": []\n },\n \"totalExamples\": 0,\n \"available\": false,\n \"statusMsg\": \"UPLOADING\",\n \"type\": \"text-intent\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] To verify that the data has been loaded, make a call to get the dataset. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/language/datasets/<DATASET_ID>", "language": "curl" } ] } [/block] The results look something like this JSON. You know the dataset is ready when `available` is `true` and `statusMsg` is `SUCCEEDED`. [block:code] { "codes": [ { "code": "{\n \"id\": 1004804,\n \"name\": \"case_routing_intent.csv\",\n \"createdAt\": \"2017-06-22T19:31:58.000+0000\",\n \"updatedAt\": \"2017-06-22T19:31:59.000+0000\",\n \"labelSummary\": {\n \"labels\": [\n {\n \"id\": 23649,\n \"datasetId\": 1004804,\n \"name\": \"Order Change\",\n \"numExamples\": 26\n },\n {\n \"id\": 23650,\n \"datasetId\": 1004804,\n \"name\": \"Sales Opportunity\",\n \"numExamples\": 44\n },\n {\n \"id\": 23651,\n \"datasetId\": 1004804,\n \"name\": \"Billing\",\n \"numExamples\": 24\n },\n {\n \"id\": 23652,\n \"datasetId\": 1004804,\n \"name\": \"Shipping Info\",\n \"numExamples\": 30\n },\n {\n \"id\": 23653,\n \"datasetId\": 1004804,\n \"name\": \"Password Help\",\n \"numExamples\": 26\n }\n ]\n },\n \"totalExamples\": 150,\n \"totalLabels\": 5,\n \"available\": true,\n \"statusMsg\": \"SUCCEEDED\",\n \"type\": \"text-intent\",\n \"object\": \"dataset\"\n}", "language": "json" } ] } [/block] ##Step 3: Train the Dataset to Create the Model## Use this cURL command to train the dataset and create a model. Replace `<TOKEN>` with your JWT token and `<DATASET_ID>` with ID of the dataset you created [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"name=Case Routing Model\" -F \"datasetId=<DATASET_ID>\" https://api.einstein.ai/v2/language/train", "language": "curl" } ] } [/block] The response looks like this JSON. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1004804,\n \"datasetVersionId\": 0,\n \"name\": \"Case Routing Model\",\n \"status\": \"QUEUED\",\n \"progress\": 0,\n \"createdAt\": \"2017-06-22T19:39:38.000+0000\",\n \"updatedAt\": \"2017-06-22T19:39:38.000+0000\",\n \"learningRate\": 0,\n \"epochs\": 0,\n \"queuePosition\": 1,\n \"object\": \"training\",\n \"modelId\": \"5SXGNLCCOFGTMNMQYEOTAGBPVU\",\n \"trainParams\": null,\n \"trainStats\": null,\n \"modelType\": \"text-intent\"\n}", "language": "json" } ] } [/block] Use the `modelId` to make this call and get the training status. Replace`<TOKEN>` with your JWT token and `MODEL_ID` with the ID of the model you created. [block:code] { "codes": [ { "code": "curl -X GET -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" https://api.einstein.ai/v2/language/train/<MODEL_ID>", "language": "curl" } ] } [/block] The training status response looks like this JSON. The `status` of `SUCCEEDED` means that the model is ready for predictions. [block:code] { "codes": [ { "code": "{\n \"datasetId\": 1004804,\n \"datasetVersionId\": 2473,\n \"name\": \"Case Routing Model\",\n \"status\": \"SUCCEEDED\",\n \"progress\": 1,\n \"createdAt\": \"2017-06-22T19:39:38.000+0000\",\n \"updatedAt\": \"2017-06-22T19:43:39.000+0000\",\n \"learningRate\": 0,\n \"epochs\": 300,\n \"object\": \"training\",\n \"modelId\": \"5SXGNLCCOFGTMNMQYEOTAGBPVU\",\n \"trainParams\": null,\n \"trainStats\": {\n \"labels\": 5,\n \"examples\": 150,\n \"totalTime\": \"00:03:54:159\",\n \"trainingTime\": \"00:03:53:150\",\n \"earlyStopping\": true,\n \"lastEpochDone\": 267,\n \"modelSaveTime\": \"00:00:01:561\",\n \"testSplitSize\": 11,\n \"trainSplitSize\": 139,\n \"datasetLoadTime\": \"00:00:01:008\"\n },\n \"modelType\": \"text-intent\"\n}", "language": "json" } ] } [/block] ##Step 4: Send Text in for Prediction## Now your model is ready to go! To test it out, send some text in for prediction. This cURL call takes the `modelId` of the model from which you want to return a prediction and the text string to analyze. Replace `<TOKEN>` with your JWT token and `<MODEL_ID>` with the ID of your model. [block:code] { "codes": [ { "code": "curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"modelId=<MODEL_ID>\" -F \"document=how is my package being shipped?\" https://api.einstein.ai/v2/language/intent", "language": "curl" } ] } [/block] The response looks like this JSON. The model predicts that the text indicates that the user has a comment or question about shipping, so the model returns `Shipping Info` as the top probability. Your app can then use this information to route the case to the right department or agent. [block:code] { "codes": [ { "code": "{\n \"probabilities\": [\n {\n \"label\": \"Shipping Info\",\n \"probability\": 0.82365495\n },\n {\n \"label\": \"Sales Opportunity\",\n \"probability\": 0.12523715\n },\n {\n \"label\": \"Billing\",\n \"probability\": 0.0487557\n },\n {\n \"label\": \"Order Change\",\n \"probability\": 0.0021365683\n },\n {\n \"label\": \"Password Help\",\n \"probability\": 0.0002156619\n }\n ],\n \"object\": \"predictresponse\"\n}", "language": "json" } ] } [/block]
{"_id":"5935bed9b940120025b854e6","project":"552d474ea86ee20d00780cd7","version":"590a25abd47da32300b68bd5","category":"5935bf0db940120025b85668","user":"573b5a1f37fcf72000a2e683","updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-06-05T20:28:09.075Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"language":"curl","code":"curl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"data=@C:\\Data\\weather.csv\" -F \"type=text-intent\"   https://api.einstein.ai/v2/language/datasets/upload\n\ncurl -X POST -H \"Authorization: Bearer <TOKEN>\" -H \"Cache-Control: no-cache\" -H \"Content-Type: multipart/form-data\" -F \"path=http://einstein.ai/text/weather.csv\" -F \"type=text-intent\"  https://api.einstein.ai/v2/language/datasets/upload"}]},"settings":"","results":{"codes":[{"name":"","code":"{\n  \"id\": 1001408,\n  \"name\": \"weather\",\n  \"createdAt\": \"2017-06-05T20:33:56.000+0000\",\n  \"updatedAt\": \"2017-06-05T20:33:56.000+0000\",\n  \"labelSummary\": {\n    \"labels\": []\n  },\n  \"totalExamples\": 0,\n  \"available\": false,\n  \"statusMsg\": \"UPLOADING\",\n  \"type\": \"text-intent\",\n  \"object\": \"dataset\"\n}","language":"json","status":200},{"code":"{}","language":"json","status":400,"name":""}]},"method":"post","auth":"required","params":[],"url":"/language/datasets/upload"},"isReference":false,"order":2,"body":"##Request Parameters##\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"`data`\",\n    \"2-0\": \"`path`\",\n    \"0-1\": \"string\",\n    \"2-1\": \"string\",\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-2\": \"Path to the .csv, .tsv, or .json file on the local drive (FilePart). The maximum file size you can upload from a local drive is 50 MB.\",\n    \"0-3\": \"2.0\",\n    \"2-2\": \"URL of the .csv, .tsv, or .json file. The maximum file size you can upload from a web location is 1 GB.\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`type`\",\n    \"3-1\": \"string\",\n    \"3-2\": \"Type of dataset data. Valid values are:\\n- `text-intent`\\n- `text-sentiment`\",\n    \"3-3\": \"2.0\",\n    \"1-2\": \"Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the file name.\",\n    \"1-0\": \"`name`\",\n    \"1-1\": \"string\",\n    \"1-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 4\n}\n[/block]\nThe API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-lang-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. \n\nKeep the following points in mind when creating datasets.\n- If your file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter.\n \n- If you have a large amount of data (gigabytes), you might want to break up your data into multiple files. You can load the first file using this call and then load subsequent files using PUT. See [Create Examples From a File](doc:create-lang-examples-from-file).\n\n- The maximum label name length is 180 characters. If a file contains a class label name greater than 180 characters, the label is created in the dataset, but  the API truncates the label name to 180 characters.\n\n- If a file contains duplicate intent or sentiment strings, only the first one is loaded.\n\n- You must have at least two labels in the dataset. If you don't have at least two labels, you can create the dataset but training the dataset fails.\n\n- If the dataset type is `text-intent`, each label must have at least 5 examples.\n\n- If the dataset type is `text-sentiment`, each label must have at least 100 examples.\n\n- In the case of duplicate text strings in the file, only the first string is uploaded. If there's more than one text string with the same text, only the first string is uploaded and the others are skipped. This is true whether the duplicate text strings have the same label or different labels. \n\n- When specifying the URL for a file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/weather.csv?dl=1`\n\n- If you create a dataset in Apex code, be sure that you reference the URL to the file with `https` and not `http`.\n\n##Response Body##\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Name\",\n    \"h-1\": \"Type\",\n    \"h-2\": \"Description\",\n    \"h-3\": \"Available Version\",\n    \"0-0\": \"`available`\",\n    \"0-1\": \"boolean\",\n    \"0-2\": \"Specifies whether the dataset is ready to be trained.\",\n    \"0-3\": \"2.0\",\n    \"2-0\": \"`id`\",\n    \"2-1\": \"long\",\n    \"2-2\": \"Dataset ID.\",\n    \"2-3\": \"2.0\",\n    \"3-0\": \"`labelSummary`\",\n    \"3-1\": \"object\",\n    \"3-2\": \"Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.\",\n    \"3-3\": \"2.0\",\n    \"4-0\": \"`name`\",\n    \"4-1\": \"string\",\n    \"4-2\": \"Name of the dataset. The API uses the name of the file for the dataset name.\",\n    \"4-3\": \"2.0\",\n    \"5-0\": \"`object`\",\n    \"5-1\": \"string\",\n    \"5-2\": \"Object returned; in this case, `dataset`.\",\n    \"5-3\": \"2.0\",\n    \"7-0\": \"`totalExamples`\",\n    \"7-1\": \"int\",\n    \"7-2\": \"Total number of examples in the dataset.\",\n    \"7-3\": \"2.0\",\n    \"9-0\": \"`updatedAt`\",\n    \"9-1\": \"date\",\n    \"9-2\": \"Date and time that the dataset was last updated.\",\n    \"9-3\": \"2.0\",\n    \"1-0\": \"`createdAt`\",\n    \"1-1\": \"date\",\n    \"1-2\": \"Date and time that the dataset was created.\",\n    \"1-3\": \"2.0\",\n    \"6-0\": \"`statusMsg`\",\n    \"6-1\": \"string\",\n    \"6-2\": \"Status of the dataset creation and  data upload. Valid values are:\\n- `FAILURE: <failure_reason>`—Data upload has failed.\\n- `SUCCEEDED`—Data upload  is complete.\\n- `UPLOADING`—Data upload is in progress.\",\n    \"6-3\": \"2.0\",\n    \"8-0\": \"`type`\",\n    \"8-1\": \"string\",\n    \"8-2\": \"Type of dataset data. Valid values are:\\n- `text-intent`\\n- `text-sentiment`\",\n    \"8-3\": \"2.0\"\n  },\n  \"cols\": 4,\n  \"rows\": 10\n}\n[/block]\nEach dataset type supports different file formats. This table lists the file formats supported by each dataset type.\n[block:parameters]\n{\n  \"data\": {\n    \"h-1\": \"text-intent\",\n    \"h-2\": \"text-sentiment\",\n    \"0-0\": \".csv file\",\n    \"1-0\": \".tsv file\",\n    \"2-0\": \".json file\",\n    \"0-1\": \"**<span style=\\\"color:green\\\">Y</span>**\",\n    \"1-1\": \"**<span style=\\\"color:green\\\">Y</span>**\",\n    \"2-1\": \"**<span style=\\\"color:green\\\">Y</span>**\",\n    \"0-2\": \"**<span style=\\\"color:green\\\">Y</span>**\",\n    \"1-2\": \"**<span style=\\\"color:green\\\">Y</span>**\",\n    \"2-2\": \"**<span style=\\\"color:red\\\">N</span>**\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\n##CSV File Format Considerations##\n- You can use a .csv file to create both intent and sentiment datasets.\n\n- When you create a dataset from a .csv file, the dataset name is inherited from the file name.\n\n- Each .csv file contains sentiment or intent data in this format: `\"sentiment or intent string\", label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"what's the weather look like\\\",current-weather\\n\\\"is it raining\\\",current-weather\\n\\\"what's the temperature\\\",current-weather\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n- You can download example intent .csv files from [http://einstein.ai/text/weather.csv](http://einstein.ai/text/weather.csv) and [http://einstein.ai/text/case_routing_intent.csv](http://einstein.ai/text/case_routing_intent.csv).\n\n##TSV File Format Considerations##\n- You can use a .tsv file to create both intent and sentiment datasets.\n\n- When you create a dataset from a .tsv file, the dataset name is inherited from the file name.\n\n- Each .tsv file contains sentiment or intent data in this format: `\"sentiment or intent string\"<tab_char>label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"\\\"what's the weather look like\\\"\\tcurrent-weather\\n\\\"is it raining\\\"\\tcurrent-weather\\n\\\"what's the temperature\\\"\\tcurrent-weather\",\n      \"language\": \"text\"\n    }\n  ]\n}\n[/block]\n- You can download example intent .tsv files from [http://einstein.ai/text/weather.tsv](http://einstein.ai/text/weather.tsv) [http://einstein.ai/text/case_routing_intent.tsv](http://einstein.ai/text/case_routing_intent.tsv).\n\n##JSON File Format Considerations##\n- You can use a .json file to create only an intent dataset.\n\n- The top-level object must be called `\"intents\"` as shown in the example file.\n\n- When you create a dataset from a .json file, the dataset name is inherited from the file name.\n\n- The JSON structure is a top-level object that contains multiple arrays. Each array contains the intent strings in double quotes. This image shows the structure of the JSON file. The labels are `current-weather`, `five-day-forecast`, and `hourly-forecast`. The content in double quotes becomes a single example that has the specified label.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/3c467a5-intent_json_file_structure.png\",\n        \"intent_json_file_structure.png\",\n        392,\n        650,\n        \"#778c41\"\n      ]\n    }\n  ]\n}\n[/block]\n- You can download example intent .json files from [http://einstein.ai/text/weather.json](http://einstein.ai/text/weather.json) and [http://einstein.ai/text/case_routing_intent.json](http://einstein.ai/text/case_routing_intent.json).","excerpt":"Creates a dataset, labels, and examples from the specified .csv, .tsv, or .json file. The call returns immediately and continues to upload data in the background.","slug":"create-a-lang-dataset-from-file","type":"post","title":"Create a Dataset From a File Asynchronously","__v":0,"parentDoc":null,"childrenPages":[]}

postCreate a Dataset From a File Asynchronously

Creates a dataset, labels, and examples from the specified .csv, .tsv, or .json file. The call returns immediately and continues to upload data in the background.

##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .csv, .tsv, or .json file on the local drive (FilePart). The maximum file size you can upload from a local drive is 50 MB.", "0-3": "2.0", "2-2": "URL of the .csv, .tsv, or .json file. The maximum file size you can upload from a web location is 1 GB.", "2-3": "2.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `text-intent`\n- `text-sentiment`", "3-3": "2.0", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the file name.", "1-0": "`name`", "1-1": "string", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] The API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-lang-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. Keep the following points in mind when creating datasets. - If your file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter. - If you have a large amount of data (gigabytes), you might want to break up your data into multiple files. You can load the first file using this call and then load subsequent files using PUT. See [Create Examples From a File](doc:create-lang-examples-from-file). - The maximum label name length is 180 characters. If a file contains a class label name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If a file contains duplicate intent or sentiment strings, only the first one is loaded. - You must have at least two labels in the dataset. If you don't have at least two labels, you can create the dataset but training the dataset fails. - If the dataset type is `text-intent`, each label must have at least 5 examples. - If the dataset type is `text-sentiment`, each label must have at least 100 examples. - In the case of duplicate text strings in the file, only the first string is uploaded. If there's more than one text string with the same text, only the first string is uploaded and the others are skipped. This is true whether the duplicate text strings have the same label or different labels. - When specifying the URL for a file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/weather.csv?dl=1` - If you create a dataset in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "2.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "2.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.", "3-3": "2.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset. The API uses the name of the file for the dataset name.", "4-3": "2.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "2.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "2.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "2.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "2.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "2.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `text-intent`\n- `text-sentiment`", "8-3": "2.0" }, "cols": 4, "rows": 10 } [/block] Each dataset type supports different file formats. This table lists the file formats supported by each dataset type. [block:parameters] { "data": { "h-1": "text-intent", "h-2": "text-sentiment", "0-0": ".csv file", "1-0": ".tsv file", "2-0": ".json file", "0-1": "**<span style=\"color:green\">Y</span>**", "1-1": "**<span style=\"color:green\">Y</span>**", "2-1": "**<span style=\"color:green\">Y</span>**", "0-2": "**<span style=\"color:green\">Y</span>**", "1-2": "**<span style=\"color:green\">Y</span>**", "2-2": "**<span style=\"color:red\">N</span>**" }, "cols": 3, "rows": 3 } [/block] ##CSV File Format Considerations## - You can use a .csv file to create both intent and sentiment datasets. - When you create a dataset from a .csv file, the dataset name is inherited from the file name. - Each .csv file contains sentiment or intent data in this format: `"sentiment or intent string", label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`. [block:code] { "codes": [ { "code": "\"what's the weather look like\",current-weather\n\"is it raining\",current-weather\n\"what's the temperature\",current-weather", "language": "text" } ] } [/block] - You can download example intent .csv files from [http://einstein.ai/text/weather.csv](http://einstein.ai/text/weather.csv) and [http://einstein.ai/text/case_routing_intent.csv](http://einstein.ai/text/case_routing_intent.csv). ##TSV File Format Considerations## - You can use a .tsv file to create both intent and sentiment datasets. - When you create a dataset from a .tsv file, the dataset name is inherited from the file name. - Each .tsv file contains sentiment or intent data in this format: `"sentiment or intent string"<tab_char>label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`. [block:code] { "codes": [ { "code": "\"what's the weather look like\"\tcurrent-weather\n\"is it raining\"\tcurrent-weather\n\"what's the temperature\"\tcurrent-weather", "language": "text" } ] } [/block] - You can download example intent .tsv files from [http://einstein.ai/text/weather.tsv](http://einstein.ai/text/weather.tsv) [http://einstein.ai/text/case_routing_intent.tsv](http://einstein.ai/text/case_routing_intent.tsv). ##JSON File Format Considerations## - You can use a .json file to create only an intent dataset. - The top-level object must be called `"intents"` as shown in the example file. - When you create a dataset from a .json file, the dataset name is inherited from the file name. - The JSON structure is a top-level object that contains multiple arrays. Each array contains the intent strings in double quotes. This image shows the structure of the JSON file. The labels are `current-weather`, `five-day-forecast`, and `hourly-forecast`. The content in double quotes becomes a single example that has the specified label. [block:image] { "images": [ { "image": [ "https://files.readme.io/3c467a5-intent_json_file_structure.png", "intent_json_file_structure.png", 392, 650, "#778c41" ] } ] } [/block] - You can download example intent .json files from [http://einstein.ai/text/weather.json](http://einstein.ai/text/weather.json) and [http://einstein.ai/text/case_routing_intent.json](http://einstein.ai/text/case_routing_intent.json).

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



##Request Parameters## [block:parameters] { "data": { "0-0": "`data`", "2-0": "`path`", "0-1": "string", "2-1": "string", "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-2": "Path to the .csv, .tsv, or .json file on the local drive (FilePart). The maximum file size you can upload from a local drive is 50 MB.", "0-3": "2.0", "2-2": "URL of the .csv, .tsv, or .json file. The maximum file size you can upload from a web location is 1 GB.", "2-3": "2.0", "3-0": "`type`", "3-1": "string", "3-2": "Type of dataset data. Valid values are:\n- `text-intent`\n- `text-sentiment`", "3-3": "2.0", "1-2": "Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the file name.", "1-0": "`name`", "1-1": "string", "1-3": "2.0" }, "cols": 4, "rows": 4 } [/block] The API call is asynchronous, so you receive a dataset ID back immediately but the `available` value is `false` and the `statusMsg` value is `UPLOADING`. Use the dataset ID and make a call to [Get a Dataset](doc:get-a-lang-dataset) to query when the upload is complete. When `available` is `true` and `statusMsg` is `SUCCEEDED`, the data upload is complete, and you can train the dataset to create a model. Keep the following points in mind when creating datasets. - If your file is more than 20 MB, for better performance, we recommend that you upload it to a cloud location that doesn't require authentication and pass the URL in the `path` parameter. - If you have a large amount of data (gigabytes), you might want to break up your data into multiple files. You can load the first file using this call and then load subsequent files using PUT. See [Create Examples From a File](doc:create-lang-examples-from-file). - The maximum label name length is 180 characters. If a file contains a class label name greater than 180 characters, the label is created in the dataset, but the API truncates the label name to 180 characters. - If a file contains duplicate intent or sentiment strings, only the first one is loaded. - You must have at least two labels in the dataset. If you don't have at least two labels, you can create the dataset but training the dataset fails. - If the dataset type is `text-intent`, each label must have at least 5 examples. - If the dataset type is `text-sentiment`, each label must have at least 100 examples. - In the case of duplicate text strings in the file, only the first string is uploaded. If there's more than one text string with the same text, only the first string is uploaded and the others are skipped. This is true whether the duplicate text strings have the same label or different labels. - When specifying the URL for a file in a cloud drive service like Dropbox, be sure it's a link to the file and not a link to the interactive download page. For example, the URL should look like `https://www.dropbox.com/s/abcdxyz/weather.csv?dl=1` - If you create a dataset in Apex code, be sure that you reference the URL to the file with `https` and not `http`. ##Response Body## [block:parameters] { "data": { "h-0": "Name", "h-1": "Type", "h-2": "Description", "h-3": "Available Version", "0-0": "`available`", "0-1": "boolean", "0-2": "Specifies whether the dataset is ready to be trained.", "0-3": "2.0", "2-0": "`id`", "2-1": "long", "2-2": "Dataset ID.", "2-3": "2.0", "3-0": "`labelSummary`", "3-1": "object", "3-2": "Contains the `labels` array that contains all the labels for the dataset. This is an asynchronous call, so the `labels` array is empty when you first create a dataset.", "3-3": "2.0", "4-0": "`name`", "4-1": "string", "4-2": "Name of the dataset. The API uses the name of the file for the dataset name.", "4-3": "2.0", "5-0": "`object`", "5-1": "string", "5-2": "Object returned; in this case, `dataset`.", "5-3": "2.0", "7-0": "`totalExamples`", "7-1": "int", "7-2": "Total number of examples in the dataset.", "7-3": "2.0", "9-0": "`updatedAt`", "9-1": "date", "9-2": "Date and time that the dataset was last updated.", "9-3": "2.0", "1-0": "`createdAt`", "1-1": "date", "1-2": "Date and time that the dataset was created.", "1-3": "2.0", "6-0": "`statusMsg`", "6-1": "string", "6-2": "Status of the dataset creation and data upload. Valid values are:\n- `FAILURE: <failure_reason>`—Data upload has failed.\n- `SUCCEEDED`—Data upload is complete.\n- `UPLOADING`—Data upload is in progress.", "6-3": "2.0", "8-0": "`type`", "8-1": "string", "8-2": "Type of dataset data. Valid values are:\n- `text-intent`\n- `text-sentiment`", "8-3": "2.0" }, "cols": 4, "rows": 10 } [/block] Each dataset type supports different file formats. This table lists the file formats supported by each dataset type. [block:parameters] { "data": { "h-1": "text-intent", "h-2": "text-sentiment", "0-0": ".csv file", "1-0": ".tsv file", "2-0": ".json file", "0-1": "**<span style=\"color:green\">Y</span>**", "1-1": "**<span style=\"color:green\">Y</span>**", "2-1": "**<span style=\"color:green\">Y</span>**", "0-2": "**<span style=\"color:green\">Y</span>**", "1-2": "**<span style=\"color:green\">Y</span>**", "2-2": "**<span style=\"color:red\">N</span>**" }, "cols": 3, "rows": 3 } [/block] ##CSV File Format Considerations## - You can use a .csv file to create both intent and sentiment datasets. - When you create a dataset from a .csv file, the dataset name is inherited from the file name. - Each .csv file contains sentiment or intent data in this format: `"sentiment or intent string", label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`. [block:code] { "codes": [ { "code": "\"what's the weather look like\",current-weather\n\"is it raining\",current-weather\n\"what's the temperature\",current-weather", "language": "text" } ] } [/block] - You can download example intent .csv files from [http://einstein.ai/text/weather.csv](http://einstein.ai/text/weather.csv) and [http://einstein.ai/text/case_routing_intent.csv](http://einstein.ai/text/case_routing_intent.csv). ##TSV File Format Considerations## - You can use a .tsv file to create both intent and sentiment datasets. - When you create a dataset from a .tsv file, the dataset name is inherited from the file name. - Each .tsv file contains sentiment or intent data in this format: `"sentiment or intent string"<tab_char>label-name` followed by a CRLF. In the following example, the intent string is in double quotes followed by the label `current-weather`. [block:co