公共 API v1 只读词典 API 的参考文档,由服务器发布的 OpenAPI 文档生成——SDK 也是基于同一份契约构建的。
Read-only dictionary API under /api/v1 (contract version 1): no authentication, every answer in a { data, meta } envelope, errors as { statusCode, message, error: true }, X-API-Version on every response. The /api/compat/freedictionaryapi/v1 routes use freedictionaryapi.com objects, language lists and plain-text errors. The /api/compat/dictionaryapi routes use dictionaryapi.dev v1/v2 arrays and errors, with additive vocabBloom provenance. Compatibility lookups ending in /datasets wrap the responses from all installed datasets in { data, meta }; each group has dataset terms, status and response. Successful GET answers carry ETag, Last-Modified and Cache-Control. Documentation: https://vocab-bloom-hub.com/en/docs/api.
基础 URL https://<instance>/api/v1每个实例都在自己的源站上提供 API;下面的示例使用占位符。
契约 OpenAPI 3 文档,每个实例都在此路径提供
/api/v1/openapi.json;
已提交的文件 端点 GET /api/v1/openapi.json The OpenAPI 3 document of the public API (this contract)
参数 无参数。
响应 200 OK — object 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window — PublicApiErrorT 503 Not available: a selected dataset could not be read, the OpenAPI document is not ready, or the suggestion queue is full — PublicApiErrorT 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/openapi.json' const res = await fetch ('https://your-instance.example/api/v1/openapi.json' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/openapi.json" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/openapi.json" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/openapi.json' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/openapi.json"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/openapi.json" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/openapi.json' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const document = await client.openapi ();
const info = document .info ;
if (info && typeof info === 'object' && 'version' in info) {
console .log (info.version );
}from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
document = client.openapi()
print (document["info" ]["version" ])GET /api/v1/search Search dictionary entries (flat list, no meanings)
Tiers in relevance order: exact, phrasal, starts-with, phrases, ends-with, contains. When none matches, a trigram similarity tier answers typos (`meta.fuzzy: true`, `similarity` on every item; Postgres instances only). A term shorter than 3 characters searches the exact and prefix tiers only (`meta.short_term: true`). Cacheable: the answer carries `ETag`, `Last-Modified` and `Cache-Control` like every public GET.
参数 名称 位置 类型 必填 描述 searchquery string是 The term to search for typequery stringwordgrammar_patternphrase
否 Restrict the answer to one entry type limitquery integer否 默认值: 10
datasetquery string否 Public dataset name; omitted = the active dataset. Unknown or closed targets return 404, never a fallback.
响应 200 OK — PublicSearchV1ResT 400 Invalid input: an unknown field, a value outside the allowed set, or a foreign cursor — PublicApiErrorT 404 Nothing matches — PublicApiErrorT 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window — PublicApiErrorT 503 Not available: a selected dataset could not be read, the OpenAPI document is not ready, or the suggestion queue is full — PublicApiErrorT 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/search' const res = await fetch ('https://your-instance.example/api/v1/search' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/search" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/search" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/search' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/search"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/search" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/search' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data, meta } = await client.search ({ search : 'run' });
console .log (meta.fuzzy , data[0 ]?.word );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.search("run" )
print (answer.meta.fuzzy, answer.data[0 ].word if answer.data else None )在演练场中试用
GET /api/v1/search/detailed Search dictionary entries with pagination, meanings and translations
The detailed search: the same term and tiers, paged, with meanings and translations joined on request; the fields travel in the query string (`translation_languages` as a repeated key). Cacheable like every public GET.
参数 名称 位置 类型 必填 描述 searchquery string是 The term to search for typequery stringwordgrammar_patternphrase
否 Restrict the answer to one entry type limitquery integer否 默认值: 10
pagequery integer否 默认值: 1
with_meaningsquery boolean否 Join the meanings (with translations, synonyms, antonyms) of every item默认值: false
with_translationsquery boolean否 Join the short translations of every item默认值: false
translation_languagesquery string[]ruesfrdeptzhar
否 Keep only these translation languages (a repeated key); omit the key for all of them datasetquery string否 Public dataset name; omitted = the active dataset. Unknown or closed targets return 404, never a fallback.
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/search/detailed' const res = await fetch ('https://your-instance.example/api/v1/search/detailed' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/search/detailed" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/search/detailed" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/search/detailed' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/search/detailed"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/search/detailed" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/search/detailed' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.searchDetailed ({ search : 'run' , with_meanings : true });
const first = data[0 ];
console .log (first?.part_of_speech , first?.meanings ?.[0 ]?.title );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.search_detailed("run" , with_meanings=True )
first = answer.data[0 ] if answer.data else None
print (
first.part_of_speech.value if first else None ,
first.meanings[0 ].title if first and first.meanings else None ,
)在演练场中试用
GET /api/v1/words/{word} All entries of a headword: parts of speech, forms, meanings, translations, links
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run' const res = await fetch ('https://your-instance.example/api/v1/words/run' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.word ('run' );
console .log (data[0 ]?.meanings ?.[0 ]?.definition );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.word("run" )
first = answer.data[0 ] if answer.data else None
print (first.meanings[0 ].definition if first and first.meanings else None )在演练场中试用
GET /api/v1/words/{word}/meanings The meanings of a headword across its entries
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/meanings' const res = await fetch ('https://your-instance.example/api/v1/words/run/meanings' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/meanings" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/meanings" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/meanings' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/meanings"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/meanings" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/meanings' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.meanings ('run' );
console .log (data[0 ]?.definition );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.meanings("run" )
print (answer.data[0 ].definition if answer.data else None )在演练场中试用
GET /api/v1/words/{word}/translations The short and per-meaning translations of a headword
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry languagequery string[]ruesfrdeptzhar
否 Translation languages; no value means all of them
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/translations' const res = await fetch ('https://your-instance.example/api/v1/words/run/translations' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/translations" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/translations" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/translations' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/translations"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/translations" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/translations' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.translations ('run' );
const first = data.meaning_translations [0 ];
console .log (first?.title , first?.language );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.translations("run" )
first = answer.data.meaning_translations[0 ] if answer.data.meaning_translations else None
print (first.title if first else None , first.language.value if first else None )在演练场中试用
GET /api/v1/words/{word}/synonyms The synonyms of a headword, per meaning
One item per linked headword and meaning; each names its `meaning_id`, `word_id` and `part_of_speech`.
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/synonyms' const res = await fetch ('https://your-instance.example/api/v1/words/run/synonyms' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/synonyms" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/synonyms" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/synonyms' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/synonyms"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/synonyms" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/synonyms' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.synonyms ('run' );
console .log (data.map ((link ) => link.word ));from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.synonyms("run" )
print ([link.word for link in answer.data])在演练场中试用
GET /api/v1/words/{word}/antonyms The antonyms of a headword, per meaning
One item per linked headword and meaning; each names its `meaning_id`, `word_id` and `part_of_speech`.
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/antonyms' const res = await fetch ('https://your-instance.example/api/v1/words/run/antonyms' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/antonyms" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/antonyms" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/antonyms' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/antonyms"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/antonyms" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/antonyms' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.antonyms ('run' );
console .log (data.map ((link ) => link.word ));from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.antonyms("run" )
print ([link.word for link in answer.data])在演练场中试用
GET /api/v1/words/{word}/history What was changed or added on the instance in the entries of a headword
The edits that still show in what is served, the latest first, with the values before and after: the entries of such a headword carry `modified: true`. Empty for a headword served as its source has it.
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/v1/words/run/history' const res = await fetch ('https://your-instance.example/api/v1/words/run/history' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/history" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/history" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/history' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/history"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/history" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/history' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/v1/words/{word}/datasets A headword as every open dataset of the instance has it, grouped by dataset
One group per open dataset, never merged: the terms of the dataset (`license`, `attribution`, `license_text`, …) and the entries `GET /words/{word}` would answer if that dataset were the served one. The spelling is matched inside each dataset, so a group has its own `word` and `variants`; a dataset without the headword answers an empty `entries`, and the request fails with 404 when no dataset holds it. Entries taken from several groups are bound by the terms of each. One request against the rate limit.
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/datasets' const res = await fetch ('https://your-instance.example/api/v1/words/run/datasets' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/datasets" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/datasets" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/datasets' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/datasets"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/datasets" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/datasets' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data, meta } = await client.wordDatasets ('run' );
console .log (`${meta.found} of ${meta.datasets} datasets hold the word` );
for (const group of data) {
console .log (group.dataset , group.license , group.attribution , group.entries .length );
}from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.word_datasets("run" )
print (f"{answer.meta.found} of {answer.meta.datasets} datasets hold the word" )
for group in answer.data:
print (group.dataset, group.license, group.attribution, len (group.entries))在演练场中试用
GET /api/v1/words/{word}/datasets/{dataset}/history What was changed or added on the instance in the entries of a headword, in one dataset
The answer of `GET /words/{word}/history` for a dataset named by its `dataset`: the edits behind `modified: true` of the entries of that group. 404 for a closed dataset or a dataset the instance does not hold.
参数 名称 位置 类型 必填 描述 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry datasetpath string是 The name of a dataset of the instance, as `dataset` of a group of `GET /words/{word}/datasets` says it
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/run/datasets/default/history' const res = await fetch ('https://your-instance.example/api/v1/words/run/datasets/default/history' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/run/datasets/default/history" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/run/datasets/default/history" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/run/datasets/default/history' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/run/datasets/default/history"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/run/datasets/default/history" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/run/datasets/default/history' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.datasetHistory ('run' , 'default' );
for (const change of data) {
console .log (change.created_at , change.entity , change.action , change.diff );
}from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
history = client.dataset_history("run" , "default" )
for change in history.data:
print (change.created_at, change.entity.value, change.action.value, change.diff)在演练场中试用
GET /api/v1/words/id/{id} One dictionary entry by its numeric id
参数 响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words/id/1' const res = await fetch ('https://your-instance.example/api/v1/words/id/1' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words/id/1" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words/id/1" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/id/1' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words/id/1"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/id/1" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/id/1' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.wordById (1 );
console .log (data.word , data.part_of_speech );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.word_by_id(1 )
print (answer.data.word, answer.data.part_of_speech.value)在演练场中试用
GET /api/v1/words List dictionary entries by filters, cursor-paged and ordered by (word, id)
Every enum filter accepts a repeated key; values of one filter are OR-ed, filters are AND-ed. `search` keeps the headwords starting with the prefix (an autocomplete or an A–Z browser: cacheable, unlike the search). Pass `meta.next_cursor` back as `cursor` to read the next page.
参数 名称 位置 类型 必填 描述 searchquery string否 Headword prefix, case-insensitive (`ru` lists run, rung, runner, …) is_obsoletequery boolean否 true: obsolete entries only, false: current ones only part_of_speechquery string[]nounverbmodal_verbadjectiveadverbpronounnumeralnumeral_fractionaldeterminerinterjectionarticleprepositionconjunctionletterphrasegrammar_pattern
否 word_levelquery string[]A1A2B1B2C1C2
否 language_registerquery string[]formalinformalslang
否 categoryquery string[]scientifictechnicalmedicallegalbusinessITartpoliticalsportculinary
否 Words tagged with any of the categories area_variantquery string[]commonbritishamericanaustralian
否 form_of_wordquery string[]base_formplural_formpossessive_singular_formpossessive_plural_formpast_simplepast_participlepresent_participlethird_person_singularcomparative_formsuperlative_formobjectpossessive_adjectivepossessive_pronounreflexiveordinalmultiplicative
否 Defaults to base forms only默认值: ["base_form"]
cursorquery string否 The `meta.next_cursor` of the previous page; omit for the first page limitquery integer否 默认值: 20
with_meaningsquery boolean否 Join the meanings of every word默认值: false
with_translationsquery boolean否 Join the short translations of every word默认值: false
响应 200 OK — PublicWordsV1ResT 400 Invalid input: an unknown field, a value outside the allowed set, or a foreign cursor — PublicApiErrorT 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window — PublicApiErrorT 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/words' const res = await fetch ('https://your-instance.example/api/v1/words' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/words" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/words" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/words"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.words ({ word_level : ['A1' ] });
console .log (data.slice (0 , 5 ).map ((entry ) => entry.word ));
from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.words(word_level=["A1" ])
print ([entry.word for entry in answer.data[:5 ]])
在演练场中试用
GET /api/v1/random A random dictionary entry matching the filters (base forms unless form_of_word is given)
参数 名称 位置 类型 必填 描述 searchquery string否 Headword prefix, case-insensitive (`ru` lists run, rung, runner, …) is_obsoletequery boolean否 true: obsolete entries only, false: current ones only part_of_speechquery string[]nounverbmodal_verbadjectiveadverbpronounnumeralnumeral_fractionaldeterminerinterjectionarticleprepositionconjunctionletterphrasegrammar_pattern
否 word_levelquery string[]A1A2B1B2C1C2
否 language_registerquery string[]formalinformalslang
否 categoryquery string[]scientifictechnicalmedicallegalbusinessITartpoliticalsportculinary
否 Words tagged with any of the categories area_variantquery string[]commonbritishamericanaustralian
否 form_of_wordquery string[]base_formplural_formpossessive_singular_formpossessive_plural_formpast_simplepast_participlepresent_participlethird_person_singularcomparative_formsuperlative_formobjectpossessive_adjectivepossessive_pronounreflexiveordinalmultiplicative
否 Defaults to base forms only默认值: ["base_form"]
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/random' const res = await fetch ('https://your-instance.example/api/v1/random' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/random" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/random" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/random' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/random"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/random" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/random' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.random ();
console .log (data.word );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.random()
print (answer.data.word)在演练场中试用
GET /api/v1/search/semantic/status Whether the instance enables semantic search
Reflects only SEMANTIC_SEARCH_ENABLED. Performs no inference and does not promise model/vector availability. Never cached.
参数 无参数。
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/search/semantic/status' const res = await fetch ('https://your-instance.example/api/v1/search/semantic/status' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/search/semantic/status" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/search/semantic/status" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/search/semantic/status' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/search/semantic/status"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/search/semantic/status" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/search/semantic/status' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.semanticStatus ();
console .log (data.enabled );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.semantic_status()
print (answer.data.enabled)在演练场中试用
GET /api/v1/search/semantic Find existing meanings from a description
Separate from spelling search; no lexical fallback. Requires SEMANTIC_SEARCH_ENABLED, PostgreSQL/pgvector, imported current vectors and a matching Ollama model. Disabled = 404 semantic_search_disabled; missing infrastructure, busy service or incompatible model = 503. Returns up to 20 meanings, ordered by cosine similarity then meaning ID. Scores are not confidence probabilities; no calibrated no-answer threshold. No pagination or cross-dataset ranking. Uses the shared public rate budget. Responses are no-store.
参数 名称 位置 类型 必填 描述 queryquery string是 A description of the intended meaning, in English or another language supported by the model. datasetquery string否 One public dataset; omitted = active dataset. Closed/unknown targets return 404. limitquery integer否 默认值: 10
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/search/semantic' const res = await fetch ('https://your-instance.example/api/v1/search/semantic' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/search/semantic" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/search/semantic" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/search/semantic' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/search/semantic"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/search/semantic" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/search/semantic' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.searchSemantic ({ query : 'A scientist who studies birds' });
console .log (data[0 ]?.word .word , data[0 ]?.meaning .definition );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.search_semantic("A scientist who studies birds" )
print (answer.data[0 ].meaning.definition if answer.data else None )在演练场中试用
GET /api/compat/dictionaryapi/v2/entries/{language}/{word}/datasets dictionaryapi.dev v2 responses from every open dataset
One group per installed dataset with its terms, status and response in the adapter format. Missing words have status 404 and the adapter error in response. The outer request returns 200 even when no dataset matches. English only; the usual headword and inflection rules apply in each dataset. No query parameters. Does not activate any dataset. One public rate-limit unit; cached across all datasets.
参数 名称 位置 类型 必填 描述 languagepath stringenen_USen_GB
是 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets' const res = await fetch ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run/datasets' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/dictionaryapi/v1/entries/{language}/{word}/datasets dictionaryapi.dev v1 responses from every open dataset
One group per installed dataset with its terms, status and response in the adapter format. Missing words have status 404 and the adapter error in response. The outer request returns 200 even when no dataset matches. English only; the usual headword and inflection rules apply in each dataset. No query parameters. Does not activate any dataset. One public rate-limit unit; cached across all datasets.
参数 名称 位置 类型 必填 描述 languagepath stringenen_USen_GB
是 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets' const res = await fetch ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run/datasets' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/freedictionaryapi/v1/entries/{language}/{word}/datasets freedictionaryapi.com responses from every open dataset
One group per installed dataset with its terms, status 200 and the adapter object in response. Exact spelling; en and all read English. Missing words and other languages have empty response.entries. The outer request returns 200 even when no dataset matches. Does not activate any dataset. One public rate-limit unit; cached across all datasets. Empty source links point here rather than active-only /meta.
参数 名称 位置 类型 必填 描述 languagepath string是 en or all; other values return empty entries wordpath string是 Exact case-sensitive spelling, encoded as one URL segment prettyquery boolean否 Indent the whole response with two spaces; default false. translationsquery boolean否 Include supported translations; default false. Only true/false, first occurrence wins.
响应 200 OK — FreeDictionaryDatasetsResT 400 Invalid input: an unknown field, a value outside the allowed set, or a foreign cursor 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets' const res = await fetch ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run/datasets' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/dictionaryapi/v2/entries/{language}/{word} dictionaryapi.dev v2 lookup in the active dataset
Array response, with lossless provenance in vocabBloom. English only; native headword and inflection resolution. No dataset query parameter.
参数 名称 位置 类型 必填 描述 languagepath stringenen_USen_GB
是 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run' const res = await fetch ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/dictionaryapi/v2/entries/en/run' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/dictionaryapi/v1/entries/{language}/{word} dictionaryapi.dev legacy v1 lookup in the active dataset
Same entries and terms as v2, with a meaning object keyed by part of speech instead of meanings. English only.
参数 名称 位置 类型 必填 描述 languagepath stringenen_USen_GB
是 wordpath string是 Headword spelling, case-insensitive (spaces URL-encoded for phrases). An inflected form resolves to its base entry
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run' const res = await fetch ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/dictionaryapi/v1/entries/en/run' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/freedictionaryapi/v1/entries/{language}/{word} freedictionaryapi.com lookup in the active dataset
Exact spelling. en and all read the English database; other languages and missing spellings return empty entries. Full terms in vocabBloom.
参数 名称 位置 类型 必填 描述 languagepath string是 en or all; other values return empty entries wordpath string是 Exact case-sensitive spelling, encoded as one URL segment prettyquery boolean否 Indent JSON with two spaces; default false. translationsquery boolean否 Include supported translations; default false. Only true/false, first occurrence wins.
响应 200 OK — FreeDictionaryEntriesResT 400 Invalid input: an unknown field, a value outside the allowed set, or a foreign cursor 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run' const res = await fetch ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/freedictionaryapi/v1/entries/example/run' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/compat/freedictionaryapi/v1/languages Available headword languages and readable spelling counts
English only. Counts include phrases, inflections and alternative-only entry rows in the active dataset, once per readable spelling; unlinked placeholders are excluded.
参数 名称 位置 类型 必填 描述 prettyquery boolean否 Indent JSON with two spaces; default false.
响应 200 OK — FreeDictionaryLanguagesResT 400 Invalid input: an unknown field, a value outside the allowed set, or a foreign cursor 429 Rate limit of the public prefix exceeded (PUBLIC_API_RATE_LIMIT); retry after the window 示例 curl JavaScript Python Go PHP Rust Java Ruby
curl 'https://your-instance.example/api/compat/freedictionaryapi/v1/languages' const res = await fetch ('https://your-instance.example/api/compat/freedictionaryapi/v1/languages' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/compat/freedictionaryapi/v1/languages" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/compat/freedictionaryapi/v1/languages" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/compat/freedictionaryapi/v1/languages' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/compat/freedictionaryapi/v1/languages"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/compat/freedictionaryapi/v1/languages" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/compat/freedictionaryapi/v1/languages' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)在演练场中试用
GET /api/v1/search/datasets Search up to five public datasets, in separate groups
Repeat datasets for each target (1–5 unique names). Groups follow installation order. The detailed search filters, limit (1–20) and page (1–20) apply independently to every group. Relevance scores are local to each dataset. Empty matches have status ok and an empty data array; failed readers have status unavailable and no results/pagination. Unknown or closed targets reject the entire request with 404. Partial failures return 200 with meta.partial and Cache-Control: no-store. Each selected dataset costs one unit of the shared public rate budget, including failed reads. Selected searches revalidate their ETag on every use.
参数 名称 位置 类型 必填 描述 searchquery string是 The term to search for typequery stringwordgrammar_patternphrase
否 Restrict the answer to one entry type limitquery integer否 默认值: 10
pagequery integer否 默认值: 1
with_meaningsquery boolean否 Join the meanings (with translations, synonyms, antonyms) of every item默认值: false
with_translationsquery boolean否 Join the short translations of every item默认值: false
translation_languagesquery string[]ruesfrdeptzhar
否 Keep only these translation languages (a repeated key); omit the key for all of them datasetsquery string[]是 Public dataset names as repeated keys. Groups follow installation order. Each selected dataset costs one unit of the shared public rate budget.
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/search/datasets?search=run&datasets=default' const res = await fetch ('https://your-instance.example/api/v1/search/datasets?search=run&datasets=default' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/search/datasets?search=run&datasets=default" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/search/datasets?search=run&datasets=default" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/search/datasets?search=run&datasets=default' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/search/datasets?search=run&datasets=default"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/search/datasets?search=run&datasets=default" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/search/datasets?search=run&datasets=default' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.searchDatasets ({ search : 'run' , datasets : ['default' ] });
for (const group of data) {
if (group.status === 'ok' ) console .log (group.dataset , group.data , group.meta .has_more );
else console .log (group.dataset , group.error );
}from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
from vocab_bloom_hub import SearchDatasetResult
answer = client.search_datasets("run" , ["default" ])
for group in answer.data:
if isinstance (group, SearchDatasetResult):
print (group.dataset, group.data, group.meta.has_more)
else :
print (group.dataset, group.error)在演练场中试用
GET /api/v1/datasets Publicly readable datasets and their terms, in installation order
参数 无参数。
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl 'https://your-instance.example/api/v1/datasets' const res = await fetch ('https://your-instance.example/api/v1/datasets' );
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.get("https://your-instance.example/api/v1/datasets" )
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
)
resp, err := http.Get("https://your-instance.example/api/v1/datasets" )
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/datasets' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let answer : Value = client
.get (r#"https://your-instance.example/api/v1/datasets"# )
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/datasets" ))
.GET()
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/datasets' )
request = Net::HTTP::Get .new(uri)
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.datasets ();
console .log (data.map (dataset => dataset.dataset ));from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.datasets()
print ([dataset.dataset for dataset in answer.data])在演练场中试用
POST /api/v1/words/batch Up to 50 headwords in one request
Every spelling is matched like `GET /words/{word}`; the answer keeps the request order, collapses duplicates, and lists the spellings without an entry under `meta.not_found` instead of failing. One request against the rate limit, whatever the size of the batch.
名称 类型 必填 描述 wordsstring[]是 Headword spellings, 50 at most, each matched like GET /words/{word} (case-insensitively; an inflected form resolves to its base entry)
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl -X POST 'https://your-instance.example/api/v1/words/batch' \
-H 'Content-Type: application/json' \
-d '{"words":["run","walk","nonexistentword"]}' const res = await fetch ('https://your-instance.example/api/v1/words/batch' , {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' },
body : JSON .stringify ({
words : ['run' , 'walk' , 'nonexistentword' ]
}),
});
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.post("https://your-instance.example/api/v1/words/batch" , json={
"words" : ["run" , "walk" , "nonexistentword" ]
})
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
"strings"
)
resp, err := http.Post("https://your-instance.example/api/v1/words/batch" , "application/json" , strings.NewReader(`{"words":["run","walk","nonexistentword"]}` ))
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/words/batch' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_CUSTOMREQUEST => 'POST' ,
CURLOPT_HTTPHEADER => ['Content-Type: application/json' ],
CURLOPT_POSTFIELDS => json_encode ([
'words' => ['run' , 'walk' , 'nonexistentword' ]
]),
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let body : Value = serde_json::from_str (r#"{"words":["run","walk","nonexistentword"]}"# )?;
let answer : Value = client
.post (r#"https://your-instance.example/api/v1/words/batch"# )
.json (&body)
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/words/batch" ))
.header("Content-Type" , "application/json" )
.POST(HttpRequest.BodyPublishers.ofString("{\"words\":[\"run\",\"walk\",\"nonexistentword\"]}" ))
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/words/batch' )
request = Net::HTTP::Post .new(uri)
request['Content-Type' ] = 'application/json'
request.body = JSON .generate({
'words' => ['run' , 'walk' , 'nonexistentword' ]
})
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data, meta } = await client.wordsBatch (['run' , 'walk' , 'nonexistentword' ]);
console .log (data.map ((item ) => item.word ), meta.not_found );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.words_batch(["run" , "walk" , "nonexistentword" ])
print ([item.word for item in answer.data], answer.meta.not_found)在演练场中试用
POST /api/v1/suggestions Report a mistake in the dictionary data
Files a report for the instance admin to review: what is wrong with a headword (optionally one specific entry of it) and, ideally, what would be right. The headword must exist in the selected publicly open dataset. Pass dataset to target a viewed dataset; omitted means the active dataset. All IDs must belong to that dataset and headword. Closed, unknown or removed targets answer 404 without fallback. Rate limits are shared across datasets; a full target queue answers 503.
名称 类型 必填 描述 datasetstring否 Installed, publicly open dataset containing the headword and all supplied IDs. Omit to use the active dataset. headwordstring是 The headword the report is about; must exist in the dictionary word_idobject否 Id of the entry (part of speech) the report points at, from the word answers kindstringreportedit
否 默认值: "report"
messageobject否 What is wrong and, ideally, what would be right. Required for a report; an optional comment on an edit editsSuggestionEditV1DTO[] 否 Edit flow: every touched target of the word form with its proposed values author_nameobject否 The name the sender wants to be credited by (issue #531). Kept only together with `author_consent: true`: once the correction is applied the name is shown next to it and travels with the copies of the data author_consentobject否 The sender agrees that `author_name` is shown and exported; required when a name is given
响应 示例 curl JavaScript Python Go PHP Rust Java Ruby Node.js SDK Python SDK
curl -X POST 'https://your-instance.example/api/v1/suggestions' \
-H 'Content-Type: application/json' \
-d '{"headword":"run","message":"Please check the definition of this word."}' const res = await fetch ('https://your-instance.example/api/v1/suggestions' , {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' },
body : JSON .stringify ({
headword : 'run' ,
message : 'Please check the definition of this word.'
}),
});
if (!res.ok ) throw new Error (`HTTP ${res.status} ` );
const answer = await res.json ();import requests
res = requests.post("https://your-instance.example/api/v1/suggestions" , json={
"headword" : "run" ,
"message" : "Please check the definition of this word."
})
res.raise_for_status()
answer = res.json()import (
"encoding/json"
"log"
"net/http"
"strings"
)
resp, err := http.Post("https://your-instance.example/api/v1/suggestions" , "application/json" , strings.NewReader(`{"headword":"run","message":"Please check the definition of this word."}` ))
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var answer map [string ]any
if err := json.NewDecoder(resp.Body).Decode(&answer); err != nil {
log.Fatal(err)
}$ch = curl_init ('https://your-instance.example/api/v1/suggestions' );
curl_setopt_array ($ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_CUSTOMREQUEST => 'POST' ,
CURLOPT_HTTPHEADER => ['Content-Type: application/json' ],
CURLOPT_POSTFIELDS => json_encode ([
'headword' => 'run' ,
'message' => 'Please check the definition of this word.'
]),
]);
$answer = json_decode (curl_exec ($ch ), true );
curl_close ($ch );
use reqwest::blocking::Client;
use serde_json::Value;
fn main () -> Result <(), Box <dyn std::error::Error>> {
let client = Client::new ();
let body : Value = serde_json::from_str (r#"{"headword":"run","message":"Please check the definition of this word."}"# )?;
let answer : Value = client
.post (r#"https://your-instance.example/api/v1/suggestions"# )
.json (&body)
.send ()?
.error_for_status ()?
.json ()?;
println! ("{answer}" );
Ok (())
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main (String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://your-instance.example/api/v1/suggestions" ))
.header("Content-Type" , "application/json" )
.POST(HttpRequest.BodyPublishers.ofString("{\"headword\":\"run\",\"message\":\"Please check the definition of this word.\"}" ))
.build();
HttpResponse <String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}require 'net/http'
require 'json'
uri = URI ('https://your-instance.example/api/v1/suggestions' )
request = Net::HTTP::Post .new(uri)
request['Content-Type' ] = 'application/json'
request.body = JSON .generate({
'headword' => 'run' ,
'message' => 'Please check the definition of this word.'
})
response = Net ::HTTP .start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https' ) do |http |
http.request(request)
end
response.value
answer = JSON .parse(response.body)
puts JSON .pretty_generate(answer)import { VocabBloomClient } from '@vocab-bloom-hub/client' ;
const client = new VocabBloomClient ({ baseUrl : 'https://your-instance.example' });
const { data } = await client.suggest ({
headword : 'run' ,
message : 'Please check the definition of this word.'
});
console .log (data.id , data.status );from vocab_bloom_hub import VocabBloomClient
client = VocabBloomClient("https://your-instance.example" )
answer = client.suggest(**{
"headword" : "run" ,
"message" : "Please check the definition of this word."
})
print (answer.data.id , answer.data.status)在演练场中试用
模式 SuggestionEditV1DTO 名称 类型 必填 描述 target_typestringwordmeaningmeaning_translationshort_translation
是 target_idnumber是 Id of the targeted row, from the word answers changesobject是 The proposed field values, e.g. { "definition": "…" }. The accepted fields depend on target_type; unknown fields, empty values and values equal to the current ones are rejected
CreateSuggestionV1ReqDTO 名称 类型 必填 描述 datasetstring否 Installed, publicly open dataset containing the headword and all supplied IDs. Omit to use the active dataset. headwordstring是 The headword the report is about; must exist in the dictionary word_idobject否 Id of the entry (part of speech) the report points at, from the word answers kindstringreportedit
否 默认值: "report"
messageobject否 What is wrong and, ideally, what would be right. Required for a report; an optional comment on an edit editsSuggestionEditV1DTO[] 否 Edit flow: every touched target of the word form with its proposed values author_nameobject否 The name the sender wants to be credited by (issue #531). Kept only together with `author_consent: true`: once the correction is applied the name is shown next to it and travels with the copies of the data author_consentobject否 The sender agrees that `author_name` is shown and exported; required when a name is given
WordsBatchV1ReqDTO 名称 类型 必填 描述 wordsstring[]是 Headword spellings, 50 at most, each matched like GET /words/{word} (case-insensitively; an inflected form resolves to its base entry)
OriginT 名称 类型 必填 描述 idstring是 namestring是 versionstring | null是 urlstring否 record_urlstring否 licensesOriginLicenseT[] 是 license_relationstringallany
是 All obligations apply, or the source explicitly offers a choice. attributionstring是 noticesstring[]是 scopestringworddataset
是 Dataset means that distribution between individual words is unknown. methodstringdatasetmanual
是 recorded_atstring | null是 acquisitionsOriginAcquisitionT[] 否 Copy/fork events belonging to this source snapshot; absent before any acquisition. inheritedboolean是 Automatically inherited terms cannot be removed by ordinary editing.
OriginLicenseT A durable statement of terms, not a pointer to a mutable dataset registry.
名称 类型 必填 描述 spdxstring否 namestring是 urlstring是 textstring否 Required for custom licenses; preserved verbatim when supplied.
OriginAcquisitionT An acquisition of a source snapshot, without repeating its license terms.
名称 类型 必填 描述 idstring是 methodstringcopyfork
是 recorded_atstring | null是 revisionstring否 viaobject否 The intermediate dataset the material passed through; this adds no license obligations.
WordLicenseT One license can occur more than once; origin_id refers to origins or contributions.
名称 类型 必填 描述 origin_idstring是 spdxstring否 namestring是 urlstring是 textstring否 Required for custom licenses; preserved verbatim when supplied.
EnPartOfSpeechE 取值之一: noun, verb, modal_verb, adjective, adverb, pronoun, numeral, numeral_fractional, determiner, interjection, article, preposition, conjunction, letter, phrase, grammar_pattern
WordLevelE 取值之一: A1, A2, B1, B2, C1, C2
EnAreaVariantsE 取值之一: common, british, american, australian
CategoryE 取值之一: scientific, technical, medical, legal, business, IT, art, political, sport, culinary
LanguageRegisterE 取值之一: formal, informal, slang
PronunciationT Portable pronunciation; database IDs never travel in datasets or public responses.
名称 类型 必填 描述 audioPronunciationAudioT[] 否 Recordings carry their own terms, independent of the word's text. typestringipaenpr
是 textstring | null是 area_variantEnAreaVariantsE 是 sort_orderinteger是
PronunciationAudioT External recordings only; missing license metadata is an empty list, never the text license.
名称 类型 必填 描述 urlstring是 source_urlstring | null否 attributionstring | null否 licensesOriginLicenseT[] 是 sort_orderinteger是
EnVerbTransitivityE 取值之一: transitive, intransitive, both
EnPhrasalObjectPatternE 取值之一: no_object, inseparable, separable, separable_pronoun_only
PublicSearchDetailedV1ResT MeaningQuoteT A sourced quotation, in authored array order. Missing attribution is explicit.
名称 类型 必填 描述 textstring是 referencestring | null是 source_urlstring | null否
PublicWordV1MeaningTranslationT AvailableTranslationLanguagesE 取值之一: ru, es, fr, de, pt, zh, ar
PublicWordV1ShortTranslationT PublicHeadwordMeaningsV1ResT PublicShortTranslationV1T PublicMeaningTranslationV1T PublicHeadwordLinksV1ResT ChangeEntityE What was edited
取值之一: word, word_form, meaning, meaning_translation, short_translation
ChangeActionE 取值之一: create, update, delete
ChangeRecordT The record of an entry an edit is about, by what it says rather than by its id: ids change when a dataset is updated and differ between instances. Null for the word itself — the headword and the part of speech name it.
ChangeMeaningRecordT 名称 类型 必填 描述 titlestring是 sort_orderinteger是
ChangeShortTranslationRecordT 名称 类型 必填 描述 languagestring是 descriptionstring是
ChangeDiffT The values an edit changed: `{ field: { before, after } }`; a creation has no `before`, a deletion no `after`
ChangeOriginE Where an edit came from
取值之一: admin, suggestion, revert
PublicHeadwordHistoryV1MetaT 名称 类型 必填 描述 wordstring是 countinteger是 variantsstring[]否
PublicHeadwordHistoryV1ResT PublicDatasetTermsV1T 名称 类型 必填 描述 originsOriginT[] 否 licensesWordLicenseT[] 否 descriptionstring | null否 datasetstring是 titlestring否 activeboolean是 sourcestring是 dataset_versionstring | null是 licensestring是 license_urlstring是 attributionstring是 attribution_urlstring | null是 noticestring是 license_textstring是
PublicWordDatasetV1T 名称 类型 必填 描述 wordstring是 variantsstring[]是 countinteger是 entriesPublicWordV1T[] 是 originsOriginT[] 否 licensesWordLicenseT[] 否 descriptionstring | null否 datasetstring是 titlestring否 activeboolean是 sourcestring是 dataset_versionstring | null是 licensestring是 license_urlstring是 attributionstring是 attribution_urlstring | null是 noticestring是 license_textstring是
PublicHeadwordTranslationsV1T PublicHeadwordTranslationsV1ResT PublicDatasetCountsV1T 名称 类型 必填 描述 entriesinteger是 wordsinteger是 phrasesinteger是 grammar_patternsinteger是 word_formsinteger是 meaningsinteger是 meaning_translationsinteger是 short_translationsinteger是
PublicAvailableLanguagesV1T PublicSuggestionCreatedV1T 名称 类型 必填 描述 idinteger是 statusstring是
PublicSuggestionCreatedV1ResT PublicApiErrorT 名称 类型 必填 描述 statusCodenumber是 messagestring是 errorboolean是
DictionaryApiV1DatasetsResT 名称 类型 必填 描述 dataobject[]是 metaobject是 found counts datasets with entries, including for adapters whose misses are HTTP 200.
DictionaryApiDefinitionT 名称 类型 必填 描述 definitionstring是 examplestring否 synonymsstring[]是 antonymsstring[]是
DictionaryApiPhoneticT 名称 类型 必填 描述 textstring否 audiostring是 sourceUrlstring否 licenseDictionaryApiLicenseT 否 vocabBloomobject否 Lossless recording terms; the upstream singular license cannot express all of these.
DictionaryApiLicenseT 名称 类型 必填 描述 namestring是 urlstring是
DictionaryApiErrorT 名称 类型 必填 描述 titlestring是 messagestring是 resolutionstring是
DictionaryApiV2DatasetsResT 名称 类型 必填 描述 dataobject[]是 metaobject是 found counts datasets with entries, including for adapters whose misses are HTTP 200.
FreeDictionaryDatasetsResT 名称 类型 必填 描述 dataobject[]是 metaobject是 found counts datasets with entries, including for adapters whose misses are HTTP 200.
FreeDictionaryEntriesResT FreeDictionaryEntryT 名称 类型 必填 描述 languageFreeDictionaryLanguageT 是 partOfSpeechstring是 pronunciationsobject[]是 formsobject[]是 sensesFreeDictionarySenseT[] 是 synonymsstring[]是 antonymsstring[]是 vocabBloomobject是 Native entry identity and lossless terms; additive to the upstream format.
FreeDictionaryLanguageT 名称 类型 必填 描述 codestring是 namestring是
FreeDictionarySenseT 名称 类型 必填 描述 definitionstring是 tagsstring[]是 examplesstring[]是 quotesobject[]是 synonymsstring[]是 antonymsstring[]是 translationsobject[]否 subsensesFreeDictionarySenseT[] 是
FreeDictionaryErrorT Upstream parameter errors are plain text, not the native error envelope.
FreeDictionaryLanguagesResT PublicDatasetsV1ResT Public selector inventory, in installation order; no dictionary connections or counts.
PublicSearchDatasetResultV1T 名称 类型 必填 描述 statusstringok
是 dataPublicWordV1T[] 是 metaPublicSearchDetailedV1MetaT 是 originsOriginT[] 否 licensesWordLicenseT[] 否 descriptionstring | null否 datasetstring是 titlestring否 activeboolean是 sourcestring是 dataset_versionstring | null是 licensestring是 license_urlstring是 attributionstring是 attribution_urlstring | null是 noticestring是 license_textstring是
PublicSearchDatasetUnavailableV1T A failed reader has no result list or paging metadata; it is not an empty match.
名称 类型 必填 描述 statusstringunavailable
是 errorstringdataset_unavailable
是 originsOriginT[] 否 licensesWordLicenseT[] 否 descriptionstring | null否 datasetstring是 titlestring否 activeboolean是 sourcestring是 dataset_versionstring | null是 licensestring是 license_urlstring是 attributionstring是 attribution_urlstring | null是 noticestring是 license_textstring是
PublicSearchDatasetsV1ResT PublicSemanticMatchV1T A matching existing sense, with cosine similarity (not a confidence probability).
名称 类型 必填 描述 wordPublicSearchWordV1T 是 meaningobject是 scorenumber是 Cosine similarity from -1 to 1; no calibrated no-answer threshold.
PublicSemanticSearchV1ResT PublicSemanticStatusV1ResT