Our API is a simple HTTP interface with various options:
Example file: glycolysis-notes.docx
... aldolase is a cytoplasmic enzyme that is required for both gluconeogenesis and glycolysis. During gluconeogenesis, aldolase converts glyceraldehyde-3-phosphate to fructose 1,6-bisphosphate. However during glycolysis, fructose 1,6-bisphosphate is converted to dihydroxyacetone phosphate by an independent catalytic subunit ...
JSON response
{
"response": [
{
"key_word": "Aldolase",
"key_word_definition": "An enzyme of the lyase class that catalyzes the cleavage of fructose 1,6-biphosphate to form dihydroxyacetone phosphate and glyceraldehyde 3-phosphate.",
"frequency": "2"
},
"key_word": "Dihydroxyacetone Phosphate",
"key_word_definition": "An important intermediate in lipid biosynthesis and in glycolysis.",
"frequency": "1"
},
{
"key_word": "Glycolysis",
"key_word_definition": "A metabolic process that converts glucose into two molecules of pyruvic acid through a series of enzymatic reactions.",
"frequency": "2"
},
// Example response truncated
]
}
# valid file extensions: pdf, ppt, pptx, doc, docx, jpg, png
# valid output formats: 'format=flashcards' or 'format=mcq'
$ curl -H 'X-API-Key: INSERT_YOUR_API_KEY_HERE' \
-F 'document_file=@/path/to/file.pdf' \
-F 'format=flashcards' \
-f https://theexaminers.co.uk/api/v1.0/
// Requires "request" to be installed (see https://www.npmjs.com/package/request)
var request = require('request');
var fs = require('fs');
request.post({
url: 'https://theexaminers.co.uk/api/v1.0/',
formData: {
file: fs.createReadStream('/path/to/file.pdf'),
format: 'flashcards',
},
headers: {
'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'
},
encoding: null
}, function(error, response, body) {
if(error) return console.error('Request failed:', error);
if(response.statusCode != 200) return console.error('Error:', response.statusCode, body.toString('utf8'));
fs.writeFileSync("response.json", body);
});
# Requires "requests" to be installed (see python-requests.org)
import requests
response = requests.post(
'https://theexaminers.co.uk/api/v1.0/',
files={'file': open('/path/to/file.pdf', 'rb')},
data={'format': 'flashcards'},
headers={'X-Api-Key': 'INSERT_YOUR_API_KEY_HERE'},
)
if response.status_code == requests.codes.ok:
with open('response.json', 'wb') as out:
out.write(response.content)
else:
print("Error:", response.status_code, response.text)
// Requires "guzzle" to be installed (see guzzlephp.org)
$client = new GuzzleHttp\Client();
$res = $client->post('https://theexaminers.co.uk/api/v1.0/', [
'multipart' => [
[
'name' => 'file',
'contents' => fopen('/path/to/file.pdf', 'r')
],
[
'name' => 'format',
'contents' => 'flashcards'
]
],
'headers' => [
'X-Api-Key' => 'INSERT_YOUR_API_KEY_HERE'
]
]);
$fp = fopen("response.json", "wb");
fwrite($fp, $res->getBody());
fclose($fp);
// Requires "Apache HttpComponents" to be installed (see hc.apache.org)
Response response = Request.Post("https://theexaminers.co.uk/api/v1.0/")
.addHeader("X-Api-Key", "INSERT_YOUR_API_KEY_HERE")
.body(
MultipartEntityBuilder.create()
.addBinaryBody("file", new File("/path/to/file.pdf"))
.addTextBody("format", "flashcards")
.build()
).execute();
response.saveContent(new File("response.json"));
// Requires AFNetworking to be installed (see https://github.com/AFNetworking/AFNetworking)
NSURL *fileUrl = [NSBundle.mainBundle URLForResource:@"file" withExtension:@"pdf"];
NSData *data = [NSData dataWithContentsOfURL:fileUrl];
if (!data) {
return;
}
AFHTTPSessionManager *manager =
[[AFHTTPSessionManager alloc] initWithSessionConfiguration:
NSURLSessionConfiguration.defaultSessionConfiguration];
manager.responseSerializer = [AFImageResponseSerializer serializer];
[manager.requestSerializer setValue:@"INSERT_YOUR_API_KEY_HERE"
forHTTPHeaderField:@"X-Api-Key"];
NSURLSessionDataTask *dataTask = [manager
POST:@"https://theexaminers.co.uk/api/v1.0/"
parameters:nil
constructingBodyWithBlock:^(id _Nonnull formData) {
[formData appendPartWithFileData:data
name:@"file"
fileName:@"file.pdf"
mimeType:@"image/jpeg"];
}
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject isKindOfClass:UIImage.class] == false) {
return;
}
self.imageView.image = responseObject;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// Handle error here
}];
[dataTask resume];
// Requires Alamofire to be installed (see https://github.com/Alamofire/Alamofire)
guard let fileUrl = Bundle.main.url(forResource: "file", withExtension: "jpg"),
let data = try? Data(contentsOf: fileUrl) else { return }
Alamofire
.upload(
multipartFormData: { builder in
builder.append(
data,
withName: "file",
fileName: "file.pdf",
)
},
to: URL(string: "https://theexaminers.co.uk/api/v1.0/")!,
headers: [
"X-Api-Key": "INSERT_YOUR_API_KEY_HERE"
]
) { result in
switch result {
case .success(let JSON):
print("print the JSON response");
}
case .failure:
return
}
}
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
{
formData.Headers.Add("X-Api-Key", "INSERT_YOUR_API_KEY_HERE");
formData.Add(new ByteArrayContent(File.ReadAllBytes("/path/to/file.pdf")), "image_file", "file.pdf");
formData.Add(new StringContent("flashcards"), "format");
var response = client.PostAsync("https://theexaminers.co.uk/api/v1.0/", formData).Result;
if(response.IsSuccessStatusCode) {
FileStream fileStream = new FileStream("response.json", FileMode.Create, FileAccess.Write, FileShare.None);
response.Content.CopyToAsync(fileStream).ContinueWith((copyTask) =>{ fileStream.Close(); });
} else {
Console.WriteLine("Error: " + response.Content.ReadAsStringAsync().Result);
}
}
You can request one of two formats via the format
parameter:
Response output | Format parameter | Features |
---|---|---|
Flashcards |
flashcards
|
Identifies all keywords Returns relational keywords & definitions Returns up to 200 keywords per document |
Multiple Choice Questions |
mcq
|
Identifies all keywords Returns up to 10 related questions, each with 1 correct answer & 4 related distractors Also returns question acronym expansions |
allerology, anatomy, biology, biotechnology, biochemistry, bioinformatics, biolinguistics, biomechanics, biophysics, botany, cardiology, cell biology, clinical chemistry, developmental biology, ecology, endocrinology, evolutionary biology, genetics, hematology, histology, immunology, infectious disease, microbiology, molecular biology, nephrology, neuroscience, neurology, oncology, pathology, pathophysiology, pharmacology, physiology, plant biology, plant biochemistry, population biology, respiratory medicine, rheumatology, structural biology, synthetic biology, systems biology, virology, zoology
Most recent API updates:
jpg
and png
to the available document formats.
mcq
to retrieve multiple choice questions from a document.
doc
and docx
to the available document formats.
GET /account
for credit balance lookups.
ppt
and pptx
to the available document formats.
flashcards
to retrieve flashcards from a document.