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-04-11T14:42:56Z",
"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" : {
"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"
} ]
} ],
"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"
} ]
} ]
}
}
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