Books API

BookMatch API

Semantic book recommendations from raw text.

View docs
Input
Up to 6,000 characters
Corpus
~70,000 books
Output
Title, author, summary, ASIN/ISBN, similarity, Amazon URL
Integration
One POST endpoint. JSON response. Built for fast integration.

Status: GA · Auth: Bearer · Format: JSON

Plans

Enterprise

$0.00/month

Monthly request quota included

  • 10,000 requests/month included
  • Commercial use
  • Standard support

Pro

$19.99/month

10,000 requests/month

  • 10,000 requests/month included
  • Commercial use
  • Standard support

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

Quickstart

  1. 1. Subscribe to BookMatch Pro.
  2. 2. Create an API key from your dashboard.
  3. 3. POST https://api.tawkee.com/v1/bookmatch with your API key.

curl

curl -s -X POST https://api.tawkee.com/v1/bookmatch \
  -H "Authorization: Bearer $TAWKEE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"In today's economic briefing, policymakers held interest rates steady while warning that persistent inflation and slower productivity growth could pressure households through next year."}'

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

  • 400 invalid payload (missing text / >6000 chars)
  • 401 missing/invalid API key
  • 403 no active subscription
  • 429 rate limited or monthly quota exceeded
  • 5xx upstream error passthrough

Examples

curl

curl -s -X POST https://api.tawkee.com/v1/bookmatch \
  -H "Authorization: Bearer $TAWKEE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"In today's economic briefing, policymakers held interest rates steady while warning that persistent inflation and slower productivity growth could pressure households through next year."}'

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);