Create, Get, Update, Delete

Manage your concepts.

Within your app you can create concepts, modify them after creation an get them from your app. We currently do not support deleting concepts since they are such an integral tie across almost all other data structures in the platform like inputs, models, searches, etc.

You will find that some of our endpoints have additional information returned from the clarifai/main app which contains our pre-trained models but also a large knowledge graph we've assembled over the years.

Create

Add Concepts

To create a new concept in you app you POST the concept with an id and name. You can also post more than one concept in the same API by sending a list of concepts.

gRPC Java
gRPC NodeJS
gRPC Python
cURL
gRPC Java
import com.clarifai.grpc.api.*;
import com.clarifai.grpc.api.status.*;
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
MultiConceptResponse postConceptsResponse = stub.postConcepts(
PostConceptsRequest.newBuilder()
.addConcepts(Concept.newBuilder().setId("charlie").setName("Charlie Name"))
.build()
);
if (postConceptsResponse.getStatus().getCode() != StatusCode.SUCCESS) {
throw new RuntimeException("Post concepts failed, status: " + postConceptsResponse.getStatus());
}
gRPC NodeJS
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
stub.PostConcepts(
{
concepts: [{id: "charlie", name: "Charlie Name"}]
},
metadata,
(err, response) => {
if (err) {
throw new Error(err);
}
if (response.status.code !== 10000) {
throw new Error("Post concepts failed, status: " + response.status.description);
}
}
);
gRPC Python
# Insert here the initialization code as outlined on this page:
# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
post_concepts_response = stub.PostConcepts(
service_pb2.PostConceptsRequest(
concepts=[resources_pb2.Concept(id="charlie", name="Charlie Name")]
),
metadata=metadata
)
if post_concepts_response.status.code != status_code_pb2.SUCCESS:
raise Exception("Post concept failed, status: " + post_concepts_response.status.description)
cURL
curl -X POST \
-H "Authorization: Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '
{
"concepts": [
{
"id": "{concept_id}",
"name": "{new_concept_name}"
}
]
}'\
https://api.clarifai.com/v2/concepts

Get

Get Concept by ID

You can get a singular concept by its ID.

gRPC Java
gRPC NodeJS
gRPC Python
cURL
gRPC Java
import com.clarifai.grpc.api.*;
import com.clarifai.grpc.api.status.*;
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
SingleConceptResponse getConceptResponse = stub.getConcept(
GetConceptRequest.newBuilder()
.setConceptId("charlie")
.build()
);
if (getConceptsResponse.getStatus().getCode() != StatusCode.SUCCESS) {
throw new RuntimeException("Get concepts failed, status: " + getConceptsResponse.getStatus());
}
gRPC NodeJS
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
stub.GetConcept(
{
concept_id: "bosco"
},
metadata,
(err, response) => {
if (err) {
throw new Error(err);
}
if (response.status.code !== 10000) {
throw new Error("Get concepts failed, status: " + response.status.description);
}
}
);
gRPC Python
# Insert here the initialization code as outlined on this page:
# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
get_concepts_response = stub.GetConcept(
service_pb2.GetConceptRequest(
concept_id="charlie"
),
metadata=metadata
)
if get_concepts_response.status.code != status_code_pb2.SUCCESS:
raise Exception("Get concept failed, status: " + get_concepts_response.status.description)
cURL
curl -X GET \
-H "Authorization: Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
https://api.clarifai.com/v2/concepts/{concept_id}

List concepts

You can get a list of concepts within your app with a GET call. This call supports pagination.

gRPC Java
gRPC NodeJS
gRPC Python
cURL
gRPC Java
import com.clarifai.grpc.api.*;
import com.clarifai.grpc.api.status.*;
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
MultiConceptResponse listConceptsResponse = stub.listConcepts(
ListConceptsRequest.newBuilder()
.build()
);
if (listConceptsResponse.getStatus().getCode() != StatusCode.SUCCESS) {
throw new RuntimeException("List concepts failed, status: " + listConceptsResponse.getStatus());
}
gRPC NodeJS
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
stub.ListConcepts(
{},
metadata,
(err, response) => {
if (err) {
throw new Error(err);
}
if (response.status.code !== 10000) {
throw new Error("List concepts failed, status: " + response.status.description);
}
}
);
gRPC Python
# Insert here the initialization code as outlined on this page:
# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
list_concepts_response = stub.ListConcepts(
service_pb2.ListConceptsRequest(),
metadata=metadata
)
if list_concepts_response.status.code != status_code_pb2.SUCCESS:
raise Exception("List concept failed, status: " + list_concepts_response.status.description)
cURL
curl -X GET \
-H "Authorization: Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
https://api.clarifai.com/v2/concepts

Update

Update Concept Name

The code below showcases how to update a concept's name given its id by using the "overwrite" action. You can also patch multiple concepts by sending a list of concepts.

gRPC Java
gRPC NodeJS
gRPC Python
js
python
java
csharp
objective-c
php
cURL
gRPC Java
import com.clarifai.grpc.api.*;
import com.clarifai.grpc.api.status.*;
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
MultiConceptResponse patchConceptsResponse = stub.patchConcepts(
PatchConceptsRequest.newBuilder()
.setAction("overwrite") // The only supported action right now is overwrite.
.addConcepts(Concept.newBuilder().setId("charlie").setName("Charlie Name"))
.build()
);
if (patchConceptsResponse.getStatus().getCode() != StatusCode.SUCCESS) {
throw new RuntimeException("Patch concepts failed, status: " + patchConceptsResponse.getStatus());
}
gRPC NodeJS
// Insert here the initialization code as outlined on this page:
// https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
stub.PatchConcepts(
{
action: "overwrite", // The only supported action right now is overwrite
concepts: [{id: "charlie", name: "Charlie Name"}]
},
metadata,
(err, response) => {
if (err) {
throw new Error(err);
}
if (response.status.code !== 10000) {
throw new Error("Patch concepts failed, status: " + response.status.description);
}
}
);
gRPC Python
# Insert here the initialization code as outlined on this page:
# https://docs.clarifai.com/api-guide/api-overview/api-clients#client-installation-instructions
patch_concepts_response = stub.PatchConcepts(
service_pb2.PatchConceptsRequest(
action="overwrite", # The only supported action right now is overwrite.
concepts=[resources_pb2.Concept(id="charlie", name="Charlie Name")]
),
metadata=metadata
)
if patch_concepts_response.status.code != status_code_pb2.SUCCESS:
raise Exception("Patch concept failed, status: " + patch_concepts_response.status.description)
js
** Coming Soon
python
from clarifai.rest import ClarifaiApp
app = ClarifaiApp(api_key='YOUR_API_KEY')
app.concepts.update(concept_id='concept_id', concept_name='new_concept_name')
java
** Coming Soon
csharp
using System.Threading.Tasks;
using Clarifai.API;
using Clarifai.DTOs.Predictions;
namespace YourNamespace
{
public class YourClassName
{
public static async Task Main()
{
var client = new ClarifaiClient("YOUR_API_KEY");
await client.ModifyConcepts(
new Concept("{concept-id}", name: "{new-concept-name}"))
.ExecuteAsync();
}
}
}
objective-c
** Coming Soon
php
use Clarifai\API\ClarifaiClient;
use Clarifai\DTOs\Predictions\Concept;
$client = new ClarifaiClient('YOUR_API_KEY');
$response = $client->modifyConcepts((new Concept('CONCEPT'))->withName('UPDATED_CONCEPT_NAME'))
->executeSync();
if ($response->isSuccessful()) {
echo "Response is successful.\n";
} else {
echo "Response is not successful. Reason: \n";
echo $response->status()->description() . "\n";
echo $response->status()->errorDetails() . "\n";
echo "Status code: " . $response->status()->statusCode();
}
cURL
curl -X PATCH \
-H "Authorization: Key YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '
{
"concepts": [
{
"id": "charlie",
"name": "Charlie Name"
}
],
"action": "overwrite"
}'\
https://api.clarifai.com/v2/concepts