// getting started

Get started with Ohita

One unified API for GitHub, Hacker News, YouTube, and more. Pick the path that suits you — run a ready-made notebook in seconds, or follow the full setup guide.

// choose your path

// quick-start notebooks

Pick your LLM, open the notebook in Google Colab, and run every cell. You'll have a working Ohita integration before your coffee gets cold. Each notebook walks you through sign-up, getting an API key, and making real calls — all in one place.

Each notebook uses LangChain + Ohita. You only need a free Ohita API key and a provider key for the LLM you choose.

or follow the full guide

What you'll need

1
An email address

To create your free account.

2
A way to make HTTP requests

A terminal, a browser, Python, JavaScript — anything that can call a URL.

That's it. No credit card, no app registration needed for most services. The free plan includes 2,500 requests/month — see pricing for higher limits. For Reddit, X/Twitter, Slack, and Brave, you'll also need your own API credentials — see the optional BYOK step below.

01

Create your free account

Head to the sign-up page and create an account with your email and a password.

02

Get your API key

Once you're logged in, go to your dashboard and click "Generate new key". You'll get a key that looks like this:

ok_live_7x2mK9f3pQ8nL...

Copy it and save it somewhere safe. This single key gives you access to most services Ohita supports — GitHub, Hacker News, YouTube, GNews, Dev.to, Weather, Wikipedia, ArXiv, CoinGecko, Finnhub, Stack Exchange, Search (Tavily), and more. For Reddit, X/Twitter, Slack, and Brave, you'll need to store your own credentials first.

03

Make your first API call

Now the fun part. Pick any example below, replace ok_live_YOUR_KEY with your actual key, and run it.

terminal
# Get the top stories from Hacker News
$ curl https://api.ohita.tech/v1/hackernews/top \
-H "Authorization: Bearer ok_live_YOUR_KEY"
# That's it. You'll get back:
{
  "ok": true,
  "data": {
    "stories": [
      {"title": "Show HN: ...", "score": 342, "url": "..."},
      ...
    ]
  }
}
main.py
import json
from urllib.request import Request, urlopen
 
request = Request(
"https://api.ohita.tech/v1/hackernews/top",
headers={"Authorization": "Bearer ok_live_YOUR_KEY"}
)
with urlopen(request) as response:
payload = json.load(response)
 
stories = payload["data"]["stories"]
for story in stories:
print(story["title"])
app.js
(async () => {
const response = await fetch(
"https://api.ohita.tech/v1/hackernews/top",
{ headers: { "Authorization": "Bearer ok_live_YOUR_KEY" } }
);
 
const { data } = await response.json();
console.log(data.stories);
})();
That's it!

You just pulled live data from Hacker News through Ohita. The same key works for every other service too.

Try more services with the same key

Just swap the endpoint. No extra setup needed.

GitHub — trending repos
GET /v1/github/trending
YouTube — search videos
GET /v1/youtube/search?q=AI%20agents
GNews — top headlines
GET /v1/gnews/top-headlines?topic=technology
Dev.to — latest articles
GET /v1/devto/articles?tag=python
Hacker News — search
GET /v1/hackernews/search?q=LLM%20tools
Reddit — hot posts (BYOK)
GET /v1/reddit/r/programming/hot
Slack — list channels (BYOK)
GET /v1/slack/channels
Weather — current conditions
GET /v1/weather/current?city=London
Weather — 5-day forecast
GET /v1/weather/forecast?city=London&units=metric&limit=8
Wikipedia — article summary
GET /v1/wikipedia/summary?title=Artificial%20intelligence
ArXiv — search papers
GET /v1/arxiv/search?query=large%20language%20models
CoinGecko — crypto prices
GET /v1/coingecko/price?ids=bitcoin,ethereum&vs_currencies=usd
Finnhub — stock quote
GET /v1/finnhub/quote?symbol=AAPL
Stack Exchange — search questions
GET /v1/stackexchange/search?query=fastapi%20authentication
Search (Tavily) — web search
GET /v1/search/search?query=best%20AI%20frameworks%202026
Brave — web search (BYOK)
GET /v1/brave/search?query=AI%20agents
GitHub — repo details
GET /v1/github/repos/facebook/react

Every call follows the same pattern: https://api.ohita.tech + the endpoint + your API key in the header. Reddit, X/Twitter, Slack, and Brave require you to store your own credentials first — see the BYOK step above.

04

Optional: bring your own keys (BYOK)

Most services work out of the box. But if you want to use Reddit, X/Twitter, Slack, or Brave Search, or if you prefer to use your own quotas for any provider, you can store your own credentials. Ohita encrypts them at rest and uses them automatically on your requests.

terminal
# Store your own GitHub Personal Access Token
$ curl -X POST https://api.ohita.tech/v1/credentials/github \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{"credentials": {"personal_access_token": "ghp_..."}}'
# Now your GitHub requests use your own token and quota.
# Supported: github, youtube, gnews, devto, reddit, twitter, slack, weather, brave, search, coingecko, finnhub, stackexchange, wikipedia, arxiv

You can test a credential before storing it:

terminal
$ curl -X POST https://api.ohita.tech/v1/credentials/github/test \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{"credentials": {"personal_access_token": "ghp_..."}}'
{"valid": true, "detail": "Token is valid"}

Works with any LLM or agent framework

Ohita is just a REST API. If your tool can make HTTP requests, it works with Ohita. No SDK required, no plugins to install.

LLMs GPT-4o, Claude, Gemini, Llama, Mistral, Grok, DeepSeek, local models
Frameworks LangChain, CrewAI, AutoGen, OpenAI Agents SDK, LlamaIndex, Haystack
Languages Python, JavaScript, TypeScript, Go, Rust, Ruby, Java — anything with HTTP
agent integrations

// integrate with AI agents

Ohita is a plain REST API, so any agent framework can call it. Below are copy-paste examples for LangChain and CrewAI — or, if your agent already knows how to make HTTP calls, just point it at the docs.

💡
Zero-code shortcut.

Many AI agents (ChatGPT, Claude, Cursor, Windsurf, coding copilots) can make HTTP requests on their own. Just tell them: "Use the Ohita API at https://api.ohita.tech/v1. Docs are at https://api.ohita.tech/docs. My API key is ok_live_... — pass it as a Bearer token." That's enough for the agent to discover every endpoint and start calling them — no wrapper code needed.

Install dependencies:

terminal
$ pip install langchain langchain-openai requests

Define Ohita endpoints as tools and run an agent:

agent.py
from langchain.tools import tool
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
import requests
 
OHITA_KEY = "ok_live_YOUR_KEY"
BASE = "https://api.ohita.tech/v1"
HEADERS = {"Authorization": f"Bearer {OHITA_KEY}"}
 
@tool
def hackernews_top(limit: int = 5) -> str:
"""Get top stories from Hacker News."""
r = requests.get(f"{BASE}/hackernews/top", headers=HEADERS, params={"limit": limit})
return r.text
 
@tool
def github_trending() -> str:
"""Get trending GitHub repositories."""
r = requests.get(f"{BASE}/github/trending", headers=HEADERS)
return r.text
 
llm = ChatOpenAI(model="gpt-4o")
tools = [hackernews_top, github_trending]
 
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant with access to developer news tools."),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
])
 
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)
 
result = executor.invoke({"input": "What's trending in tech today?"})
print(result["output"])

Swap ChatOpenAI for ChatAnthropic or ChatGoogleGenerativeAI to use a different LLM — the Ohita tools stay the same.

Install dependencies:

terminal
$ pip install crewai requests

Create tools, an agent, and kick off a crew:

crew.py
from crewai import Agent, Task, Crew
from crewai.tools import tool
import requests
 
OHITA_KEY = "ok_live_YOUR_KEY"
BASE = "https://api.ohita.tech/v1"
HEADERS = {"Authorization": f"Bearer {OHITA_KEY}"}
 
@tool
def hackernews_top(limit: int = 5) -> str:
"""Get top stories from Hacker News."""
r = requests.get(f"{BASE}/hackernews/top", headers=HEADERS, params={"limit": limit})
return r.text
 
@tool
def github_trending() -> str:
"""Get trending GitHub repositories."""
r = requests.get(f"{BASE}/github/trending", headers=HEADERS)
return r.text
 
researcher = Agent(
role="Tech Researcher",
goal="Find the latest trending topics in tech",
backstory="You track developer communities and open source projects.",
tools=[hackernews_top, github_trending],
)
 
task = Task(
description="Find what's trending in tech today using Hacker News and GitHub.",
expected_output="A summary of the top trending topics and repos.",
agent=researcher,
)
 
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
print(result)

CrewAI uses OpenAI by default. Set OPENAI_API_KEY in your environment, or pass a custom LLM to the Agent constructor.

Same pattern, any framework.

Wrap any Ohita endpoint in a tool function with a docstring — the agent handles the rest. Add more tools for YouTube, Reddit, GNews, Dev.to, Wikipedia, CoinGecko, Finnhub, or any other Ohita endpoint. Or skip the code entirely and just give your agent the API docs URL.

What's next?

// ready?
Start building now.

Free account. One API key. Most services instantly, the rest with your own credentials.

Create free account →