A documentId is obtained by submitting a document to the Unsilo Document API.See https://services.unsilo.com/documentation/documents for more information on this. |
| Note that injected documents (documents using the documents API for submitting to UNSILO) will expire 30 days after creation. Trying to access expired or unknown documents will result in a HTTP 410 - Gone. |
1. Contact information
Need help, or want to know how to access our APIs? Reach out to hello@unsilo.ai
2. Content types
All requests and responses are of type application/json in UTF-8 encoding.
3. Document Metadata
3.1. Overview
How to retrieve metadata about a specific document.
| This endpoint is available for testing in our dynamic documentation. |
3.1.1. Get Document Metadata
Retrieve document metadata
Request
Path parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
doi |
false |
The doi’s of the document to process. |
Example Request
$ curl 'https://services.unsilo.com/api/metadata/v1/partner/metadata?doi=realtime-491a1283-6ce7-440f-9c5b-fd7e0c9e6c8e' -i -u 'username:password' -X GET \
-H 'Content-Type: application/json'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"items" : [ {
"id" : "Id",
"doi" : "Doi",
"concepts" : [ {
"label" : "Label",
"id" : "Id",
"localScore" : 1.0
} ],
"title" : "Title",
"text" : "Text",
"authors" : [ {
"firstName" : "First Name",
"lastName" : "Last Name"
} ],
"journal" : "Journal",
"publicationDate" : "Publication Date",
"customFields" : {
"Key" : "Value"
},
"articleType" : "Article Type",
"calculatedType" : "Calculated Type",
"isIndexed" : true
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
items |
Array |
List of metadata results |
items[] |
Array |
Metadata result |
items[].authors[] |
Array |
Document authors |
items[].authors[].firstName |
String |
Document author first name |
items[].authors[].lastName |
String |
Document author last name |
items[].concepts[] |
Array |
Document concepts |
items[].concepts[].label |
String |
Concept label |
items[].concepts[].localScore |
Number |
Concept score |
items[].customFields |
Object |
Document custom fields |
items[].doi |
String |
Document doi |
items[].id |
String |
Document id |
items[].journal |
String |
Document journal |
items[].publicationDate |
String |
Document publication data |
items[].title |
String |
Document title |
3.1.2. Get Document Text
Retrieve document text
Request
Path parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
documentId |
false |
The IDs of the document to process. |
Example Request
$ curl 'https://services.unsilo.com/api/metadata/v1/partner/text?documentId=realtime-491a1283-6ce7-440f-9c5b-fd7e0c9e6c8e' -i -u 'username:password' -X GET \
-H 'Content-Type: application/json'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiResponseStatus" : "SUCCESS",
"status" : 200,
"currentTimestamp" : "2025-09-25T05:06:40Z",
"fulltext" : "Document text",
"sentences" : [ "Sentence" ]
}
Response fields
| Path | Type | Description |
|---|---|---|
fulltext |
String |
The document fulltext |
sentences[] |
Array |
Document sentences |
4. Journal Finder
4.1. Overview
Journal Finder finds the most relevant journals for the documentId provided.
| This endpoint is available for testing in our dynamic documentation. |
4.1.1. Get Journals
Finds the best matching reviewers for the given document
Request
Path parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
limit |
false |
Number of top journals which best match the text |
documentId |
false |
The ID of the document to process. Generated by the add-document endpoint. |
Example Request
$ curl 'https://services.unsilo.com/api/journalfinder/v2/partner/journals?limit=10&documentId=realtime-491a1283-6ce7-440f-9c5b-fd7e0c9e6c8e' -i -u 'username:password' -X GET \
-H 'Content-Type: application/json'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiResponseStatus" : "SUCCESS",
"status" : 200,
"path" : "/v1/demo-medline/journals",
"currentTimestamp" : "2020-01-03T08:32:41Z",
"journals" : [ {
"label" : "PloS one",
"publisher" : {
"name" : "Public Library of Science"
},
"issn" : [ {
"issn" : "1932-6203",
"issnType" : "Electronic"
} ],
"topConcepts" : [ {
"id" : "immunoglobulinkillikreceiv",
"label" : "Kir"
}, {
"id" : "celkilnat",
"label" : "Natural Killer Cells"
}, {
"id" : "andcelcytoplasmdomainigimmunoglobulinkilliklongreceivtailthre",
"label" : "Killer Cell Immunoglobulin Like Receptors"
}, {
"id" : "genimmunoglobulinkillikreceiv",
"label" : "Kir Gene"
}, {
"id" : "celimmunoglobulinkillikreceiv",
"label" : "Killer Cell Immunoglobulin Like Receptors"
}, {
"id" : "biochemreceiv",
"label" : "Receptors"
} ],
"match" : {
"match" : 93,
"overlappingConcepts" : [ {
"id" : "immunoglobulinkillikreceiv",
"label" : "Killer Immunoglobulin-like Receptors"
}, {
"id" : "dlkir",
"label" : "KIR2DL1"
}, {
"id" : "haplotyp",
"label" : "Haplotypes"
}, {
"id" : "celt",
"label" : "T Cells"
}, {
"id" : "actgenimmunoglobulinkillikreceiv",
"label" : "Activating Killer Immunoglobulin-like Receptors Gene"
} ]
}
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
journals |
Array |
List of journals |
journals[].match |
Object |
Description of the match of the journal to the document |
journals[].match.match |
Number |
A weighed score for how well the journal matches the document. This takes into account importance of concepts, overlap, etc. |
journals[].match.overlappingConcepts[] |
Array |
The concepts in common between the document and the journal |
journals[].match.overlappingConcepts[].id |
String |
The ID of the overlapping concept |
journals[].match.overlappingConcepts[].label |
String |
The label of the overlapping concepts |
journals[].label |
String |
Journal name |
journals[].issn[] |
Array |
International Standard Serial Numbers (ISSN) for the journal [optional] |
journals[].issn[].issn |
String |
The ISSN number |
journals[].issn[].issnType |
String |
ISSN record issnType. One of [Electronic, Print, Linking, Undetermined] |
journals[].publisher.name |
String |
Name of the journal publisher [optional] |
journals[].topConcepts[].id |
String |
Concept id |
journals[].topConcepts[].label |
String |
Concept label |
apiResponseStatus |
String |
Response status - FAILED/SUCCESS |
message |
String |
Message sent back by the service. |
4.1.2. Get Journals V3
Finds the best matching reviewers for the given document
Request
Path parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
limit |
false |
Number of top journals which best match the text |
documentId |
false |
The ID of the document to process. Generated by the add-document endpoint. |
isAbstract |
true |
"true" if the input document is only an abstract |
title |
true |
If available, the document title |
Example Request
$ curl 'https://services.unsilo.com/api/journalfinder/v3/partner/journals?limit=10&documentId=realtime-491a1283-6ce7-440f-9c5b-fd7e0c9e6c8e&isAbstract=true&title=Document+title' -i -u 'username:password' -X GET \
-H 'Content-Type: application/json'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiResponseStatus" : "SUCCESS",
"status" : 200,
"path" : "/v1/demo-medline/journals",
"currentTimestamp" : "2020-01-03T08:32:41Z",
"journals" : [ {
"label" : "PloS one",
"publisher" : {
"name" : "Public Library of Science"
},
"issn" : [ {
"issn" : "1932-6203",
"issnType" : "Electronic"
} ],
"topConcepts" : [ {
"id" : "immunoglobulinkillikreceiv",
"label" : "Kir"
}, {
"id" : "celkilnat",
"label" : "Natural Killer Cells"
}, {
"id" : "andcelcytoplasmdomainigimmunoglobulinkilliklongreceivtailthre",
"label" : "Killer Cell Immunoglobulin Like Receptors"
}, {
"id" : "genimmunoglobulinkillikreceiv",
"label" : "Kir Gene"
}, {
"id" : "celimmunoglobulinkillikreceiv",
"label" : "Killer Cell Immunoglobulin Like Receptors"
}, {
"id" : "biochemreceiv",
"label" : "Receptors"
} ],
"match" : {
"match" : 93,
"overlappingConcepts" : [ {
"id" : "immunoglobulinkillikreceiv",
"label" : "Killer Immunoglobulin-like Receptors"
}, {
"id" : "dlkir",
"label" : "KIR2DL1"
}, {
"id" : "haplotyp",
"label" : "Haplotypes"
}, {
"id" : "celt",
"label" : "T Cells"
}, {
"id" : "actgenimmunoglobulinkillikreceiv",
"label" : "Activating Killer Immunoglobulin-like Receptors Gene"
} ]
}
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
journals |
Array |
List of journals |
journals[].match |
Object |
Description of the match of the journal to the document |
journals[].match.match |
Number |
A weighed score for how well the journal matches the document. This takes into account importance of concepts, overlap, etc. |
journals[].match.overlappingConcepts[] |
Array |
The concepts in common between the document and the journal |
journals[].match.overlappingConcepts[].id |
String |
The ID of the overlapping concept |
journals[].match.overlappingConcepts[].label |
String |
The label of the overlapping concepts |
journals[].label |
String |
Journal name |
journals[].issn[] |
Array |
International Standard Serial Numbers (ISSN) for the journal [optional] |
journals[].issn[].issn |
String |
The ISSN number |
journals[].issn[].issnType |
String |
ISSN record issnType. One of [Electronic, Print, Linking, Undetermined] |
journals[].publisher.name |
String |
Name of the journal publisher [optional] |
journals[].topConcepts[].id |
String |
Concept id |
journals[].topConcepts[].label |
String |
Concept label |
apiResponseStatus |
String |
Response status - FAILED/SUCCESS |
message |
String |
Message sent back by the service. |
5. Reviewer Finder
5.1. Overview
Reviewer Finder finds the most relevant reviewers for the document provided, based on the corpus knowledge base.
| This endpoint is available for testing in our dynamic documentation. |
5.1.1. Get Reviewers
Finds the best matching reviewers for the given document
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
documentId |
false |
Type: String |
include-reviewers-with-coi |
true |
Type: Boolean |
concept-groups-to-prioritize |
true |
Type: Array<Number> |
ignore-found-concept-groups-in-scoring |
true |
Type: Boolean |
must-have-published-within-years |
true |
Type: Number |
min-years-of-experience |
true |
Type: Number |
max-years-of-experience |
true |
Type: Number |
limit |
true |
Type: Number |
Example Request
$ curl 'https://services.unsilo.com/api/reviewerfinder/v2/contentProfile/reviewers?documentId=realtime-5aa9bfc3-5ccb-48b7-a95e-fa400c622adb&limit=10&include-reviewers-with-coi=true&must-have-published-within-years=5&min-years-of-experience=0&max-years-of-experience=100&ignore-found-concept-groups-in-scoring=false&concept-groups-to-prioritize=0' -i -u 'username:password' -X GET \
-H 'Content-Type: application/json'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiResponseStatus" : "SUCCESS",
"status" : 200,
"conceptGroups" : [ {
"id" : 0,
"prioritized" : true,
"title" : "Social Media Usage",
"concepts" : [ {
"label" : "Social Media Presence"
}, {
"label" : "Facebook Page"
} ]
}, {
"id" : 1,
"prioritized" : false,
"title" : "Dentists",
"concepts" : [ {
"label" : "Dental Professionals"
}, {
"label" : "Dental Anxiety"
} ]
} ],
"reviewers" : [ {
"coveredConcepts" : [ {
"label" : "Social Media Usage"
}, {
"label" : "Dentists"
} ],
"conceptGroupCoverage" : [ {
"conceptGroupId" : 0,
"coverage" : 0.66
}, {
"conceptGroupId" : 1,
"coverage" : 0.33
} ],
"personInfo" : {
"currentAffiliations" : [ {
"affiliation" : "Department of Health Informatics, College of Public Health and Health Informatics, King Saud Bin Abdul-Aziz University for Health Sciences, King Abdullah International Medical Research Center (KAIMRC), Riyadh, Saudi Arabia, Ministry of National Guard Health Affairs, Riyadh, Saudi Arabia",
"countryCode" : "SAU",
"countryName" : "Saudi Arabia"
} ],
"currentEmail" : {
"email" : "dummy@gmail.com"
},
"name" : {
"firstName" : "John M.",
"lastName" : "Johnson",
"fullName" : "John M. Johnson"
}
},
"publishingInfo" : {
"relatedInfo" : {
"favoriteJournal" : {
"journal" : {
"name" : "Studies in health technology and informatics"
},
"numberOfPublishedPapersInJournal" : 11
},
"papersPublished" : 15,
"hIndex" : 12,
"yearsOfExperience" : {
"proposedLabel" : "7+",
"years" : 7
},
"latestPublication" : {
"publicationDate" : "2018-02-13",
"journal" : {
"name" : "Computer methods and programs in biomedicine"
}
},
"authorContribution" : {
"firstAuthor" : 3,
"middleAuthor" : 2,
"lastAuthor" : 1
}
}
},
"paperEvidence" : [ {
"doi" : "10.1016/j.cmpb.2018.03.005",
"journal" : {
"name" : "Computer methods and programs in biomedicine"
},
"publicationDate" : "2018-01-11",
"title" : "The impact of social media - based support groups on smoking relapse prevention in Saudi Arabia",
"authors" : [ {
"name" : {
"firstName" : "Hamidi Al",
"lastName" : "Onezi",
"fullName" : "Hamidi Al Onezi"
}
} ]
} ],
"conflictsOfInterest" : [ {
"type" : "COAUTHOR",
"title" : "The prevalence and usage of mobile health applications among mental health patients in Saudi Arabia",
"coAuthor" : {
"name" : {
"firstName" : "Nora",
"lastName" : "Atallah",
"fullName" : "Nora Atallah"
}
},
"doi" : "10.1016/j.cmpb.2017.12.002"
}, {
"type" : "AFFILIATION",
"affiliation" : {
"affiliation" : "Department of Health Informatics, College of Public Health and Health Informatics, King Saud Bin Abdul-Aziz University for Health Sciences, King Abdullah International Medical Research Center (KAIMRC), Riyadh, Saudi Arabia, Ministry of National Guard Health Affairs, Riyadh, Saudi Arabia",
"countryCode" : "SAU",
"countryName" : "Saudi Arabia"
}
} ],
"matchQuality" : {
"matchQuality" : "excellent match",
"sortingNumber" : 300
}
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
conceptGroups |
Array |
List of concept groups found in document. |
reviewers |
Array |
List of reviewers. |
conceptGroups[].id |
Number |
Id |
conceptGroups[].prioritized |
Boolean |
Shows if the group was prioritized when scoring reviewers. |
conceptGroups[].title |
String |
Group title |
conceptGroups[].concepts[] |
Array |
Concepts in group. |
conceptGroups[].concepts[].label |
String |
Concept label |
reviewers[].matchQuality |
Object |
Object containing information about the quality of the reviewer match. |
reviewers[].coveredConcepts |
Array |
List of document concepts covered by the reviewer. Sorted after relevance in document. |
reviewers[].conceptGroupCoverage |
Array |
List of objects containing information on how well the reviewer covers the found concept groups. |
reviewers[].personInfo |
Object |
Object containing the reviewers personal information. |
reviewers[].paperEvidence |
Array |
List of related papers authored by the reviewer. (Max 5 is returned) |
reviewers[].conflictsOfInterest |
Array |
List of possible conflict of interests found. An empty list is returned, if no conflicts of interest were found for the reviewer. |
reviewers[].publishingInfo |
Object |
Object containing information about the reviewers published papers. |
reviewers[].matchQuality.sortingNumber |
Number |
Number representation of the match quality, which can be used for sorting. |
reviewers[].matchQuality.matchQuality |
String |
String description of the match quality. |
reviewers[].coveredConcepts[].label |
String |
Concept label |
reviewers[].conceptGroupCoverage[].conceptGroupId |
Number |
Concept group id. |
reviewers[].conceptGroupCoverage[].coverage |
Number |
Decimal value from 0-1, indicating how well the reviewer covers the concept group/ |
reviewers[].personInfo.currentAffiliations |
Array |
List of objects containing the reviewers current affiliations/ |
reviewers[].personInfo.currentEmail |
Object |
Object containing the reviewers current email. |
reviewers[].personInfo.name |
Object |
Object containing the reviewers name. |
reviewers[].personInfo.currentAffiliations[].affiliation |
String |
The affiliation. |
reviewers[].personInfo.currentAffiliations[].countryName |
String |
The found country of the affiliation. |
reviewers[].personInfo.currentAffiliations[].countryCode |
String |
The found ISO 3166 - 3 digit - country code of the affiliation |
reviewers[].personInfo.currentEmail.email |
String |
The email. |
reviewers[].personInfo.name.firstName |
String |
The first name. |
reviewers[].personInfo.name.lastName |
String |
The last name. |
reviewers[].personInfo.name.fullName |
String |
The full name |
reviewers[].publishingInfo.relatedInfo |
Object |
Object containing information based on related papers published by the reviewer. |
reviewers[].publishingInfo.relatedInfo.favoriteJournal |
Object |
The journal with most published papers by the reviewer. |
reviewers[].publishingInfo.relatedInfo.papersPublished |
Number |
Number of papers published. |
reviewers[].publishingInfo.relatedInfo.hIndex |
Number |
Unsilo hIndex. |
reviewers[].publishingInfo.relatedInfo.yearsOfExperience |
Object |
Years of experience. |
reviewers[].publishingInfo.relatedInfo.latestPublication |
Object |
Latest publication. |
reviewers[].publishingInfo.relatedInfo.favoriteJournal.journal |
Object |
The journal. |
reviewers[].publishingInfo.relatedInfo.favoriteJournal.numberOfPublishedPapersInJournal |
Number |
Number of documents published in the journal. |
reviewers[].publishingInfo.relatedInfo.favoriteJournal.journal.name |
String |
Name of the journal. |
reviewers[].publishingInfo.relatedInfo.yearsOfExperience.proposedLabel |
String |
Proposed label. |
reviewers[].publishingInfo.relatedInfo.yearsOfExperience.years |
Number |
Years of experience. |
reviewers[].publishingInfo.relatedInfo.latestPublication.publicationDate |
String |
The publication date of the latest publication. |
reviewers[].publishingInfo.relatedInfo.latestPublication.journal |
Object |
The journal the latest publication was published in. |
reviewers[].publishingInfo.relatedInfo.latestPublication.journal.name |
String |
Name of the journal. |
reviewers[].publishingInfo.relatedInfo.authorContribution.firstAuthor |
Number |
Number of related publications where author is first author. |
reviewers[].publishingInfo.relatedInfo.authorContribution.middleAuthor |
Number |
Number of related publications where author is middle author. |
reviewers[].publishingInfo.relatedInfo.authorContribution.lastAuthor |
Number |
Number of related publications where author is last author. |
reviewers[].paperEvidence[].doi |
String |
Paper DOI. |
reviewers[].paperEvidence[].journal |
Object |
The journal the paper was published in. |
reviewers[].paperEvidence[].publicationDate |
String |
The publication date of the paper. |
reviewers[].paperEvidence[].title |
String |
The title of the paper. |
reviewers[].paperEvidence[].authors |
Array |
List containing the authors of the paper. |
reviewers[].paperEvidence[].journal.name |
String |
Name of the journal. |
reviewers[].paperEvidence[].authors[].name |
Object |
Name of the author. |
reviewers[].paperEvidence[].authors[].name.firstName |
String |
The first name. |
reviewers[].paperEvidence[].authors[].name.lastName |
String |
The last name. |
reviewers[].paperEvidence[].authors[].name.fullName |
String |
The full name |
reviewers[].conflictsOfInterest[].title |
String |
The title of the document causing the possible conflict of interest. (Only returned when type = COAUTHOR) |
reviewers[].conflictsOfInterest[].doi |
String |
The doi of the document causing the possible conflict of interest. (Only returned when type = COAUTHOR) |
reviewers[].conflictsOfInterest[].type |
String |
Two types of coi is supported, COAUTHOR and AFFILIATION |
reviewers[].conflictsOfInterest[].coAuthor |
Object |
The coauthor of the document, with whom the reviewer has a possible conflict of interest. (NOTE: currently only returned when type = COAUTHOR) |
reviewers[].conflictsOfInterest[].affiliation |
Object |
The affiliation causing the possible conflict of interest. (Only returned when type = AFFILIATION) |
reviewers[].conflictsOfInterest[].affiliation.affiliation |
String |
The affiliation. |
reviewers[].conflictsOfInterest[].affiliation.countryName |
String |
The found country of the affiliation. |
reviewers[].conflictsOfInterest[].affiliation.countryCode |
String |
The found ISO 3166 - 3 digit - country code of the affiliation |
reviewers[].conflictsOfInterest[].coAuthor.name |
Object |
Name of the author. |
reviewers[].conflictsOfInterest[].coAuthor.name.firstName |
String |
The first name. |
reviewers[].conflictsOfInterest[].coAuthor.name.lastName |
String |
The last name. |
reviewers[].conflictsOfInterest[].coAuthor.name.fullName |
String |
The full name |
apiResponseStatus |
String |
Response status - FAILED/SUCCESS |
message |
String |
Message sent back by the service. |
6. Concepts
6.1. Overview
6.1.1. Get Concepts From a Text
Extract concepts for a given text, based on a corpus-specific dictionary.
Request
Path parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Example request body
Adjuvant cytokine-induced killer (CIK) cells treatment.
Example Request
$ curl 'https://services.unsilo.com/api/concepts/v1/your_provided_content_profile/concepts-from-text' -i -u 'username:password' -X POST \
-H 'Content-Type: text/plain' \
-d 'Adjuvant cytokine-induced killer (CIK) cells treatment.'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"concepts" : [ {
"id" : "cytokininduckil",
"label" : "Cytokine-induced Killer",
"weight" : 0.6931471805599453
}, {
"id" : "celtre",
"label" : "Cell Treatments",
"weight" : 0.4054651081081644
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
concepts |
Array |
List of concepts |
concepts[].id |
String |
Concept id |
concepts[].label |
String |
Concept text |
concepts[].weight |
Number |
Concept weight, indicating it’s estimated importance, in relation to the other concepts returned. |
6.1.2. Get Concepts From a File
Request
Path Parameters
| Parameter | Description |
|---|---|
|
Content Profile |
Multipart Form Parameters
| Part | Description |
|---|---|
|
The file containing the document to analyze |
Example Request
$ curl 'https://services.unsilo.com/api/concepts/v1/your_provided_content_profile/concepts-from-file' -i -u 'username:password' -X POST \
-H 'Content-Type: multipart/form-data' \
-F 'file=@some-file.txt;type=text/plain'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"concepts" : [ {
"id" : "cytokininduckil",
"label" : "Cytokine-induced Killer",
"weight" : 0.6931471805599453
}, {
"id" : "celtre",
"label" : "Cell Treatments",
"weight" : 0.4054651081081644
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
concepts |
Array |
List of concepts |
concepts[].id |
String |
Concept id |
concepts[].label |
String |
Concept text |
concepts[].weight |
Number |
Concept weight, indicating it’s estimated importance, in relation to the other concepts returned. |
7. Autocompletion Suggestors
7.1. Overview
| Autocompletion suggestors are available for testing in our dynamic documentation. |
7.1.1. Suggestions
Finds the best matching autocompletion suggestions given a string
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
limit |
true |
Type: Number |
queryTerm |
false |
Type: String |
Request body
| Path | Optional | Type | Description |
|---|---|---|---|
suggestionTypes |
true |
List<TYPE> |
TYPE is an enum, the supported types are: |
blacklistedItems |
true |
Map<TYPE, List<IDs> |
Here it is possible, for each of the types, to give a list of ids, which should be blacklisted |
searchInAlternateConceptLabels |
true |
Boolean |
Specifies whether concept suggestions are based on the main labels, or also includes alternate concept labels. |
Example Request
$ curl 'https://services.unsilo.com/api/suggestions/v1/contentProfile/search?limit=10&queryTerm=ped' -i -u 'username:password' -X POST \
-H 'Content-Type: application/json' \
-d '{
"suggestionTypes": [
"CONCEPT","AUTHOR","JOURNAL"
],
"blacklistedItems": {
"CONCEPT": [
"patypedy"
],
"AUTHOR": [
"Pedro Marques-Vidal"
],
"JOURNAL": [
"Pediatric blood & cancer"
]
}
}'
Response
Example Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"suggestions" : {
"JOURNAL" : [ {
"type" : "JOURNAL",
"value" : "Pediatrics",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "iatrics"
} ],
"entity" : {
"label" : "Pediatrics",
"id" : "Pediatrics"
}
}, {
"type" : "JOURNAL",
"value" : "Pediatric research",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "iatric research"
} ],
"entity" : {
"label" : "Pediatric research",
"id" : "Pediatric research"
}
} ],
"CONCEPT" : [ {
"type" : "CONCEPT",
"value" : "Pedicle",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "icle"
} ],
"entity" : {
"label" : "Pedicle",
"id" : "pedicel"
}
}, {
"type" : "CONCEPT",
"value" : "Pediatric Population",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "iatric Population"
} ],
"entity" : {
"label" : "Pediatric Population",
"id" : "pedypop"
}
} ],
"AUTHOR" : [ {
"type" : "AUTHOR",
"value" : "Pedro R Lowenstein",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "ro R Lowenstein"
} ],
"entity" : {
"label" : "Pedro R Lowenstein",
"id" : "Pedro R Lowenstein"
}
}, {
"type" : "AUTHOR",
"value" : "Pedro W Crous",
"splitValue" : [ {
"type" : "MATCH",
"text" : "Ped"
}, {
"type" : "TEXT",
"text" : "ro W Crous"
} ],
"entity" : {
"label" : "Pedro W Crous",
"id" : "Pedro W Crous"
}
} ]
}
}
Response fields
| Path | Type | Description |
|---|---|---|
suggestions |
Map<TYPE, List<Suggestions>> |
A map containing suggestions for each requested TYPE |
suggestions.JOURNAL |
List<Suggestions> |
The list of journal suggestions |
suggestions.JOURNAL[].type |
TYPE |
The TYPE of the suggestion |
suggestions.JOURNAL[].value |
String |
The matched value of the entity |
suggestions.JOURNAL[].splitValue |
Array |
An array of tokens |
suggestions.JOURNAL[].entity |
Object |
The matched entity |
suggestions.JOURNAL[].entity.id |
String |
Id of the matched entity |
suggestions.JOURNAL[].entity.label |
String |
Main label of the matched entity |
suggestions.JOURNAL[].splitValue[].type |
String |
The type of the token - possible types: MATCH and TEXT. |
suggestions.JOURNAL[].splitValue[].text |
String |
The text of the token |
8. Facets
8.1. Overview
| The facets endpoint is available for testing in our dynamic documentation. |
8.1.1. Facets
Returns the available facets for the given content profile
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Example Request
$ curl 'https://services.unsilo.com/api/related/v3/contentProfile/facets' -i -u 'username:password' -X GET
Response
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
{
"facets" : [ {
"name" : "authorName",
"type" : "STRING"
}, {
"name" : "journalName",
"type" : "STRING"
}, {
"name" : "publicationDate",
"type" : "DATE"
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
facets |
List<Facet> |
List of facets available for the given content profile |
facets[].name |
String |
Name of the facet |
facets[].type |
Enum |
Type of the facet. |
9. Search
9.1. Overview
| The search endpoint is available for testing in our dynamic documentation. |
9.1.1. Search
Returns the best matching documents from the backing corpus
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
count |
true |
Type: Integer |
offset |
true |
Type: Integer |
sort |
true |
Type: Enum |
includeAbstract |
true |
Type: Boolean |
Request body
| Path | Optional | Type | Description |
|---|---|---|---|
aggregations |
true |
List<Aggregation> |
List of aggregations to return. |
facetFilters |
true |
List<FacetFilter> |
List of facet filters to apply. |
facetBoosters |
true |
List<FacetBooster> |
List of facet boosters to apply. |
queryAsString |
true |
String |
Format of querystring {conceptId:boost} OPERATOR {conceptId:boost} |
queryAsObject |
true |
QueryObject |
Query as json object. |
aggregations[].facetName |
false |
String |
Name of the facet |
aggregations[].limit |
true |
Integer |
Number of hits to return. |
aggregations[].facetFilter |
true |
String |
A string used as a prefix filter, on the returned aggregations. |
aggregations[].aggType |
true |
Enum |
Allows sorting aggregations by count or top hits. |
facetFilters[].facetName |
false |
String |
Name of the facet |
facetFilters[].values |
false |
List<String> |
List of facet values. |
facetFilters[].type |
true |
Enum |
Available Types: |
facetBoosters[].facetName |
false |
String |
Name of the facet |
facetBoosters[].value |
false |
String |
Facet value. |
facetBoosters[].boost |
true |
Float |
Default value: 1.0 |
queryAsObject.operator |
true |
Enum |
Boolean operator. |
queryAsObject.concepts |
true |
List<Concepts> |
List of concepts. |
queryAsObject.concepts[].id |
false |
String |
Concept id. |
queryAsObject.concepts[].boost |
true |
Float |
Default value: 1.0 |
queryAsObject.concepts[].negatedMatch |
true |
Boolean |
Default value: False |
queryAsObject.subExpressions |
true |
List<QueryObject> |
List of nested QueryObjects. |
queryAsObject.negatedSubExpressions |
true |
List<QueryObject> |
List of negated nested QueryObjects. |
Example Request
$ curl 'https://services.unsilo.com/api/related/v3/contentProfile/search?count=10&offset=0&sort=recency&includeAbstract=true' -i -u 'username:password' -X POST \
-H 'Content-Type: application/json' \
-d '{
"aggregations": [
{
"facetName": "journalName",
"limit": 2,
"facetFilter": "American journal",
"aggType": "TOP_HITS_SUM"
}
],
"facetBoosters": [
{
"boost": 300.0,
"facetName": "authorName",
"value": "Shaneda Warren Andersen"
}
],
"facetFilters": [
{
"facetName": "journalName",
"values": [
"American Journal of Epidemiology",
"Journal of Database Management"
],
"type": "NEGATIVE"
},
{
"facetName": "publicationDate",
"values": [
"2015-01-01:2020-01-01"
]
}
],
"queryAsObject": {
"concepts": [
{
"boost": 1.0,
"id": "42949678852",
"negatedMatch": false
},
{
"boost": 2.0,
"id": "32337",
"negatedMatch": false
}
],
"negatedSubExpressions": [
{
"concepts": [
{
"boost": 1.0,
"id": "51539628392",
"negatedMatch": true
},
{
"boost": 3.0,
"id": "326417519825",
"negatedMatch": false
}
],
"negatedSubExpressions": [],
"operator": "OR",
"subExpressions": []
}
],
"operator": "AND",
"subExpressions": []
},
"queryAsString": "{42949678852:1.0} AND {32337:2.0} AND NOT (NOT {51539628392:1.0} OR {326417519825:3.0})"
}'
Response
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
{
"totalHits" : 342,
"documents" : [ {
"id" : "some_id",
"doi" : "some_doi",
"title" : "some_title",
"journal" : "some_journal",
"publicationDate" : "2019-08-14",
"abstractText" : "some_abstract",
"authors" : [ {
"firstName" : "John",
"lastName" : "Doe"
} ],
"customFields" : {
"custom_1" : "value_1"
},
"concepts" : [ {
"id" : "some_id",
"label" : "some_label",
"corpusLabel" : "some_corpus_label"
} ],
"matchedQueryConcepts" : [ {
"id" : "some_id",
"corpusLabel" : "some_corpus_label"
} ]
} ],
"aggregations" : [ {
"facetName" : "journalName",
"buckets" : [ {
"label" : "American Journal of Epidemiology",
"key" : "American Journal of Epidemiology",
"docCount" : 24
} ]
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
aggregations |
List<AggregationResult> |
List of aggregation results. |
documents |
List<Document> |
List of documents returned. |
totalHits |
Integer |
Total amount of matching documents. |
aggregations[].facetName |
String |
The name of the facet. |
aggregations[].buckets |
List<Bucket> |
List of buckets. |
aggregations[].buckets[].label |
String |
Label of the bucket. |
aggregations[].buckets[].key |
String |
The bucket key, which can be used in facet filters and facet boosters. |
aggregations[].buckets[].docCount |
Integer |
The number of documents, the bucket entity has been found in. |
documents[].id |
String |
Document id. |
documents[].doi |
String |
Document doi. |
documents[].title |
String |
Document title. |
documents[].journal |
String |
Document journal. |
documents[].publicationDate |
Date |
Document publication date. |
documents[].abstractText |
String |
Document abstract. |
documents[].authors |
List<Author> |
List of document authors. |
documents[].customFields |
Map<String,String> |
Map of custom values. This is a map, containing custom values, which can be provided when getting a corpus processed. |
documents[].concepts |
List<Concept> |
List of document concepts. Top 15 concepts for each document are returned. |
documents[].matchedQueryConcepts |
List<MatchedQueryConcept> |
List of query concepts, which are found in the document. |
documents[].authors[].firstName |
String |
Authors first name |
documents[].authors[].lastName |
String |
Authors last name |
documents[].concepts[].id |
String |
Concept id. |
documents[].concepts[].label |
String |
Concept document label. |
documents[].concepts[].corpusLabel |
String |
Concept corpus label. |
documents[].matchedQueryConcepts[].id |
String |
Id of query concept found in document. |
documents[].matchedQueryConcepts[].corpusLabel |
String |
Corpus label of query concept found in document. |
10. Related by concepts
10.1. Overview
| The search endpoint is available for testing in our dynamic documentation. |
10.1.1. Search
Given a set of concepts and weights, this endpoint returns the best matching documents from the backing corpus
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
count |
true |
Type: Integer |
includeAbstract |
true |
Type: Boolean |
Request body
| Path | Optional | Type | Description |
|---|---|---|---|
concepts |
true |
List<Concept> |
List of concepts |
concepts[].id |
false |
String |
Concept id |
concepts[].weight |
true |
Float |
Concept weight |
Example Request
$ curl 'https://services.unsilo.com/api/related/v3/contentProfile/by-concepts?count=10&includeAbstract=true' -i -u 'username:password' -X POST \
-H 'Content-Type: application/json' \
-d '{ "concepts": [
{
"id": "breastcant",
"weight": 2.0
},
{
"id": "cantnosolog",
"weight": 1.5
}
]}'
Response
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
{
"hits" : [ {
"document" : {
"id" : "some_id",
"doi" : "some_doi",
"title" : "some_title",
"journal" : "some_journal",
"publicationDate" : "2017-11-22",
"authors" : [ {
"firstName" : "John",
"lastName" : "Doe"
} ],
"score" : 31.16651
},
"concepts" : [ {
"label" : "some_label",
"id" : "some_id"
} ]
} ]
}
Response fields
| Path | Type | Description |
|---|---|---|
hits |
List<Hit> |
List of hits. |
hits[].document |
Document |
Info about the matching document. |
hits[].concepts |
List<Concept> |
Top 15 concepts from the matching document. |
hits[].concepts[].id |
String |
Concept id. |
hits[].concepts[].label |
String |
Concept label. |
hits[].document.id |
String |
Document id. |
hits[].document.doi |
String |
Document doi. |
hits[].document.title |
String |
Document title. |
hits[].document.journal |
String |
Document journal. |
hits[].document.publicationDate |
String |
The publication date of the document. |
hits[].document.score |
Float |
Document relevance score. |
hits[].document.authors |
List<Author> |
List of document authors. |
hits[].document.authors[].firstName |
String |
Authors first name. |
hits[].document.authors[].lastName |
String |
Authors last name. |
11. Related by user profile
11.1. Overview
| The search endpoint is available for testing in our dynamic documentation. |
11.1.1. Articles and Books
Retrieves article and book recommendations, based on a user profile.
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
bookSize |
true |
Type: Integer |
articleSize |
true |
Type: Integer |
includeEvidence |
true |
Type: Boolean |
includePreprint |
true |
Type: Boolean |
Request body
| Path | Optional | Type | Description |
|---|---|---|---|
documents |
true |
List<Document> |
List of documents. Ie. the users click history |
favouriteDocuments |
true |
List<Document> |
List of favourite documents. Ie. the users bookmarked documents. |
documentsToExclude |
true |
List<Document> |
List of documents to exclude from the resultset. |
timeIntervalBooks |
true |
DateRangeObject |
Publication date filter on the books in the response. |
timeIntervalArticles |
true |
DateRangeObject |
Publication date filter on the articles in the response. |
documents[].id |
true |
String |
Document id. |
documents[].doi |
true |
String |
Document DOI. |
favouriteDocuments[].id |
true |
String |
Document id. |
favouriteDocuments[].doi |
true |
String |
Document DOI. |
documentsToExclude[].id |
true |
String |
Document id. |
documentsToExclude[].doi |
true |
String |
Document DOI. |
timeIntervalBooks.from |
true |
Date |
From date (incl) - format: yyyy-MM-dd |
timeIntervalBooks.to |
true |
Date |
To date (excl) - format: yyyy-MM-dd |
timeIntervalArticles.from |
true |
Date |
From date (incl) - format: yyyy-MM-dd |
timeIntervalArticles.to |
true |
Date |
To date (excl) - format: yyyy-MM-dd |
Example Request
$ curl 'https://services.unsilo.com/api/related/v3/contentProfile/related-books-and-articles-by-user-profile?bookSize=10&articleSize=10&includeEvidence=true&includePreprint=false' -i -u 'username:password' -X POST \
-H 'Content-Type: application/json' \
-d '{
"documents": [
{
"id": "docId_a"
},
{
"doi": "docDOI_e"
}
],
"documentsToExclude": [
{
"id": "docId_b"
},
{
"doi": "docDOI_f"
}
],
"favouriteDocuments": [
{
"id": "docId_c"
},
{
"doi": "docDOI_g"
}
],
"timeIntervalArticles": {
"from": "2018-01-01",
"to": "2020-05-30"
},
"timeIntervalBooks": {
"from": "2016-01-01",
"to": "2020-05-30"
}
}'
Response
Example Response
HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
{
"recommendations" : {
"ARTICLE" : [ {
"id" : "some_article_id",
"doi" : "some_article_DOI",
"title" : "article_title",
"journal" : "article_journal",
"publicationDate" : "2019-11-01",
"evidenceDocuments" : [ {
"id" : "docId_b",
"doi" : "docId_b_DOI",
"title" : "docId_b_title",
"journal" : "docId_b_journal"
}, {
"id" : "docId_e",
"doi" : "docDOI_e",
"title" : "docId_e_title",
"journal" : "docId_e_journal"
} ]
} ],
"BOOK" : [ {
"id" : "some_book_id",
"title" : "book_title",
"publicationDate" : "2017-11-01",
"evidenceDocuments" : [ {
"id" : "docId_a",
"doi" : "docId_a_DOI",
"title" : "docId_a_title",
"journal" : "docId_a_journal"
} ]
} ]
}
}
Response fields
| Path | Type | Description |
|---|---|---|
recommendations |
Map<Type, List<Recommendation> |
Map containing recommendations. |
recommendations.ARTICLE |
RecommendationType |
Recommendations of type article. |
recommendations.BOOK |
RecommendationType |
Recommendations fo type book. |
recommendations.ARTICLE[].id |
String |
Document id. |
recommendations.ARTICLE[].doi |
String |
Document DOI. |
recommendations.ARTICLE[].title |
String |
Document title. |
recommendations.ARTICLE[].journal |
String |
Document journal. |
recommendations.ARTICLE[].publicationDate |
Date |
Document publication date. |
recommendations.ARTICLE[].evidenceDocuments |
List<EvidenceDocument> |
A list containing up to 5 documents from the request, acting as evidence for the suggested document. |
recommendations.ARTICLE[].evidenceDocuments[].id |
String |
Document id. |
recommendations.ARTICLE[].evidenceDocuments[].doi |
String |
Document DOI. |
recommendations.ARTICLE[].evidenceDocuments[].title |
String |
Document title. |
recommendations.ARTICLE[].evidenceDocuments[].journal |
String |
Document journal. |
recommendations.BOOK[].id |
String |
Book id. |
recommendations.BOOK[].title |
String |
Book title. |
recommendations.BOOK[].publicationDate |
Date |
Book publication date. |
recommendations.BOOK[].evidenceDocuments |
List<EvidenceDocument> |
A list containing up to 5 documents from the request, acting as evidence for the suggested book. |
recommendations.BOOK[].evidenceDocuments[].id |
String |
Document id. |
recommendations.BOOK[].evidenceDocuments[].doi |
String |
Document DOI. |
recommendations.BOOK[].evidenceDocuments[].title |
String |
Document title. |
recommendations.BOOK[].evidenceDocuments[].journal |
String |
Document journal. |
11.1.2. Articles and Books (Batch)
Retrieves article and book recommendations, for a set of users, based on their profiles.
NOTE: It is not possible to call multiple batch requests concurrently.
Request
Path parameters
| Parameter | Description |
|---|---|
|
A customer-specific part of the URL, determined during the setup of the API. |
Query string Parameters
| Parameter | Optional | Description |
|---|---|---|
bookSize |
true |
Type: Integer |
articleSize |
true |
Type: Integer |
includeCSVHeadersInResponse |
true |
Type: Boolean |
includePreprint |
true |
Type: Boolean |
Request body
| Path | Optional | Type | Description |
|---|---|---|---|
requests |
false |
List<UserProfileRequest> |
List of user requests. |
requests[].userId |
false |
String |
User id |
requests[].documents |
true |
List<Document> |
List of documents. Ie. the users click history. |
requests[].favouriteDocuments |
true |
List<Document> |
List of favourite documents. Ie. the users bookmarked documents. |
requests[].documentsToExclude |
true |
List<Document> |
List of documents to exclude from the resultset. |
requests[].timeIntervalBooks |
true |
DateRangeObject |
Publication date filter on the books in the response. |
requests[].timeIntervalArticles |
true |
DateRangeObject |
Publication date filter on the articles in the response. |
requests[].documents[].id |
true |
String |
Document id. |
requests[].favouriteDocuments[].id |
true |
String |
Document id. |
requests[].documentsToExclude[].id |
true |
String |
Document id. |
requests[].timeIntervalBooks.from |
true |
Date |
From date (incl) - format: yyyy-MM-dd |
requests[].timeIntervalBooks.to |
true |
Date |
To date (excl) - format: yyyy-MM-dd |
requests[].timeIntervalArticles.from |
true |
Date |
From date (incl) - format: yyyy-MM-dd |
requests[].timeIntervalArticles.to |
true |
Date |
To date (excl) - format: yyyy-MM-dd |
Example Request
$ curl 'https://services.unsilo.com/api/related/v3/contentProfile/related-books-and-articles-by-user-profile-batch?bookSize=10&articleSize=10&includeCSVHeadersInResponse=true&includePreprint=false' -i -u 'username:password' -X POST \
-H 'Content-Type: application/json' \
-d '{
"requests": [
{
"documents": [
{
"id": "docId_a"
}
],
"documentsToExclude": [
{
"id": "docId_b"
}
],
"favouriteDocuments": [
{
"id": "docId_c"
}
],
"timeIntervalArticles": {
"from": "2018-01-01",
"to": "2020-05-30"
},
"timeIntervalBooks": {
"from": "2016-01-01",
"to": "2020-05-30"
},
"userId": "user_id"
}
]
}'
Response
The results are returned in csv format, with a header row, followed by a row for each request.
Given that bookSize=3 and articleSize=3 in the request, the response would have the following format,
with book_1 being the best matching book, and article_1 being the best matching article.
Example Response
user_id, book_1, book_2, book_3, article_1, article_2, article_3
1, book_a_id, book_b_id, book_c_id, article_a_id, article_b_id, article_c_id
2, book_d_id, book_e_id, book_f_id, article_d_id, article_e_id, article_f_id