Books API
Tawkee BookMatch API
Semantic book recommendations from raw text.
- Input: up to 6,000 characters
- Corpus: ~70,000 books
- Output includes: title, author, summary (when available), ASIN/ISBN, similarity score, Amazon URL
- Designed for fast integration: one POST, JSON response
Pro - $19.99/month
Use cases
- Recommend books from a user's notes or interests
- Generate reading lists for research topics
- Enrich content workflows (articles -> relevant books)
- Build discovery features in learning apps
Endpoint contract
POST https://api.tawkee.com/v1/bookmatch
Headers
Authorization: Bearer <API_KEY>Content-Type: application/json
Request JSON
{
"text": "string (1..6000 chars)"
}Response JSON
{
"request_id": "uuid",
"results": [
{
"book_id": "string",
"title": "string",
"author": "string",
"summary": "string|null",
"asin": "string|null",
"isbn13": "string|null",
"member_asins": ["string"],
"member_isbns": ["string"],
"amazon_url": "https://www.amazon.com/...",
"similarity": 0.72
}
]
}Error codes
400invalid payload (missing text / >6000 chars)401missing/invalid API key403no active subscription429rate limited5xxupstream error passthrough
Examples
curl
curl -s https://api.tawkee.com/v1/bookmatch \
-H "Authorization: Bearer $TAWKEE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"I want books about building high-performance search systems and vector databases..."}'Node
const res = await fetch("https://api.tawkee.com/v1/bookmatch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TAWKEE_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ text })
});
console.log(await res.json());Rust (reqwest)
let client = reqwest::Client::new();
let resp = client
.post("https://api.tawkee.com/v1/bookmatch")
.bearer_auth(std::env::var("TAWKEE_API_KEY")?)
.json(&serde_json::json!({ "text": text }))
.send()
.await?
.json::<serde_json::Value>()
.await?;
println!("{}", resp);