Java SDK
Publish articles, manage series, and run AI tools with the MisarBlog Java SDK, plus post-embed helpers.
The Java SDK (blog.misar:misarblog-sdk v1.0.0) provides a client for the developer API (https://api.misar.io/blog/v1) plus static iframe embed helpers.
Installation
<dependency>
<groupId>blog.misar</groupId>
<artifactId>misarblog-sdk</artifactId>
<version>1.0.0</version>
</dependency>API Client
Construct with your mbk_ key. The base URL defaults to https://api.misar.io/blog/v1 (the gateway strips /api); use the Builder to override it.
import blog.misar.sdk.MisarBlog;
import blog.misar.sdk.models.Article;
import java.util.List;
import java.util.Map;
MisarBlog blog = new MisarBlog("mbk_YOUR_KEY");
// Or: new MisarBlog.Builder("mbk_YOUR_KEY").baseUrl("https://api.misar.io/blog/v1").build();
// List your articles
Map<String, Object> list = blog.articles.list(Map.of("status", "published", "limit", 20));
// Publish
Article created = blog.articles.publish(Map.of(
"title", "Getting Started with the MisarBlog API",
"body_markdown", "## Introduction\n\nThis guide covers…",
"tags", List.of("java", "api"),
"visibility", "public"
));
System.out.println(created.slug());Other resources
blog.articles.get("my-first-article");
blog.articles.update("my-first-article", Map.of("publish", true));
blog.articles.createDraft(Map.of("title", "WIP"));
blog.articles.recommendations(articleId, 5);
blog.series.list();
blog.series.create(Map.of("title", "A Series"));
blog.ai.titles(Map.of("action", "seo", "prompt", "AI writing tools 2026"));
blog.ai.complete(Map.of("prompt", "Tighten this: …", "max_tokens", 300));
blog.images.generate(Map.of("prompt", "A minimalist cover", "size", "1792x1024"));
blog.account.me();
blog.analytics.summary(30);
blog.analytics.upsellFunnel(30, null); // admin only
blog.plan.get();
blog.reactions.get(articleId);
blog.reactions.add(Map.of("article_id", articleId, "type", "like"));
blog.reactions.remove(articleId, "like");Resources
| Resource | Methods |
|---|---|
blog.articles | list · get · publish · update · createDraft · search · recommendations |
blog.series | list · create · addArticle |
blog.reactions | get · add · remove |
blog.ai | titles · complete |
blog.images | generate · upload |
blog.account | me |
blog.analytics | summary · upsellFunnel (admin only) |
blog.plan | get |
Typed responses are returned as Article / Series; everything else is a Map<String, Object>. Failures throw BlogApiException (carrying the HTTP status).
Embed helpers
The static helpers need no key:
String url = MisarBlog.embedUrl("johndoe", null, "auto");
String postUrl = MisarBlog.embedUrl("johndoe", "my-first-post", "dark");
MisarBlog.TokenResult result =
MisarBlog.refreshToken("current-session-token", "https://misar.blog");static String embedUrl(String username, String slug, String theme) returns a public embed-viewer URL. static TokenResult refreshToken(String token, String baseUrl) returns TokenResult(token, expiresAt), or throws on a non-200 response.