MisarMisar Docs
MisarMailMisarBlogMisarReachMisarPostMisarDevMisarCoderMisarSEOMisar PlatformMisar SSO
SDKs

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

ResourceMethods
blog.articleslist · get · publish · update · createDraft · search · recommendations
blog.serieslist · create · addArticle
blog.reactionsget · add · remove
blog.aititles · complete
blog.imagesgenerate · upload
blog.accountme
blog.analyticssummary · upsellFunnel (admin only)
blog.planget

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.