Skip to content

Suggest Topics ​

Send the beginning of a topic name to /v1/suggest/topics. Use the returned id in the topic.id filter, or show the matches as suggestions in a search box.

Sign up at APITube to get your API key. Include it with every API request.

Endpoint ​

GET /v1/suggest/topics

The response lists topics whose names start with your text.

Query Parameters ​

ParameterTypeRequiredDescription
prefixstringYesThe name prefix to search for. Minimum 1 character.
api_keystringYes*Your API key. Can also be provided via headers.

* Required if not provided in headers

Response Format ​

The response is an array of topics:

json
[
  {
    "id": "string",
    "name": "string",
    "links": {
      "self": "string"
    }
  }
]

Response Fields ​

FieldTypeDescription
idstringTopic ID, such as industry.aerospace_news. Pass it to the topic.id filter.
namestringTopic name
links.selfstringURL to get news articles on this topic (/v1/news/topic/{id})

Request Examples ​

Using query parameter ​

bash
curl "https://api.apitube.io/v1/suggest/topics?prefix=election&api_key=YOUR_API_KEY"
python
import requests

resp = requests.get(
    "https://api.apitube.io/v1/suggest/topics",
    params={"prefix": "election", "api_key": "YOUR_API_KEY"},
)
print(resp.json())
javascript
const params = new URLSearchParams({ prefix: "election", api_key: "YOUR_API_KEY" });
const resp = await fetch(`https://api.apitube.io/v1/suggest/topics?${params}`);
console.log(await resp.json());
php
$query = http_build_query(["prefix" => "election", "api_key" => "YOUR_API_KEY"]);
$data = json_decode(file_get_contents("https://api.apitube.io/v1/suggest/topics?$query"), true);
print_r($data);
go
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	u, _ := url.Parse("https://api.apitube.io/v1/suggest/topics")
	q := u.Query()
	q.Set("prefix", "election")
	q.Set("api_key", "YOUR_API_KEY")
	u.RawQuery = q.Encode()

	resp, _ := http.Get(u.String())
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var data map[string]any
	json.Unmarshal(body, &data)
	fmt.Println(data)
}
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.apitube.io/v1/suggest/topics?prefix=election&api_key=YOUR_API_KEY"))
            .GET()
            .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
text
Write a script in your preferred language that calls the APITube News API:

GET https://api.apitube.io/v1/suggest/topics?prefix=election

Read the API key from an environment variable (do not hardcode it), handle request
errors, and print the key fields of each result.
Docs: https://docs.apitube.io/platform/news-api/everything

Using header authentication ​

shell
curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.apitube.io/v1/suggest/topics?prefix=climate"

Using Bearer token ​

shell
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.apitube.io/v1/suggest/topics?prefix=crypto"

Response Example ​

json
[
  {
    "id": "industry.crypto_news",
    "name": "Crypto Industry News",
    "links": {
      "self": "https://api.apitube.io/v1/news/topic/industry.crypto_news"
    }
  }
]

Error Responses ​

Missing or Invalid API Key ​

json
{
  "errors": [
    {
      "code": "ER0201",
      "message": "API key is required. Provide it via X-API-Key header or api_key query parameter."
    }
  ]
}

Status Code: 401

Missing Prefix Parameter ​

json
{
  "errors": [
    {
      "code": "ER0346",
      "message": "`Prefix` in query required."
    }
  ]
}

Status Code: 400