Neuji
On this page

Instant answers

Compute an instant answer — calculator, unit and currency conversion, world time, dictionary definitions, hashes, QR codes, and two dozen more families — entirely on Neuji: zero upstream calls, and the query never reaches a third party.

Code
GET /v1/answers?q=100+usd+to+eur
Authorization: Bearer neuji_live_…

Included with membership by default: calls appear in /v1/usage under requests with 0 billable_units and draw no credits. (The platform can switch answers to metered billing — 1 unit per call, like search — in which case the X-Credits-* headers and insufficient_credits semantics apply.)

Parameters

Param Required Meaning
q yes The question. Up to 512 characters.
hl no The parsing language: en, ar, de, es, fr, ja. Unknown values fall back to en. 12 fuß in meter parses under hl=de; number formats follow the language (3,5 km is three and a half in German).
gl no Region bias for region-dependent answers.

The response

answered: false (with HTTP 200) is the common, successful outcome — most queries are web searches, not answerable questions. When answered is true, answer carries:

  • kind — the family (calculator, currency, time_zone, definitions, …). New kinds may be added without a version bump: treat unknown kinds as a generic card and parse defensively.
  • primary, expression, secondary, items[] — the card content, invariant formatting.
  • Stable identifiersprimary_label, items[].label, disclosure.key (and primary itself when primary_is_key is true) are stable machine-readable answers.* identifiers. They are never renamed; new ones may appear. Map them to your own display strings, or show the values as-is.
  • copy_text — the machine-format payload (bare number, ISO instant, digest); null ⇒ use primary.
  • svg — inline SVG for visual kinds (QR, color swatch). Sandbox it as an untrusted image.
  • is_error — an error card (division by zero): the engine answered, with a diagnosis in primary_label (answers.err.*).
  • timezone — the full world-clock model for kind: time_zone: per-place rows (zone id, local time/date, UTC offset, DST flag, day/night, day shift, next DST change) plus a 24-character meeting_strip per row (n night, d day, b business hours, indexed by the first row's local hours — overlay rows to find meeting overlap).
  • definitions — the dictionary model for kind: definitions: headword, IPA, senses grouped by part of speech, and source_url + license (CC BY-SA 4.0 — display or link the source when you show this content). Definitions come from each language's own Wiktionary edition; Arabic entries currently carry English glosses (gloss_lang: "en").

Worth knowing:

  • client_info answers (what is my ip) describe the API caller — your server's egress, not your end user's.
  • Currency uses the ECB daily reference rates; disclosure carries the rate date, and a stale snapshot is labeled (answers.currency.stale). Informational only.
  • Timers are a web-client widget and never answer over the API.

Examples

GET /v1/answers?q=define+serendipity

JSON
{
  "query": "define serendipity",
  "answered": true,
  "answer": {
    "kind": "definitions",
    "primary": "serendipity",
    "definitions": {
      "headword": "serendipity",
      "ipa": "/ˌsɛɹ.ənˈdɪp.ɪ.ti/",
      "gloss_lang": "en",
      "source_url": "https://en.wiktionary.org/wiki/serendipity",
      "license": "CC BY-SA 4.0",
      "pos": [ { "pos": "noun", "senses": [ { "gloss": "An unsought, unexpected, fortunate discovery.", "example": null } ] } ]
    }
  }
}

GET /v1/answers?q=best+pizza+in+naples{ "query": "…", "answered": false, "answer": null }

Standard rate limits apply. The full schema lives in the OpenAPI document.

Was this page helpful?