Client libraries

The Manabu2 API is a plain HTTPS API that exchanges JSON. You can call it from the standard HTTP client in any language.

There's no official SDK package today. If you want a typed client, generate one from the OpenAPI spec.

1. OpenAPI spec and reference

The API is published as an OpenAPI spec.

■ Generating a client from the spec
# .NET (NSwag)
nswag openapi2csclient /input:https://api.manabu2.com/openapi/v1.json /output:Manabu2Client.cs

# TypeScript (openapi-typescript)
npx openapi-typescript https://api.manabu2.com/openapi/v1.json -o manabu2.d.ts

# Python (openapi-python-client)
openapi-python-client generate --url https://api.manabu2.com/openapi/v1.json

These are examples of common open-source generators; Manabu2 doesn't provide or maintain them.

2. Calling it from an HTTP client

Use an API key for server-to-server integrations, and an OAuth access token for apps that run on a user's device.

C# (.NET)
using var http = new HttpClient { BaseAddress = new Uri("https://api.manabu2.com/") };
http.DefaultRequestHeaders.Add("X-Api-Key", Environment.GetEnvironmentVariable("MANABU2_API_KEY"));

var courses = await http.GetStringAsync("api/v1/courses");
JavaScript / TypeScript
const res = await fetch("https://api.manabu2.com/api/v1/courses", {
  headers: { Authorization: `Bearer ${accessToken}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const courses = await res.json();
Python
import os, requests

res = requests.get(
    "https://api.manabu2.com/api/v1/courses",
    headers={"X-Api-Key": os.environ["MANABU2_API_KEY"]},
    timeout=30,
)
res.raise_for_status()
courses = res.json()

Load keys from environment variables or a secret manager; don't write them into source code.

3. MCP (for AI assistants)

An MCP-capable AI assistant can connect to Manabu2 by adding this URL:

https://api.manabu2.com/mcp

On first connection the user goes through OAuth sign-in and a consent screen, and the assistant then acts within that user's own permissions. Connecting with an API key also works.

4. Errors and retries

  • Errors come back as RFC 7807 problem details (title, status, detail).
  • On 429, wait the number of seconds in the Retry-After header before retrying.
  • Add an Idempotency-Key header to a write request and a resend with the same key returns the original response, so nothing is recorded twice.

Next: REST API docs →