Microforge API
Papers/Search

Search papers

Full-text search across papers with relevance ranking

POST
/papers/search

Authorization

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
querystring

Search query (searches title, abstract, keywords)

venues?array<string>

Filter by venues (uses ILIKE matching)

yearFrom?integer

Minimum publication year

yearTo?integer

Maximum publication year

authors?array<string>

Filter by author slugs (ALL must match - intersection)

minCitations?integer

Minimum citation count

limit?integer

Maximum number of results (default 50, max 100)

Default50
Rangevalue <= 100

Response Body

Successful response

TypeScript Definitions

Use the response body type in TypeScript.

results?array<object & object>
count?integer

Bad request

TypeScript Definitions

Use the response body type in TypeScript.

error?string
message?string

Unauthorized

TypeScript Definitions

Use the response body type in TypeScript.

error?string
message?string

Internal server error

TypeScript Definitions

Use the response body type in TypeScript.

error?string
message?string
curl -X POST "https://hiring-api.microforge.studio/v1/papers/search" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "transformer attention",
    "yearFrom": 2020,
    "minCitations": 50,
    "limit": 20
  }'
const body = JSON.stringify({
  "query": "transformer attention",
  "yearFrom": 2020,
  "minCitations": 50,
  "limit": 20
})

fetch("https://hiring-api.microforge.studio/v1/papers/search", {
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://hiring-api.microforge.studio/v1/papers/search"
  body := strings.NewReader(`{
    "query": "transformer attention",
    "yearFrom": 2020,
    "minCitations": 50,
    "limit": 20
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://hiring-api.microforge.studio/v1/papers/search"
body = {
  "query": "transformer attention",
  "yearFrom": 2020,
  "minCitations": 50,
  "limit": 20
}
response = requests.request("POST", url, json = body, headers = {
  "Content-Type": "application/json"
})

print(response.text)
{
  "results": [
    {
      "paper_id": "string",
      "researcher_slug": "string",
      "title": "string",
      "abstract": "string",
      "keywords": [
        "string"
      ],
      "authors": [
        "string"
      ],
      "author_position": 0,
      "is_lead_author": true,
      "publication_year": 0,
      "citations_count": 0,
      "venue": "string",
      "gscholar_link": "string",
      "url": "string",
      "source_db": "string",
      "relevance_score": 0
    }
  ],
  "count": 0
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string",
  "message": "string"
}