DeepOpinion is a no-code platform, enabling teams to build human-level AI bots and automate away repetitive cognitive processes for unstructured text and documents.
Built by automation experts for automation experts, DeepOpinion solves the core problems teams face, which is why it is trusted by leaders at global enterprises.
And best of all, DeepOpinion complements and easily integrates with your existing enterprise systems and RPA tools, so building intelligence into your processes has never been easier.
Do you have any questions about our products? Please contact us, we are always happy to help!
The Studio API routes are secured and only accessible with a given JWT user token provided from the authentication service of the API. This ensures, that only registered and authorized users can access the API core resources.
Once the user is logged in, each subsequent request will include the JWT, allowing the user to access routes, services, and resources that are permitted with that token. JSON Web Tokens are a good way of securely transmitting information between parties.
To authenticate a user, a client application must send a JSON Web Token JWT in the authorization header of the HTTP request to Studio backend API. Studio API validates the token on behalf of your API, so you don't have to add any code in your API to process the authentication.
:::caution HTTPS
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
:::
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
:::info
If you are a new user, get your token calling the REGISTER route, or, if you are a registered user, get your token calling the LOGIN route.
curl -L -X POST 'https://api.deepopinion.ai/auth/register' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"password": "badpassword"
}'
curl -L -X POST 'https://api.deepopinion.ai/auth/login' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
--data-raw '{
"email": "john.doe@example.com",
"password": "badpassword"
}'
:::
:::tip Adding Token in HTTP header
With the Successful response from Login or Register routes, you have the auth_token.
Now, to authenticate via bearer auth (e.g., for a cross-origin request), use
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2NzU5MDE2MzcsInN1YiI6MjQxNjAyLCJpc3MiOiJkZWVwb3Bpbmlvbi5haSIsImxhbmd1YWdlcyI6WyIqIl0sImZ1bmN0aW9uYWxpdHkiOlsiQW5hbHlzaXMvKiIsIlRyYWluaW5nLyoiLCJNb2RlbHMvKiJdLCJpYXQiOjE2NzQ2OTIwMzd9.b9pAeNbstZzhWa7vWrP9PgMGSUbFsPkfyLjlZIwDlO4ufL0b5QsyRN2lUTqFp55yDs0zI4rXTqn1FsV9GE5uujEUqHAzh5Y9-ibk5WypuSefN_YUDOdceCSegrC1ScgnT9OKdR1a-f0sP4u2rd8PZmUZLPigTTbJdLJX-Ljm3lOgO0p6Goy0WpbqZ_KZJF9UHI9MPKUhkfrn6aKyB1s-z9yIUz6GLTGHCJCtWqTkshy42dG26EMsf3an-MkuzsXA_x2maI7BzRWkDkl8-VyL_aSOTLHacwF62PFeyYtvCy8Cslz6OiX4LcOXKSwwYt9jz9073uqoBhcuyemX-x2fB2sF4Fe7VqFPCsRqIT2TOtyD9cz-e7zpjSOEtUtc1uavOx4mOLdrOa64BfpKPtcUPRUhwXdVF0-LFDVToykf-nf2uq3jsiJemYvAdymuT-pzwNWXPIC0UmlxLJZyneEIVXn90s2ibbeRC-ilz4uN159OGWy66ZL5ZP019q9nCzVGKCCDJ4ezS5g3TJIqf9NJM8ZyHOb5NeAQbta22jHeKd7oz0dfdUepZdC8zAeTtrLyPnCs032EuuqIjs4ZJ5yr3SrRIk12XB2bps1SxcSxfBftrqlyitbWlKbO3u5LDM99WMnBDleS1NQe-58z8nPdCeyZ79WesNf3je8thDxgJ1w"
instead of -u auth_token in your next calls.
:::
:::tip Example Get models user is authorized to see.
curl -L -X GET 'https://api.deepopinion.ai/models' \
-H 'Accept: application/json' \
-H 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2NzU5MDE2MzcsInN1YiI6MjQxNjAyLCJpc3MiOiJkZWVwb3Bpbmlvbi5haSIsImxhbmd1YWdlcyI6WyIqIl0sImZ1bmN0aW9uYWxpdHkiOlsiQW5hbHlzaXMvKiIsIlRyYWluaW5nLyoiLCJNb2RlbHMvKiJdLCJpYXQiOjE2NzQ2OTIwMzd9.b9pAeNbstZzhWa7vWrP9PgMGSUbFsPkfyLjlZIwDlO4ufL0b5QsyRN2lUTqFp55yDs0zI4rXTqn1FsV9GE5uujEUqHAzh5Y9-ibk5WypuSefN_YUDOdceCSegrC1ScgnT9OKdR1a-f0sP4u2rd8PZmUZLPigTTbJdLJX-Ljm3lOgO0p6Goy0WpbqZ_KZJF9UHI9MPKUhkfrn6aKyB1s-z9yIUz6GLTGHCJCtWqTkshy42dG26EMsf3an-MkuzsXA_x2maI7BzRWkDkl8-VyL_aSOTLHacwF62PFeyYtvCy8Cslz6OiX4LcOXKSwwYt9jz9073uqoBhcuyemX-x2fB2sF4Fe7VqFPCsRqIT2TOtyD9cz-e7zpjSOEtUtc1uavOx4mOLdrOa64BfpKPtcUPRUhwXdVF0-LFDVToykf-nf2uq3jsiJemYvAdymuT-pzwNWXPIC0UmlxLJZyneEIVXn90s2ibbeRC-ilz4uN159OGWy66ZL5ZP019q9nCzVGKCCDJ4ezS5g3TJIqf9NJM8ZyHOb5NeAQbta22jHeKd7oz0dfdUepZdC8zAeTtrLyPnCs032EuuqIjs4ZJ5yr3SrRIk12XB2bps1SxcSxfBftrqlyitbWlKbO3u5LDM99WMnBDleS1NQe-58z8nPdCeyZ79WesNf3je8thDxgJ1w'
:::
Read the Authentication session to learn how to get a JWT Token and set it in Http Header for start to access the endpoints.
If an endpoint returned a 401, your token is either not present in the request or is expired. If expired, you can call the login endpoint again to get a new one.
A project is the place where your custom models will be. Before uploading data to train your model, you need to create a project by calling the Create project
A document group is, as the name suggests, a group of documents. There are two ways of creating a group:
- By calling the Create group endpoint with all the documents you want to add to the group
- In two steps: first one, upload a file in CSV, TXT, JSON, JSONL or XLSX format using the Upload a File. This response will contain will be something like:
{
"id": "fec48971-0aca-4aa7-ad38-1d300153d8ae",
"preview": [
[
"another_column",
"document",
"review_source"
],
[
null,
"the hotel is good",
"a"
],
[
"test",
"the hotel is bad",
"b"
],
[
"null",
"the hotel is ok",
"a"
]
]
}
it contains the file "id" and the preview of the file.
Then, call the same Create group but instead of passing a list of `documents`, you need to pass the `file_id` and the chosen `column`. For example, if you want to use the "review_source", you need to use `column` 2 (0-indexed).
Uploading data that already contains labels can be done by simply calling the Upload labeled data endpoint or by sending a JSON object containing all data you need (see Create Label Session )
The logic here is very similar to the one to create document groups: you either send a JSON object containing all data you want to analyse. See Create Analysis or you do it in two-steps:
- Upload a document using the Upload document for Analysis endpoint and use the `file_id` and the `column` you want (0-indexed) in the step 2
- Call the Create Analysis endpoint using the `file_id` and the `column` you chose.
Upload a file for a new Batch Analysis
Upload a file for a new batch analysis. A file contains one or more documents that can be used to create a batch analysis. The file could have the extensions .csv, .jsonl, .json, or .xslx. Each record in the file should contain a 'text' field with the document text and an optional 'id' field with a unique identifier for the document.
Authorizations:
Request Body schema: multipart/form-datarequired
file required | string <binary> file to upload |
Responses
Response samples
- 200
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "preview": [
- [
- "string",
- "string"
]
]
}
List all analyses
List all Analyses that user has created. The list can be filtered by providing query parameters such as 'model' or paginated with 'offset' and 'limit'.
Authorizations:
query Parameters
model | integer ID of the model |
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
[- {
- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
]
Create a Batch Analysis
Create a new Batch Analysis by providing the necessary information to analyze the documents. Optionally, you can also provide a file_id and column if you want to create the analysis using a previously uploaded file.
Authorizations:
Request Body schema: application/jsonrequired
Array of objects (Document) List of documents of the analysis. | |
name | string Name of the analysis. |
file_id | string <uuid> Id of file that belongs of to the analysis. |
column | integer The index of the column of the file that should be used as source to the analysis. |
column_name | string Name of the column of the file or property that contains data to be analyzed. |
split | boolean Whether documents should be split into sentences. |
header_first | boolean Whether the first line should be used as the file header. |
Responses
Request samples
- Payload
{- "documents": [
- {
- "text": "Document 1",
- "id": 18000
}
], - "name": "My first analysis",
- "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
- "column": 0,
- "column_name": "reviews",
- "split": true,
- "header_first": true
}
Response samples
- 201
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
Run an Ad-hoc analysis
Run an Ad-hoc analysis of a list of documents.
Authorizations:
Request Body schema: application/jsonrequired
Array of objects (Document) | |
model_id | integer ID of the model |
split | boolean Whether documents should be split into sentences |
Responses
Request samples
- Payload
{- "documents": [
- {
- "text": "Document 1",
- "id": 18000
}
], - "model_id": 387,
- "split": true
}
Response samples
- 200
{- "model": "Hotels Pre-Trained",
- "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
], - "type": "ABSA"
}
List all documents from an analysis
List all documents from an analysis. The list of documents can be filtered by providing query parameters such as 'search' , 'classes', 'labels', 'details' or paginated with 'offset' and 'limit'.
Authorizations:
path Parameters
analysis_id required | integer ID of the analysis to get |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
search | string Search by name |
classes | Array of integers Example: classes=1,746 filter by class ids |
labels | Array of integers Example: labels=110,111,112 filter by label ids |
offset | integer >= 0 Default: 0 An offset is simply the number of records you wish to skip before selecting records. |
limit | integer [ 1 .. 1000 ] Default: 100 Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "documents": {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}, - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Retrieve an analysis
Retrieve an Analysis.
Authorizations:
path Parameters
analysis_id required | integer ID of the analysis_id to get |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
Update an analysis
Update an Analysis.
Authorizations:
path Parameters
analysis_id required | integer ID of the analysis to change |
Request Body schema: application/jsonrequired
name | string Unique identifier representing the analysis name |
Responses
Request samples
- Payload
{- "name": "Changing my First Analysis"
}
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
Upload a file containing classes definition.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: multipart/form-datarequired
file required | string <binary> file to upload |
Responses
Response samples
- 200
[- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
]
Add multiple classes to a project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Request Body schema: application/jsonrequired
name | string The class's name. |
example | string A usage example. |
description | string The class's description to help the annotator. |
id | integer The ID of the label |
Responses
Request samples
- Payload
[- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
]
Response samples
- 201
[- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
]
Retrieve a class
Authorizations:
path Parameters
project_id required | integer ID of the project that contains the class |
class_id required | integer ID of the class to get |
Responses
Response samples
- 200
{- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
Update a class
Update a class
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
class_id required | integer ID of the class to change |
Request Body schema: application/jsonrequired
name | string The class's name. |
example | string A usage example. |
description | string The class's description to help the annotator. |
id | integer The ID of the label |
Responses
Request samples
- Payload
{- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
Response samples
- 200
{- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
List all classes from a project
List all classes from a project
Authorizations:
path Parameters
project_id required | integer ID of the project |
Responses
Response samples
- 200
[- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
]
Add a class to a project
Add a new class to a project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Request Body schema: application/jsonrequired
name | string The class's name. |
example | string A usage example. |
description | string The class's description to help the annotator. |
id | integer The ID of the label |
Responses
Request samples
- Payload
{- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
Response samples
- 201
{- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
All endpoints related to correction sessions. A correction session is where you can correct tags automatically predicted by our technology and then improve the model quality.
Mark a segment as corrected.
Authorizations:
path Parameters
project_id required | integer ID of the project |
correction_id required | integer ID of the correction session |
document_id required | integer ID of the document |
segment_id required | integer ID of the segment |
Request Body schema: application/jsonrequired
name required | string Value: "ANNOTATED" |
Responses
Request samples
- Payload
{- "name": "ANNOTATED"
}
Response samples
- 200
{- "segment": {
- "name": "ANNOTATED",
- "created": "2019-08-24T14:15:22Z",
- "document_id": 187,
- "segment_id": 3010,
- "annotation_id": 1
}, - "predicted_score": 0,
- "progress": 98
}
Retrieve a correction session documents
Retrieve a correction session documents
Authorizations:
path Parameters
project_id required | integer ID of the project |
correction_id required | integer ID of the session |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 120,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
Return a correction session.
Authorizations:
path Parameters
project_id required | integer ID of the project |
correction_id required | integer ID of the correction session |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first correction session",
- "progress": 87.7,
- "model": {
- "id": 1,
- "display_name": "This is my model"
}, - "status": "CREATED",
- "mode": "CORRECTION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
], - "predicted_score": 0
}
Return a list of correction sessions that belongs to a project.
You can combine any of the parameters to filter the results.
Authorizations:
path Parameters
project_id required | integer ID of the project |
query Parameters
status | string Correction status. Any of CREATED, STARTED, ANNOTATING, FAILED, FINISHED, SAMPLING, PREDICTING or DELETING |
Responses
Response samples
- 200
[- {
- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first correction session",
- "progress": 87.7,
- "model": {
- "id": 1,
- "display_name": "This is my model"
}, - "status": "CREATED",
- "mode": "CORRECTION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
], - "predicted_score": 0
}
]
Create a new correction session.
If no documents are given, they will be randomly chosen.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: application/jsonrequired
model_id required | integer ID of the model |
sample_size | integer Sample size |
name | string Name of the correction session |
Responses
Request samples
- Payload
{- "model_id": 387,
- "sample_size": 20,
- "name": "My first correction"
}
Response samples
- 201
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first correction session",
- "progress": 87.7,
- "model": {
- "id": 1,
- "display_name": "This is my model"
}, - "status": "CREATED",
- "mode": "CORRECTION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
], - "predicted_score": 0
}
Extract information from one or more documents.
Given a document, this endpoint will extract information from it.
Supported document formats are:
- pdf
- jpeg / jpg
- png
- tiff
- webp
Authorizations:
path Parameters
organization_id required | integer unique ID of your workspace |
project_id required | integer is a unique ID of your project |
model_id required | integer is a unique ID of your trained AI model |
query Parameters
return_bboxes | string whether or not to return bounding boxes |
return_annotated_pages | string whether or not to return the images correspondent to each page, with the found matches, as a base64 encoded string |
Request Body schema: multipart/form-datarequired
file required | string <binary> file to upload |
Responses
Response samples
- 200
{- "model": "Invoice Extraction v1",
- "all_required_fields_found": true,
- "all_confidence_thresholds_met": true,
- "all_data_conversion_passed": true,
- "total_credits_used": 24,
- "documents": [
- {
- "name": "Invoice.pdf",
- "all_required_fields_found": true,
- "all_confidence_thresholds_met": true,
- "all_data_conversion_passed": true,
- "credits_used": 24,
- "matches": [
- { }
], - "bboxes": [
- [
- [
- {
- "TLx": 0.05868118572292801,
- "TLy": 0.03465982028241335,
- "TRx": 0.06412583182093164,
- "TRy": 0.03465982028241335,
- "BRx": 0.06412583182093164,
- "BRy": 0.04150620453572957,
- "BLx": 0.05868118572292801,
- "BLy": 0.05868118572292801,
- "text": "John Doe",
- "label": "First name",
- "confidence": 0.9936525225639343
}
]
]
], - "annotated_pages": [
- "data:image/png;base64,iVBORw0KGgo..."
], - "hitl": {
- "status": "pending",
- "result": [
- {
- "confidences": [
- {
- "label": "First name",
- "value": "John Doe",
- "expected_confidence": 90,
- "found": 70
}
]
}
]
}
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
]
}
Upload new documents.
Implemented as asynchronous request and returns 202 ACCEPTED.Documents will be uploaded, segmented and analyzed.If any annotations are given, these will also be analyzed and added to the database.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: application/jsonrequired
text | string The document text |
id | integer The ID of the document. |
Responses
Request samples
- Payload
[- {
- "text": "Document 1",
- "id": 18000
}
]
Retrieve document from a project.
Retrieve document from a project
Authorizations:
path Parameters
project_id required | integer ID of the project |
document_id required | integer ID of the document |
query Parameters
details | string Value: "segments" Which details should return. Only 'segments' is supported.
|
Responses
Response samples
- 200
{- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
]
}
]
}
Change a document.
Authorizations:
path Parameters
project_id required | integer ID of the project |
document_id required | integer ID of the document group |
Request Body schema: application/jsonrequired
text | string The document text |
Responses
Request samples
- Payload
{- "text": "Document 1 Edited"
}
Response samples
- 200
{- "text": "Document 1",
- "id": 18000
}
List all documents from a project
List all documents from a project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
search | string Search by name |
annotation_id | integer Filter by annotation ID |
analysis_id | integer Filter by analysis ID |
group_id | integer Filter by group ID |
grouped | boolean If true, return only documents that belong to a group |
analysed | boolean If true, return only documents that belong to an analysis |
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "documents": {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
]
}
]
}, - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Create a new document.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: application/jsonrequired
text required | string Document text |
object |
Responses
Request samples
- Payload
{- "text": "Text 1",
- "segments": {
- "text": "Text 1"
}
}
Response samples
- 201
{- "text": "Document 1",
- "id": 18000
}
All endpoints related to groups. A group as the name suggests, is a collection of documents.
Connect an external source to Studio and pull unlabeled data from it.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: multipart/form-datarequired
credential_id required | number ID of the credential to be used to connect to the external source. |
source required | string A string that identifies the source |
parameters | object Parameters to filter the data returned by the external source. |
Responses
Response samples
- 200
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "preview": [
- [
- "string",
- "string"
]
]
}
Upload a file
Upload a file to a project. A file contains one or more documents that can be used to create a document group
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: multipart/form-datarequired
file required | string <binary> file to upload |
to_list | boolean DEPRECATED: If set to false, the file preview will be in JSON format instead of a list. The default behavior will soon be changed to return a JSON and this parameter won't be needed anymore |
Responses
Response samples
- 200
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "preview": [
- [
- "string",
- "string"
]
]
}
Retrieve a document
Retrieve a document from a group.
Authorizations:
path Parameters
project_id required | integer ID of the project |
group_id required | integer ID of the document group |
document_id required | integer ID of the document |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
Responses
Response samples
- 200
{- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
List all documents from a group
Fetches all documents of a given groupUse URL params to control or filter the result:- ?search=wordto only show documents that contain word- ?offset=0&limit=10 to have a paginated view- ?details=segments,meta,tags to show details of a document * segments: Show segments of a document * tags: Show tags of a document * meta: Show all the additional attributes that were originally given as the document was uploaded
Authorizations:
path Parameters
project_id required | integer ID of the project |
group_id required | integer ID of the document group |
query Parameters
search | string Search by name |
details | string Enum: "segments" "meta" "tags" Which documents' details API should return. Values might be any combination of 'segments', 'meta' and 'tags'. |
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
[- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
Retrieve a Document Group
Authorizations:
path Parameters
project_id required | integer ID of the project that contains the group |
group_id required | integer ID of the group to get |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "id": 18,
- "name": "This is my first group",
- "project_id": 0,
- "source": "ANALYSIS",
- "status": "PROCESSING"
}
Change a document group.
Authorizations:
path Parameters
project_id required | integer ID of the project |
group_id required | integer ID of the document group |
Request Body schema: application/jsonrequired
name | string The document group's name. |
document_ids | Array of integers IDs of documents that should be added to the group |
Array of objects (DocumentGroup) Documents that should be added to the group |
Responses
Request samples
- Payload
{- "name": "Changing my first group",
- "document_ids": [
- 87334,
- 87335,
- 87336,
- 87337
], - "documents": [
- {
- "created": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "id": 18,
- "name": "This is my first group",
- "project_id": 0,
- "source": "ANALYSIS",
- "status": "PROCESSING"
}
]
}
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
List all document groups that belongs to a project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Responses
Response samples
- 200
[- {
- "created": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "id": 18,
- "name": "This is my first group",
- "project_id": 0,
- "source": "ANALYSIS",
- "status": "PROCESSING"
}
]
Create a new document group.
A document group is, as the name suggests, a group of documents. There are two ways of creating a group:- By calling the Create group endpoint with all the documents you want to add to the group- In two steps: first one, upload a file in CSV, TXT, JSON, JSONL or XLSX format using the Upload a File endpoint. Then, use the file_id received and the column you want
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Request Body schema: application/jsonrequired
Array of objects (Document) array of objects that represent documents. | |
name | string Name of the group |
file_id | string <uuid> Unique identifier of the file |
credential_id | number ID of the credential to be used to connect to the external source |
source | string A string that identifies the source |
parameters | object Parameters to filter the data returned by the external source. |
column | integer DEPRECATED: The index of the column that should be used as source |
column_name | string Name of the column or property that contains data to be analyzed |
split | boolean Whether documents should be split into sentences |
header_first | boolean Whether the first line should be used as the file header |
Responses
Request samples
- Payload
{- "documents": [
- {
- "text": "Document 1",
- "id": 18000
}
], - "name": "My first Group!",
- "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
- "credential_id": 0,
- "source": "string",
- "parameters": {
- "limit": 5,
- "updated_since": "2015-01-19T02:00:00Z"
}, - "column": 3,
- "column_name": "reviews",
- "split": true,
- "header_first": true
}
Response samples
- 201
{- "created": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "id": 18,
- "name": "This is my first group",
- "project_id": 0,
- "source": "ANALYSIS",
- "status": "PROCESSING"
}
List HITL reviews based on HITL ID
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
hitl_id required | integer ID of the hitl to change |
query Parameters
with_full_data | boolean whether or not to return all the review data |
Responses
Response samples
- 200
[- {
- "review_id": 0,
- "task_id": 0,
- "document_id": 0,
- "document_name": "string",
- "page_num": 0,
- "status": "PENDING",
- "created": "string",
- "updated": "string",
- "user_id": 0,
- "label": "string",
- "confidence_threshold": 0,
- "ls_annotation_id": 0,
- "hitl_id": 0
}
]
Get all project's HITLs
Authorizations:
path Parameters
project_id required | integer ID of the project |
Responses
Response samples
- 200
[- {
- "id": 0,
- "name": "string",
- "description": "string",
- "project_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string",
- "labels": { }
}
]
Add a new HITL to a project.
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Request Body schema: application/json
name | string <= 120 characters |
description | string <= 255 characters |
assigned_user_id | integer |
model_id | integer |
is_live | boolean |
webhook_url | string <= 255 characters |
Responses
Request samples
- Payload
{- "name": "string",
- "description": "string",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string"
}
Response samples
- 201
{- "id": 0,
- "name": "string",
- "description": "string",
- "project_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string",
- "labels": { }
}
Get a particular HITL
Authorizations:
path Parameters
project_id required | integer ID of the project |
hitl_id required | integer ID of HITL |
Responses
Response samples
- 200
{- "id": 0,
- "name": "string",
- "description": "string",
- "project_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string",
- "labels": { }
}
Update HITL's data based on HITL ID
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
hitl_id required | integer ID of the hitl to change |
Request Body schema: application/json
name | string <= 120 characters |
description | string <= 255 characters |
assigned_user_id | integer |
model_id | integer |
is_live | boolean |
webhook_url | string <= 255 characters |
Responses
Request samples
- Payload
{- "name": "string",
- "description": "string",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string"
}
Response samples
- 200
{- "id": 0,
- "name": "string",
- "description": "string",
- "project_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string",
- "labels": { }
}
Assign to user HITL's data based on HITL ID
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
hitl_id required | integer ID of the hitl to change |
Request Body schema: application/json
name | string <= 120 characters |
description | string <= 255 characters |
assigned_user_id | integer |
model_id | integer |
is_live | boolean |
webhook_url | string <= 255 characters |
Responses
Request samples
- Payload
{- "name": "string",
- "description": "string",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string"
}
Response samples
- 200
{- "id": 0,
- "name": "string",
- "description": "string",
- "project_id": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "assigned_user_id": 0,
- "model_id": 0,
- "is_live": true,
- "webhook_url": "string",
- "labels": { }
}
All endpoints related to labeling sessions. A label session is where classes and labels can be added to segments.
Mark a segment as annotated
Mark a segment as annotated
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the labeling session |
document_id required | integer ID of the document |
segment_id required | integer ID of the segment |
Request Body schema: application/jsonrequired
name required | string Value: "ANNOTATED" |
Responses
Request samples
- Payload
{- "name": "ANNOTATED"
}
Response samples
- 200
{- "name": "ANNOTATED",
- "created": "2019-08-24T14:15:22Z",
- "document_id": 187,
- "segment_id": 3010,
- "annotation_id": 1
}
Mark a page as annotated
Mark a page as annotated
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the labeling session |
document_id required | integer ID of the document |
page required | integer the page number starting in 0 |
Request Body schema: application/jsonrequired
name required | string Value: "ANNOTATED" |
Responses
Request samples
- Payload
{- "name": "ANNOTATED"
}
Response samples
- 200
{- "name": "ANNOTATED",
- "created": "2019-08-24T14:15:22Z",
- "document_id": 187,
- "segment_id": 3010,
- "annotation_id": 1
}
Mark a document as annotated
Mark a document as annotated
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the labeling session |
document_id required | integer ID of the document |
Request Body schema: application/jsonrequired
name required | string Value: "ANNOTATED" |
Responses
Request samples
- Payload
{- "name": "ANNOTATED"
}
Response samples
- 200
{- "name": "ANNOTATED",
- "created": "2019-08-24T14:15:22Z",
- "document_id": 187,
- "annotation_id": 1
}
Connect an external source to Studio and pull training data from it.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: multipart/form-datarequired
credential_id required | number ID of the credential to be used to connect to the external source. |
source required | string A string that identifies the source |
parameters | object Parameters to filter the data returned by the external source. |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
Upload a file for a new labeling session
A file contains one or more documents that can be used to create a labeling session.If show_preview is True, a preview will be shown and the endpoint to createa new labeling session must be called using the "id" and a column nameobtained in the preview response.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: multipart/form-datarequired
show_preview | boolean If true, a preview will be shown. |
file required | string <binary> file to upload |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
Retrieve a document of a labeling session.
- segments: Show segments of a document * tags: Show tags of a document * meta: Show all the additional attributes that were originally given as the document was uploaded
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the session |
document_id required | integer ID of the document |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
Responses
Response samples
- 200
{- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
List all documents from a labeling session
List all documents from a labeling session.
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the session |
query Parameters
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 120,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
Return a labeling session.
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the labeling session |
Responses
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
Update a labeling session
Update a labeling session
Authorizations:
path Parameters
project_id required | integer ID of the project |
annotation_id required | integer ID of the labeling session to changed |
Request Body schema: application/jsonrequired
name | string Name of the labeling session |
document_ids | Array of integers |
Array of objects (LabelledDocument) | |
classes | Array of strings Classes contained in that session. |
labels | Array of strings Labels contained in that session. |
Responses
Request samples
- Payload
{- "name": "Change my first session",
- "document_ids": [
- 87334,
- 87335,
- 87336,
- 87337
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
], - "classes": [
- "Comfort",
- "Staff"
], - "labels": [
- "TBD",
- "Staff"
]
}
Response samples
- 200
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
List all labeling sessions from a project
You can combine any of the parameters to filter the results.
Authorizations:
path Parameters
project_id required | integer ID of the project |
query Parameters
mode | string Labeling mode. Any combination of ANNOTATION or CORRECTION |
status | string Labeling status. Any of CREATED, STARTED, ANNOTATING, FAILED, FINISHED, SAMPLING, PREDICTING or DELETING |
Responses
Response samples
- 200
[- {
- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
]
Create a new labeling session
If neither documents nor document_ids are given, the whole documents of the system are used for this annotation.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: application/jsonrequired
name | string Name of the labeling session |
auto | boolean If auto is set to true, the documents will be analyzed if they contain attributes that match with tags. If this is the case, they are automatically inferred and annotated by the system |
sample_size | integer Sample size |
document_ids | Array of integers IDs of already available documents that should be annotated |
Array of objects (LabelledDocument) The documents that should be used for this annotation session | |
classes | Array of strings Classes contained in that session. If not given, project classes will be used |
labels | Array of strings Labels contained in that session. If not given, project labels will be used |
file_id | string <uuid> Unique identifier of the file |
column_mapping | object An object that maps column name and column content. Attributes can be: 'text', 'label', 'class' or 'aspect'. The value should be the correspondent column in the original file |
credential_id | number ID of the credential to be used to connect to the external source |
source | string A string that identifies the source |
parameters | object Parameters to filter the data returned by the external source. |
Responses
Request samples
- Payload
{- "name": "My first session",
- "auto": true,
- "sample_size": 25,
- "document_ids": [
- 87334,
- 87335,
- 87336,
- 87337
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
], - "classes": [
- "Comfort",
- "Staff"
], - "labels": [
- "TBD",
- "Staff"
], - "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
- "column_mapping": {
- "label": "my-column"
}, - "credential_id": 0,
- "source": "string",
- "parameters": {
- "limit": 5,
- "updated_since": "2015-01-19T02:00:00Z"
}
}
Response samples
- 201
{- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "document_group_id": 87,
- "organization_id": 1,
- "user_id": 1,
- "project_id": 1,
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "name": "This is my first labeling session",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "mode": "ANNOTATION",
- "type": "ABSA",
- "description": "string",
- "classes": [
- "Comfort"
], - "labels": [
- "POS"
]
}
Change label's data based on label ID
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
label_id required | integer ID of the label to change |
Request Body schema: application/jsonrequired
name | string The label's name. |
Responses
Request samples
- Payload
{- "name": "POS"
}
Response samples
- 200
{- "id": 1,
- "name": "POS"
}
Change label's data based on label name
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
name required | string ID of the label to change |
Request Body schema: application/jsonrequired
name | string The label's name. |
Responses
Request samples
- Payload
{- "name": "POS"
}
Response samples
- 200
{- "id": 1,
- "name": "POS"
}
Add a new label to a project.
You cannot add labels to an ABSA project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Request Body schema: application/jsonrequired
name | string The label's name. |
Responses
Request samples
- Payload
{- "name": "POS"
}
Response samples
- 201
{- "id": 1,
- "name": "POS"
}
Upload a model.
Authorizations:
Request Body schema: multipart/form-datarequired
file required | string <binary> file to upload |
base | string the name of the model used to create the modal that's being changed |
display_name required | string a friendly name |
score | integer <float> model score. As this is a result of a training session, this value shouldn't be touched |
long_description | string a longer description which proper describes the model |
short_description | string a short description to help users quickly identify the model |
status | string Enum: "CREATED" "QUEUED" "TRAINING" "FAILED" "READY" "ACTIVE" "PUBLISHED" the model status |
language | string Enum: "en" "de" "ar" |
name | string internal name. It should be unique for a workspace |
Responses
Response samples
- 200
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
List all models of a user
List all models that user is authorized to see.
Authorizations:
query Parameters
collection_id | integer The collection ID of the model |
public | boolean if model is public or not |
starred | boolean if model is starred or not |
search | string Search a model by name |
type | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" model type |
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
exclude_id | integer Exclude model with this ID |
Responses
Response samples
- 200
{- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Retrieve models user is authorized to see.
Parameters can be combined to filter models.
Authorizations:
path Parameters
organization required | string organization name |
query Parameters
collection_id | integer The collection ID of the model |
public | boolean if model is public or not |
starred | boolean if model is starred or not |
type | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" model type |
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Retrieve a specific model that belongs to a project
Authorizations:
path Parameters
project_id required | integer ID of the project |
model_id required | integer ID of the model |
Responses
Response samples
- 200
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA",
- "demoset": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
], - "metrics": { },
- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
]
}
Update a model that belongs to a project.
Updates meta data of a model. All model's attributes can be changed:
Authorizations:
path Parameters
project_id required | integer ID of the project |
model_id required | integer ID of the model |
Request Body schema: application/jsonrequired
base | string the name of the model used to create the modal that's being changed |
created | string <date-time> creation date |
display_name | string a friendly name. |
uuid | string <uuid> model unique identifier. Should be a UUID value |
id | integer >= 1 The ID of the model |
language | string Enum: "en" "de" "ar" |
long_description | string a longer description which proper describes the model |
name | string internal name. It should be unique for a workspace |
owner | string |
progress | number <float> |
project_id | integer The ID of the project |
score | number <float> model score. As this is a result of a training session, this value shouldn't be touched |
short_description | string a short description to help users quickly identify the model |
status | string Enum: "CREATED" "QUEUED" "TRAINING" "FAILED" "READY" "ACTIVE" "PUBLISHED" the model status |
type | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" model type (1: BASE, 2: ABSA, 3: LABEL, 4: CLASS, 5: CLASSLABEL)) |
Responses
Request samples
- Payload
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
Response samples
- 200
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
Retrieve models that belongs to a project
Authorizations:
path Parameters
project_id required | integer ID of the project |
Responses
Response samples
- 200
[- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
]
Train a new model.
Authorizations:
path Parameters
project_id required | integer ID of the project |
Request Body schema: application/jsonrequired
display_name | string Display name of the model |
language | string Enum: "en" "de" "ar" Language of the model |
name | string internal name. It should be unique for a workspace |
base_id | integer ID of the Base Model used for training |
annotation_ids | Array of integers non-empty IDs of the labeling sessions to be used to create test and train sets. If this parameter is given, trainset_annotation_ids and testset_annotation_ids will be ignored |
trainset_annotation_ids | Array of integers non-empty IDs of the labeling sessions to be used as source for the trainset |
testset_annotation_ids | Array of integers non-empty IDs of the labeling sessions to be used as source for the testset |
Responses
Request samples
- Payload
{- "display_name": "My model 1",
- "language": "en",
- "name": "My model 1",
- "base_id": 0,
- "annotation_ids": [
- 0
], - "trainset_annotation_ids": [
- 0
], - "testset_annotation_ids": [
- 0
]
}
Response samples
- 201
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
List all analysis from a model
List all analysis from a model.The list of documents can be filtered by providing query parameters such as 'search' , 'classes', 'labels', 'details' or paginated with 'offset' and 'limit'. The pagination should be done by increasing the offset by the value of limit until the property has_more is false
Authorizations:
path Parameters
model_id required | integer ID of the model |
query Parameters
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
{- "analyses": [
- {
- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
], - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Retrieve a model by its ID
Authorizations:
path Parameters
model_id required | integer ID of the model |
Responses
Response samples
- 200
{- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "has_more": true,
- "offset": 0,
- "limit": 10,
- "count": 10
}
Update a Model
Updates meta data of a model. All model's attributes can be changed:
Authorizations:
path Parameters
model_id required | integer ID of the model |
Request Body schema: application/jsonrequired
base | string the name of the model used to create the modal that's being changed |
created | string <date-time> creation date |
display_name | string a friendly name. |
uuid | string <uuid> model unique identifier. Should be a UUID value |
id | integer >= 1 The ID of the model |
language | string Enum: "en" "de" "ar" |
long_description | string a longer description which proper describes the model |
name | string internal name. It should be unique for a workspace |
owner | string |
progress | number <float> |
project_id | integer The ID of the project |
score | number <float> model score. As this is a result of a training session, this value shouldn't be touched |
short_description | string a short description to help users quickly identify the model |
status | string Enum: "CREATED" "QUEUED" "TRAINING" "FAILED" "READY" "ACTIVE" "PUBLISHED" the model status |
type | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" model type (1: BASE, 2: ABSA, 3: LABEL, 4: CLASS, 5: CLASSLABEL)) |
Responses
Request samples
- Payload
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
Response samples
- 200
{- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
All endpoints related to notifications. Notifications are created after a process that takes some time to complete finishes.
List all users notifications
List all users notifications
Authorizations:
query Parameters
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
Responses
Response samples
- 200
[- {
- "id": 120,
- "title": "Model is ready",
- "text": "Your model 'First Model' is ready to be used",
- "created": "2019-08-24T14:15:22Z",
- "type": "INFO",
- "read": "2019-08-24T14:15:22Z"
}
]
Retrieve a notification
Authorizations:
path Parameters
notification_id required | integer ID of the notification |
Responses
Response samples
- 200
{- "id": 120,
- "title": "Model is ready",
- "text": "Your model 'First Model' is ready to be used",
- "created": "2019-08-24T14:15:22Z",
- "type": "INFO",
- "read": "2019-08-24T14:15:22Z"
}
Change a notification
Authorizations:
path Parameters
notification_id required | integer ID of the notification |
Request Body schema: application/jsonrequired
Data to be changed
title | string The notification's title. |
text | string The notification's text. |
created | string <date-time> creation date |
type | string Enum: "INFO" "WARNING" The notification's type. |
read | string <date-time> date the user read the notification. If empty, notification will be marked as unread |
Responses
Request samples
- Payload
{- "title": "Model is ready",
- "text": "Your model 'First Model' is ready to be used",
- "created": "2019-08-24T14:15:22Z",
- "type": "INFO",
- "read": "2019-08-24T14:15:22Z"
}
Response samples
- 200
{- "id": 120,
- "title": "Model is ready",
- "text": "Your model 'First Model' is ready to be used",
- "created": "2019-08-24T14:15:22Z",
- "type": "INFO",
- "read": "2019-08-24T14:15:22Z"
}
All endpoints related to projects. A "project" is the place where your custom models will be.
List all projects
List all projects that the authorized user has access to.
Authorizations:
query Parameters
details | boolean if true, the project will be enriched with information |
Responses
Response samples
- 200
[- {
- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
]
Create a new project.
Authorizations:
Request Body schema: application/jsonrequired
name required | string Unique identifier representing the project name |
type required | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" Classification Type |
Responses
Request samples
- Payload
{- "name": "My First Project",
- "type": "ABSA"
}
Response samples
- 201
{- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
List all projects' analyses.
Use URL params to control or filter the result.The pagination should be done by increasing the offset by the value of limit until the property has_more is false
Authorizations:
path Parameters
project_id required | integer ID of the project |
query Parameters
offset | integer An offset is simply the number of records you wish to skip before selecting records. |
limit | integer Limit of entries that should be returned. |
details | string Enum: "segments" "meta" "tags" Which details should return. Values might be any combination of 'segments', 'meta' and 'tags'.
|
Responses
Response samples
- 200
[- {
- "created": "2019-08-24T14:15:22Z",
- "finished": "2019-08-24T14:15:22Z",
- "document_count": 100,
- "uuid": "123e4567-e89b-12d3-a456-426614174000",
- "id": 1,
- "name": "This is my first analysis",
- "progress": 87.7,
- "model_id": 10,
- "status": "CREATED",
- "type": "ABSA",
- "description": "string",
- "classes": [
- {
- "name": "Comfort",
- "example": "This is a good example",
- "description": "This is a good description",
- "id": 1
}
], - "labels": [
- {
- "id": 1,
- "name": "POS"
}
], - "documents": [
- {
- "text": "Document 1",
- "segments": [
- {
- "text": "Segment 1",
- "span": [
- 0,
- 9
], - "tags": [
- {
- "class": "Comfort",
- "label": "POS"
}
]
}
]
}
]
}
]
Transfer a project to a workspace.
Transferring a project will transfer all data associated to this project.
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
Request Body schema: application/jsonrequired
organization_id | integer ID of the organization this project will be cloned to |
Responses
Request samples
- Payload
{- "organization_id": 1
}
Retrieve a task of project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
task_id required | integer ID of task |
Responses
Response samples
- 200
{- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
Clone a project.
Cloning a project will clone all data associated to this project.
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
Request Body schema: application/jsonrequired
organization_id | integer ID of the organization this project will be cloned to |
Responses
Request samples
- Payload
{- "organization_id": 1
}
Response samples
- 200
{- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
Retrieve a project
Authorizations:
path Parameters
project_id required | integer ID of the project to get |
Responses
Response samples
- 200
{- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
Change project data.
Any project attribute can be given that should be updated.
Authorizations:
path Parameters
project_id required | integer ID of the project to change |
Request Body schema: application/jsonrequired
name | string Unique identifier representing the project name |
type | string Enum: "ABSA" "CLASS" "LABEL" "CLASSLABEL" Classification Type |
Responses
Request samples
- Payload
{- "name": "Changing my First Project",
- "type": "ABSA"
}
Response samples
- 200
{- "classes": [
- "Comfort"
], - "labels": [
- "Staff"
], - "created": "2019-08-24T14:15:22Z",
- "id": 1,
- "models": [
- {
- "base": "Hotel Pre-Trained",
- "created": "2019-08-24T14:15:22Z",
- "display_name": "My model 1",
- "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
- "id": 1,
- "language": "en",
- "long_description": "My model 1 can predict anything I want",
- "name": "My model 1",
- "owner": "John Doe",
- "progress": 6.78,
- "project_id": 1,
- "score": 0.68,
- "short_description": "This is a very short description of My Model 1",
- "status": "CREATED",
- "type": "ABSA"
}
], - "name": "My first project!",
- "type": "ABSA",
- "status": "CREATED",
- "external_id": 412
}
Reset Password
Reset a users password with the token received in reset email.
Authorizations:
Request Body schema: application/jsonrequired
reset_password_token required | string One Time Password reset token |
password required | string New Password to be set |
Responses
Request samples
- Payload
{- "reset_password_token": "f9bf78b9a18ce6d46a0cd2b0b86df9da",
- "password": "verybadpass"
}
Password Reset Email
Reset Password for a certain email address corresponding to a registered user. If email exists, a new reset reset_password_token is created and an email is sent to the corresponding user.
Authorizations:
Request Body schema: application/jsonrequired
email required | string Email of the user |
Responses
Request samples
- Payload
{- "email": "john.doe@example.com"
}
Retrieve an user
Retrieve an user by ID. The user ID must be given as route parameter. If not an admin, this route is accessible only for the given and authenticated user.
Authorizations:
path Parameters
user_id required | integer ID of the user |
Responses
Response samples
- 200
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Update an User
Update an User.
Authorizations:
path Parameters
user_id required | integer ID of the user |
Request Body schema: application/jsonrequired
first_name | string User's first name |
last_name | string User's last name |
string <email> User's email. Should be unique | |
password | string <password> >= 8 characters User's password |
Responses
Request samples
- Payload
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Response samples
- 200
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Register
Create a new account. A successful request returns an auth_token
that can be used for subsequent calls.
Request Body schema: application/jsonrequired
first_name | string User's first name |
last_name | string User's last name |
string <email> User's email. Should be unique | |
password | string <password> >= 8 characters User's password |
Responses
Request samples
- Payload
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Response samples
- 200
{- "auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2MjM4MzY4MzMsInN1YiI6MzIsImlzcyI6ImRlZXBvcGluaW9uLmFpIiwibGFuZ3VhZ2VzIjpbIioiXSwiZnVuY3Rpb25hbGl0eSI6WyJBbmFseXNpcy8qIiwiVHJhaW5pbmcvKiIsIk1vZGVscy8qIl0sImlhdCI6MTYyMjYyNzIzM30.Vv_KymEKnrFq5W1XbcufSuLTIr8hk_QBbbT8z9yBST-EiP_-dM3RnyCESfUWr35EHav9UVc9pwr84WNIxffQYnXRuglBtspy0UfBlYvmSNNdWUczn2--WT90VmvujbtFnMp70hry_MTZe-sKBGxE80Br_UuDEmH2gVFim8-ZAu2JAW--bxur0dT59RPpA1DXvw-d_q95_vevjwYvx7uC-9YskMm0g13OFBnwmdj1DGOnjGsWqQ4Z4HSX6B6ctTm_a0Lgc4llwDrA3Ppck05SSgYMIzyUGZDtLrH-Vp-qiCMnd5cplqrUyqZnroUFCjgbT_GuVkdRkxnUpvCQeecWFppg7-CwnYc5gfoMhq5LnJxLgcfQQQ9vBSp1RZPsKBhZlAGUfUoMWFEDa0LBBq6p7zg90D1_G-1LjeUI2N6roGGRdPl9FTKdLklQw2g5RTmb9ik5yTK-VcxLJBSFHhigTZzrktOR1d1akbOVB38TUjcuSQvOdnCVO_-FKyhYtTogSaxth4yMnGHMNuzMHIplW8A1y9Yni4jXzLMSSTV_T8YcirJvr-sVgZa4nUjEqHpMVn7S2Tywp6kd-c_OVEpiHH1ODqczqvtDAYFF6xCf4S8gKlk3CBsJFElzPMnFmLPIWl173mSGuH4beagVKJLFeS87yRINFAL7Nyfe2UJn6gc",
- "message": "Successfully registered.",
- "status": "CREATED"
}
Log In
Log in a user. Login via email and password. A successful request returns the attribute auth_token that can be used for authenticate the user at other calls.It's also possible to log in with a "first time login". This token is sent to users we manually created through Studio Admin
Request Body schema: application/jsonrequired
string <email> User's email. Should be unique | |
password | string <password> User's password |
Responses
Request samples
- Payload
{- "email": "john.doe@example.com",
- "password": "badpassword"
}
Response samples
- 200
{- "auth_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2MjM4MzY4MzMsInN1YiI6MzIsImlzcyI6ImRlZXBvcGluaW9uLmFpIiwibGFuZ3VhZ2VzIjpbIioiXSwiZnVuY3Rpb25hbGl0eSI6WyJBbmFseXNpcy8qIiwiVHJhaW5pbmcvKiIsIk1vZGVscy8qIl0sImlhdCI6MTYyMjYyNzIzM30.Vv_KymEKnrFq5W1XbcufSuLTIr8hk_QBbbT8z9yBST-EiP_-dM3RnyCESfUWr35EHav9UVc9pwr84WNIxffQYnXRuglBtspy0UfBlYvmSNNdWUczn2--WT90VmvujbtFnMp70hry_MTZe-sKBGxE80Br_UuDEmH2gVFim8-ZAu2JAW--bxur0dT59RPpA1DXvw-d_q95_vevjwYvx7uC-9YskMm0g13OFBnwmdj1DGOnjGsWqQ4Z4HSX6B6ctTm_a0Lgc4llwDrA3Ppck05SSgYMIzyUGZDtLrH-Vp-qiCMnd5cplqrUyqZnroUFCjgbT_GuVkdRkxnUpvCQeecWFppg7-CwnYc5gfoMhq5LnJxLgcfQQQ9vBSp1RZPsKBhZlAGUfUoMWFEDa0LBBq6p7zg90D1_G-1LjeUI2N6roGGRdPl9FTKdLklQw2g5RTmb9ik5yTK-VcxLJBSFHhigTZzrktOR1d1akbOVB38TUjcuSQvOdnCVO_-FKyhYtTogSaxth4yMnGHMNuzMHIplW8A1y9Yni4jXzLMSSTV_T8YcirJvr-sVgZa4nUjEqHpMVn7S2Tywp6kd-c_OVEpiHH1ODqczqvtDAYFF6xCf4S8gKlk3CBsJFElzPMnFmLPIWl173mSGuH4beagVKJLFeS87yRINFAL7Nyfe2UJn6gc",
- "message": "Successfully logged in.",
- "status": "OK"
}
Retrieve Permissions
User Permissions. Return user permissions attributes, including superuser and betauser permission.
Authorizations:
path Parameters
user_id required | integer ID of the user |
Responses
Response samples
- 200
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Update Permissions
Update user Permissions. Use this endpoint to set and revoke superuser and betauser permission.
Authorizations:
path Parameters
user_id required | integer ID of the user |
Request Body schema: application/jsonrequired
is_betauser | boolean Beta User Status |
is_superuser | boolean Superuser Status |
Responses
Request samples
- Payload
{- "is_betauser": true,
- "is_superuser": true
}
Response samples
- 200
{- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Delete Key
Delete a key associated to a user
Authorizations:
path Parameters
user_id required | integer ID of the user |
key_id required | integer ID of the key |
Responses
Response samples
- 200
[- {
- "id": 1,
- "created": "2019-08-24T14:15:22Z",
- "name": "This is my key",
- "token": "f9bf78b9a18ce6d46a0cd2b0b86df9da"
}
]
List all product keys
List all product keys associated to a user
Authorizations:
path Parameters
user_id required | integer ID of the user |
Responses
Response samples
- 200
[- {
- "id": 1,
- "created": "2019-08-24T14:15:22Z",
- "name": "This is my key",
- "token": "f9bf78b9a18ce6d46a0cd2b0b86df9da"
}
]
All endpoints related to workspaces. Workspaces contains all your projects and related data. They were previously called "Organizations"
Accept an invitation.
The data necessary to create a new user should be sent. If the user is already a member of Studio, only the membership will be added.
Authorizations:
Request Body schema: application/jsonrequired
token required | string Validation token |
first_name | string User's first name |
last_name | string User's last name |
string <email> User's email. Should be unique | |
password required | string <password> >= 8 characters User's password |
Responses
Request samples
- Payload
{- "token": "f9bf78b9a18ce6d46a0cd2b0b86df9da",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "password": "badpassword"
}
Create a new workspace.
Authorizations:
Request Body schema: application/jsonrequired
name required | string The name of the workspace |
description | string the description of the workspace |
Responses
Request samples
- Payload
{- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models"
}
Response samples
- 200
{- "id": 5,
- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models",
- "created": "2019-08-24T14:15:22Z",
- "is_beta": true,
- "is_read_only": true
}
List all pending invitations
List all pending invitations.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Responses
Response samples
- 200
[- {
- "id": 5,
- "role": "USER",
- "email": "user@example.com",
- "invited_by_id": 5,
- "organization_id": 1,
- "created": "2019-08-24T14:15:22Z",
- "invitation_link": "string"
}
]
Invite users to a workspace.
Invite users to a workspace. All invited users will have the same defined permission.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Request Body schema: application/jsonrequired
role required | string Enum: "USER" "VIEWER" "ANNOTATOR" "ADMIN" "MANAGER" User's role |
emails required | Array of strings <email> [ items <email > ] List of emails |
Responses
Request samples
- Payload
{- "role": "USER",
- "emails": [
- "john.doe@example.com"
]
}
Response samples
- 200
{- "not_invited": [
- {
- "email": "user@example.com",
- "reason": "User was already invited"
}
], - "invitations": [
- {
- "id": 5,
- "role": "USER",
- "email": "user@example.com",
- "invited_by_id": 5,
- "organization_id": 1,
- "created": "2019-08-24T14:15:22Z",
- "invitation_link": "string"
}
]
}
Update users role
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
permission_id required | integer ID of the permission to change |
Request Body schema: application/jsonrequired
role required | string Enum: "USER" "VIEWER" "ANNOTATOR" "ADMIN" "MANAGER" User's role |
Responses
Request samples
- Payload
{- "role": "USER"
}
Add a new user to a workspace.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Request Body schema: application/jsonrequired
role required | string Enum: "USER" "VIEWER" "ANNOTATOR" "ADMIN" "MANAGER" User's role |
user_id required | integer The ID of the user |
Responses
Request samples
- Payload
{- "role": "USER",
- "user_id": 50
}
Response samples
- 200
{- "id": 5,
- "role": "USER",
- "user": "John Doe"
}
Set a workspace as the default one.
Default workspaces will come pre-selected on Studio
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Request Body schema: application/jsonrequired
default required | boolean If the workspace is the default one |
Responses
Request samples
- Payload
{- "default": true
}
Retrieve a workspace.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Responses
Response samples
- 200
{- "id": 5,
- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models",
- "created": "2019-08-24T14:15:22Z",
- "is_beta": true,
- "is_read_only": true
}
Change a workspace.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Request Body schema: application/jsonrequired
name required | string The name of the workspace |
description | string the description of the workspace |
Responses
Request samples
- Payload
{- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models"
}
Response samples
- 200
{- "id": 5,
- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models",
- "created": "2019-08-24T14:15:22Z",
- "is_beta": true,
- "is_read_only": true
}
Deactivates a workspace.
Authorizations:
path Parameters
organization_id required | integer ID of the workspace |
Responses
Response samples
- 200
{- "id": 5,
- "name": "My first workspace",
- "description": "This is my first workspace to test wonderful models",
- "created": "2019-08-24T14:15:22Z",
- "is_beta": true,
- "is_read_only": true
}