Find what a document is about

The phrases that actually characterise a document, ranked, without you reading it first.

Drop a file here, or , or type below.

.txt · .md · .html · .csv · up to 4 MB · processed in memory and never stored · or paste with Ctrl+V

Options

rake for multi-word phrases, tfidf for single terms.

Stopword list used to find phrase boundaries.

How many to return, up to 100.

1 to 100

3 credits

What it does

Also called: find what a document is about · extract keywords from text · pull the key terms out of an article.

Use it from your own code

The same endpoint this page calls — no daily cap, 3 credits a call either way.

POST /v1/nlp/keyword-extract

curl -X POST "$DOATHING_API/v1/nlp/keyword-extract" \
  -H "x-api-key: $DOATHING_KEY" \
  -H "content-type: application/json" \
  -d '{"text": "Ada Lovelace worked in London for Charles Babbage. She wrote the first algorithm intended for a machine. Her notes described a general-purpose computer a century before one was built."}'

The phrases that actually characterise a document, ranked, without you reading it first.

Extract ranked key phrases using RAKE or TF-IDF scoring over candidate n-grams.

Input

Send either a text string or a file object. A file is decoded as UTF-8 and must be one of text/plain, text/markdown, text/html, text/csv.

Response

The result carries your remaining balance alongside it, so you can track spend without a second call.

{
  "keywords": [
    {
      "phrase": "analytical engine",
      "score": 4.0,
      "relative": 1.0
    }
  ],
  "count": 10,
  "method": "rake",
  "request_id": "37f01edb-0163-42a1-ac51-0acaef979800",
  "credits_remaining": 96
}

Cost

3 credits per call, whether it is run from the site or from the API — the credential differs, the price does not. A new account starts with 20 credits.

A rejected request still costs a credit: the authorizer decrements before the tool validates. A call rejected for a missing or invalid key is free.

Parameters

Generated from the endpoint’s own validation, so this is exactly what it accepts. A body field goes at the top level; an option goes inside options.

NameInTypeDefaultNotes
methodoptionsstring"rake"rake for multi-word phrases, tfidf for single terms. one of rake, tfidf
languageoptionsstring"english"Stopword list used to find phrase boundaries. one of albanian, arabic, azerbaijani, basque, belarusian, bengali, catalan, chinese, danish, dutch, english, finnish, french, german, greek, hebrew, hinglish, hungarian, indonesian, italian, kazakh, nepali, norwegian, portuguese, romanian, russian, slovene, spanish, swedish, tajik, tamil, turkish, uzbek
countoptionsinteger10How many to return, up to 100. 1 to 100