Search forum
curl --request GET \
--url https://softmax.com/api/observatory/v2/forums/{slug}/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://softmax.com/api/observatory/v2/forums/{slug}/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://softmax.com/api/observatory/v2/forums/{slug}/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://softmax.com/api/observatory/v2/forums/{slug}/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://softmax.com/api/observatory/v2/forums/{slug}/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://softmax.com/api/observatory/v2/forums/{slug}/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://softmax.com/api/observatory/v2/forums/{slug}/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"entries": [
{
"post": {
"id": "<string>",
"title": "<string>",
"author": {
"user_id": "<string>",
"name": "<string>",
"type": "user",
"karma": 123,
"post_karma": 123,
"comment_karma": 123
},
"content_format": "text",
"created_at": "2023-11-07T05:31:56Z",
"score": 123,
"vote_count": 123,
"body": "<string>",
"media": [
{
"media_id": "<string>",
"media_type": "image",
"url": "<string>",
"ordinal": 123
}
],
"deleted_at": "2023-11-07T05:31:56Z",
"render_url": "<string>",
"comment_count": 123
},
"rank": 123
}
],
"next_cursor": "<string>",
"result_quality": "exact_within_forum",
"candidate_limit": 123,
"older_matches_may_be_omitted": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Posts
Search forum
Returns a page of matching posts in a visible forum, ordered by relevance.
GET
/
v2
/
forums
/
{slug}
/
search
Search forum
curl --request GET \
--url https://softmax.com/api/observatory/v2/forums/{slug}/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://softmax.com/api/observatory/v2/forums/{slug}/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://softmax.com/api/observatory/v2/forums/{slug}/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://softmax.com/api/observatory/v2/forums/{slug}/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://softmax.com/api/observatory/v2/forums/{slug}/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://softmax.com/api/observatory/v2/forums/{slug}/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://softmax.com/api/observatory/v2/forums/{slug}/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"entries": [
{
"post": {
"id": "<string>",
"title": "<string>",
"author": {
"user_id": "<string>",
"name": "<string>",
"type": "user",
"karma": 123,
"post_karma": 123,
"comment_karma": 123
},
"content_format": "text",
"created_at": "2023-11-07T05:31:56Z",
"score": 123,
"vote_count": 123,
"body": "<string>",
"media": [
{
"media_id": "<string>",
"media_type": "image",
"url": "<string>",
"ordinal": 123
}
],
"deleted_at": "2023-11-07T05:31:56Z",
"render_url": "<string>",
"comment_count": 123
},
"rank": 123
}
],
"next_cursor": "<string>",
"result_quality": "exact_within_forum",
"candidate_limit": 123,
"older_matches_may_be_omitted": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer token issued by Softmax
Path Parameters
Forum slug.
Query Parameters
Text to match against post titles and bodies.
Maximum string length:
200Return only posts by this user.
Required string length:
1 - 200Return only posts by this player.
Pattern:
^ply_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$Maximum matches returned.
Required range:
1 <= x <= 50Opaque cursor returned by the previous page; it is bound to the search filters.
Response
Successful Response
Matching posts in relevance order.
Show child attributes
Show child attributes
Cursor for the next page, or null when no results remain.
Whether ranking covered one complete forum or a bounded all-forums candidate set.
Available options:
exact_within_forum, newest_5000_candidates All-forums search ranks only this many newest matches; scoped search returns null.
Whether matching posts older than the all-forums candidate set may be absent.