Public API

Public API (v1)#

A v1 REST API to read your project, generate content, schedule posts, and receive signed webhooks : reserved for Pro, Agency and Enterprise plans.

Status: stable v1. The routes below cover reads, generation, scheduling, and outgoing webhooks. They live at a path today (/api/public/v1/…) and will also be reachable from api.gliiz.com once that subdomain is wired up: same routes, same keys.
5-Minute API Quickstart#
01
Create the key

Open Account Settings → API (the Workspaces page, not a project's own settings), pick the project to scope it to, create the key, then copy it immediately. The full secret is only shown once.

02
Test /me

Call /me to confirm the project, remaining AI credits and connected social accounts. This is your smoke test.

03
Connect a webhook

Create an HTTPS webhook before long generations: finished jobs arrive without aggressive polling.

04
Generate, then schedule

Generate copy/flyer, retrieve the asset from /assets or a webhook, then schedule it with /posts.

bash
export GLIIZ_API_BASE="https://www.gliiz.com/api/public/v1"
export GLIIZ_API_KEY="gliiz_your_secret_key"

curl "$GLIIZ_API_BASE/me" \
  -H "Authorization: Bearer $GLIIZ_API_KEY"
Authentication#

Generate a key from Account Settings → API (Owner or Admin, Pro/Agency/Enterprise plan on the chosen project). A key is scoped to exactly one project and shown in full only once at creation. Send it as a Bearer token on every request:

bash
curl https://www.gliiz.com/api/public/v1/me \
  -H "Authorization: Bearer gliiz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

All v1 routes use JSON, and webhooks deliver signed JSON to you. Keep the key server-side only: never expose it in a browser, public mobile app, or embedded script.

ts
const GLIIZ_API_BASE = "https://www.gliiz.com/api/public/v1";

async function gliiz(path: string, init: RequestInit = {}) {
  const res = await fetch(`${GLIIZ_API_BASE}${path}`, {
    ...init,
    headers: {
      "Authorization": `Bearer ${process.env.GLIIZ_API_KEY}`,
      "Content-Type": "application/json",
      ...init.headers,
    },
  });

  const json = await res.json().catch(() => ({}));
  if (!res.ok) throw new Error(json.error ?? `Gliiz API error ${res.status}`);
  return json;
}
Security baseline. An API key acts as server-side access to the project. Store it in a secret manager or environment variable, rotate it when a teammate leaves, and use signed webhooks instead of exposing the key to an end-user client.
Integration Recipes#

The easiest path is deliberately linear: verify the project, generate copy, generate or reuse a visual, then schedule. Webhooks let you receive long-running generations without keeping a connection open.

ts
// 1) Vérifier le projet et les crédits
const me = await gliiz("/me");
console.log(me.project.name, me.credits?.remaining);

// 2) Générer des légendes adaptées à la marque du projet
const copy = await gliiz("/generate/copy", {
  method: "POST",
  body: JSON.stringify({
    prompt: "Annonce le lancement de notre nouvelle offre premium",
    platforms: ["instagram", "linkedin"],
    contentKind: "image"
  }),
});

// 3) Générer un visuel IA. La réponse est souvent async: gardez le jobId.
const flyer = await gliiz("/generate/flyer", {
  method: "POST",
  body: JSON.stringify({
    prompt: "Flyer premium pour le lancement d'une offre marketing IA",
    format: "portrait",
    outputQuality: "2k",
    modelTier: "standard",
    variantCount: 1
  }),
});

// 4) Si besoin, connecter un compte réseau social (générer l'URL OAuth sécurisée)
const connection = await gliiz("/social/connect", {
  method: "POST",
  body: JSON.stringify({ platform: "linkedin" }),
});
console.log("Connect URL:", connection.connect_url);

// 5) Quand l'asset est disponible (via webhook ou /assets), planifier le post
await gliiz("/posts", {
  method: "POST",
  body: JSON.stringify({
    content_item_id: "content-item-uuid",
    caption: copy.copy.linkedin.caption,
    platforms: ["linkedin"],
    scheduled_at: "2026-09-01T09:00:00.000Z"
  }),
});

VIBE & Turbo

The API is not a second conversational brain: it triggers the same engines as Studio/VIBE, but without a chat thread. Use VIBE or Turbo for conversation; use the API for system integrations.

Team

A key is created by an Owner/Admin and remains bound to one project. It uses the project owner's credit pool, not the human user calling your server.

Video

Video generation exists in Studio/VIBE/Turbo. It is not yet exposed in public v1 API keys; fetch already-created videos through /assets.

Route Reference#
Method & pathWhat it does
GET /api/public/v1/meProject, full brand identity, credit cost per generation type, credit balance, and connected social accounts with their id.
GET /api/public/v1/assetsList generated assets (flyers, copy, video), newest first. ?limit, ?before for pagination.
GET /api/public/v1/analyticsLatest per-platform stats (followers, reach, engagement). ?period=<days>.
POST /api/public/v1/generate/copyGenerate AI captions/hashtags for one or more platforms.
POST /api/public/v1/generate/flyerGenerate an AI flyer/visual. Runs the same engine as Studio.
GET/POST /api/public/v1/social/connectList connectable platforms or generate secure OAuth authorization URL to link a social account.
POST /api/public/v1/postsSchedule a post from an existing asset or a media URL.
GET/POST /api/public/v1/webhooksList or create HMAC-signed webhook subscriptions.
DELETE /api/public/v1/webhooks/:idDisable a webhook without deleting its delivery history.
POST /api/public/v1/webhooks/testSend a webhook.test event to your active subscriptions.
GETGET /api/public/v1/meVerify the key, project and credits

Call this route when your integration starts. It confirms that the key is valid, points to the right project, and still has usable credits.

AuthorizationheaderBearer gliiz_...
projectresponseid, name and creation date for the key-scoped project.
creditsresponsemonthly_limit, used, purchased_balance, remaining.
connected_accountsresponseplatform, name, type and active state for connected social accounts.
json
{
  "project": { "id": "uuid", "name": "Acme", "created_at": "2026-08-12T10:00:00Z" },
  "credits": { "monthly_limit": 200, "used": 42, "purchased_balance": 25, "remaining": 183 },
  "connected_accounts": [
    { "platform": "instagram", "account_name": "acme", "account_type": "business", "active": true }
  ]
}
GETGET /api/public/v1/assets?limit=20&before=2026-08-12T10:00:00ZList generated assets

Use /assets to fetch visuals, videos and content already created in the project. Pagination uses next_cursor: send it back as before to request the next page.

limitquery, 1-100Number of assets returned. Default: 20.
beforequery ISO dateTime cursor returned by next_cursor.
asset_kindresponseimage | video | flyer | copy
asset_url / flyer_png_urlresponseMedia URL to display, download or schedule.
bash
curl "$GLIIZ_API_BASE/assets?limit=10" \
  -H "Authorization: Bearer $GLIIZ_API_KEY"
GETGET /api/public/v1/analytics?period=30Read social analytics

Returns the latest available analytics snapshot per platform over the requested period. Values depend on permissions granted by each social network.

periodquery, 1-365Number of days analyzed. Default: 30.
followers_countresponseKnown follower count at snapshot date.
reachresponseAvailable reach for the platform.
engagement_rateresponseEngagement rate stored by Gliiz.
POSTPOST /api/public/v1/generate/copyGenerate captions and hashtags

This route is synchronous: it responds directly with generated text. It automatically loads brand identity, tone, contact details and strategic hashtags from the key-scoped project.

promptstring, requisExact subject of the content to publish.
platformsarrayinstagram | facebook | linkedin | tiktok | youtube
contentKindimage | videoHelps the AI avoid video wording for an image, or the reverse.
brandName/toneOfVoice/sector/pillarsoptionalLight overrides if you call without full context; the project remains authoritative.
json
{
  "prompt": "Présente notre nouvelle offre premium pour PME",
  "platforms": ["instagram", "linkedin"],
  "contentKind": "image"
}
POSTPOST /api/public/v1/generate/flyerGenerate an AI visual

This route creates a generation job. The normal response is 202 with jobId; receive completion through generation.completed, or list /assets later. Credits are checked before enqueueing.

promptstring, requisVisual brief. Be concrete: subject, offer, mood, audience.
formatoptionalsquare | portrait | story | landscape
outputQualityoptional2k | 4k
modelTieroptionalstandard | premium
visualTypeoptionaltypography | hybrid
variantCountoptional1 | 2 | 3 — DEFAULTS TO 2. Each variant is billed: send 1 if you only want one.
subjectUrlsoptionalPublic HTTPS reference images.
generationRequestIdoptionalClient idempotency key to avoid duplicates.
json
{
  "prompt": "Flyer premium pour annoncer une offre marketing IA pour restaurants",
  "format": "portrait",
  "outputQuality": "2k",
  "modelTier": "standard",
  "visualType": "hybrid",
  "variantCount": 1,
  "generationRequestId": "launch-offer-2026-09-01"
}
GET / POSTGET / POST /api/public/v1/social/connectConnect a social network or list integrations

Entry point to connect a social network account to your Gliiz project. GET lists all supported platforms with their status and already connected accounts. POST generates the secure OAuth authorization URL (with automatic continuation redirect back to Gliiz).

GET /social/connectquery: ?platform=Optional. Filters on a platform or lists all available integrations and active accounts.
POST /social/connectbody: { platform }Required. Platform to connect: linkedin, linkedin_business, tiktok, youtube, google_ads, tiktok_ads, canva.
connect_urlresponse (POST)Secure OAuth URL generated by Gliiz. Open it in a browser to complete account authorization.
bash
# 1. Générer l'URL d'autorisation OAuth pour LinkedIn
curl -X POST https://www.gliiz.com/api/public/v1/social/connect \
  -H "Authorization: Bearer gliiz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"platform": "linkedin"}'

# 2. Ou lister les plateformes connectables et comptes actifs
curl https://www.gliiz.com/api/public/v1/social/connect \
  -H "Authorization: Bearer gliiz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
json
// Réponse / Response POST (200 OK):
{
  "platform": "linkedin",
  "name": "LinkedIn Personnel",
  "status": "ready",
  "connect_url": "https://www.gliiz.com/api/auth/linkedin?projectId=prj_123456789",
  "instructions": "Ouvrez cette URL dans votre navigateur pour autoriser Gliiz. Une fois le flux OAuth terminé, votre compte sera lié automatiquement à ce projet.",
  "connected_accounts_count": 0
}
POSTPOST /api/public/v1/postsSchedule a post

Schedules an existing asset or media URL to one or more networks. If multiple accounts for a platform are connected, send account_by_platform to select the right account.

content_item_iduuidExisting Gliiz asset. Recommended after generation.
media_urlurlAlternative: public URL when the asset does not exist in Gliiz yet.
captionstring, requisPublished text. Use copy.<platform>.caption for ready-to-publish output.
platformsarray, requisinstagram | facebook | linkedin | tiktok | youtube
scheduled_atISO datetimeUTC date. Default: now + 30 seconds.
account_by_platformobjectMap platform → social_account_id when needed.
json
{
  "content_item_id": "2f67a5b0-6b0b-47fb-84f0-a077e0d2dd9e",
  "caption": "Votre légende prête à publier...",
  "platforms": ["instagram", "facebook"],
  "scheduled_at": "2026-09-01T09:00:00.000Z",
  "account_by_platform": {
    "instagram": "social-account-uuid"
  }
}
GET / POSTGET / POST /api/public/v1/webhooksManage outgoing webhooks

Webhooks are the simplest way to integrate Gliiz with a CRM, CMS, ERP, e-commerce backend or internal tool. Create a subscription, store the secret, verify signatures, then process events.

GET /webhookslistLists active and disabled subscriptions for the project.
POST /webhookscreateCreates an HTTPS subscription and returns secret once.
DELETE /webhooks/:iddisableDisables without deleting delivery history.
POST /webhooks/testtestSends webhook.test to active subscriptions.
Project scoping. A key always acts on the one project it was created for : any project_id sent in a request body is ignored in favor of the key's own project. Generation requests count against that project owner's normal plan limits and rate limits, same as using the app itself.
GETGET /api/public/v1/generate/jobs/{jobId}Track an asynchronous generation

Every generation (visual, image, video, motion control) answers 202 with a jobId. This route returns its state at any time: the direct alternative to a webhook, with no server to expose. One endpoint for every generation type.

statusqueued | running | completed | failed | canceledPoll while the value is queued or running. A finished generation carries its result in result.
resultobject | nullPresent only on completed: holds the produced URLs and the generation's metadata.
errorstring | nullSet on failed. Credits reserved for a failed generation are refunded automatically.
POSTPOST /api/public/v1/generate/videoGenerate a video

Generates a video from a prompt, or from a starting image if you supply one. Answers 202 with a jobId to track. The credit cost depends on the model, duration and resolution requested.

POSTPOST /api/public/v1/generate/imageGenerate an image

Generates an image from the brief. The visual's nature is READ from the brief: a photo asked for in plain words receives no headline and no contact details, a flyer carries them. Answers 202 with a jobId.

POSTPOST /api/public/v1/generate/rewriteRewrite a text

Rewrites an existing text in the project brand's voice. Synchronous: the response carries the rewritten text directly.

POSTPOST /api/public/v1/generate/motion-controlAnimate a character

Applies the motion of a reference video to a character supplied as an image. Answers 202 with a jobId to follow on the tracking route above.

POSTPOST /api/public/v1/assets/importImport a file into the library

Copies a file from a URL into the project's Gliiz storage, where it becomes publishable. The file stops depending on the source URL, which may expire.

GET · POSTGET · POST /api/public/v1/automationsList and create automations

GET lists the project's automations and their state. POST creates one. An automation created through the API NEVER publishes on its own: it prepares, and publishing stays subject to your approval.

GETGET /api/public/v1/posts/{queueItemId}Track a publication

State of a scheduled publication: pending, published, or failed with its reason. The id is the one returned by POST /posts.

Signed Webhooks#

When you create a webhook, Gliiz returns a whsec_… secret shown once. Every POST delivery includes X-Gliiz-Timestamp and X-Gliiz-Signature. Verify the HMAC-SHA256 signature over `${timestamp}.${body}` before processing the event.

bash
curl "$GLIIZ_API_BASE/webhooks" \
  -X POST \
  -H "Authorization: Bearer $GLIIZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production backend",
    "url": "https://example.com/webhooks/gliiz",
    "events": ["generation.completed", "generation.failed", "post.scheduled"]
  }'
json
{
  "webhook": {
    "id": "webhook-subscription-uuid",
    "name": "Production backend",
    "url": "https://example.com/webhooks/gliiz",
    "events": ["generation.completed", "generation.failed", "post.scheduled"],
    "created_at": "2026-08-12T10:00:00.000Z",
    "secret": "whsec_copy_this_once"
  }
}
ts
import crypto from "crypto";

const timestamp = request.headers["x-gliiz-timestamp"];
const signature = request.headers["x-gliiz-signature"];
const expected = "sha256=" + crypto
  .createHmac("sha256", process.env.GLIIZ_WEBHOOK_SECRET!)
  .update(`${timestamp}.${rawBody}`)
  .digest("hex");

if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) {
  throw new Error("Invalid Gliiz webhook signature");
}
json
{
  "id": "evt_01J...",
  "event": "generation.completed",
  "created_at": "2026-08-12T10:02:14.000Z",
  "project_id": "project-uuid",
  "data": {
    "api_key_id": "api-key-uuid",
    "job_id": "generation-job-uuid",
    "workflow": "flyer.v1",
    "status": "completed",
    "result": {
      "contentItemId": "content-item-uuid",
      "imageUrl": "https://..."
    }
  }
}

Available events: generation.copy.completed, generation.flyer.queued, generation.completed, generation.failed, post.scheduled, webhook.test.

generation.copy.completedsyncA caption generation completed.
generation.flyer.queuedasyncA visual generation job was accepted into the queue.
generation.completedasyncA generation job finished successfully.
generation.failedasyncA job failed or was canceled.
post.scheduledsyncOne or more posts were scheduled.
webhook.testmanualEvent sent by /webhooks/test.
Return 2xx quickly after signature verification. If processing is slow, put the event in your own queue and respond immediately. Gliiz logs the HTTP status, response snippet and delivery errors.
Errors, Limits & Collaboration#

API errors are deliberately simple: an HTTP status, a readable error field, and sometimes details/code for validation. Handle at least the statuses below.

400Bad RequestInvalid JSON payload or missing field.
401UnauthorizedMissing, malformed, revoked or unknown key.
402Payment RequiredNot enough credits to start the generation.
403ForbiddenPlan without API access, plan quota, or unauthorized action.
404Not FoundProject, asset or webhook not found in the key scope.
422Unprocessable EntityValid JSON but invalid business parameters.
429Rate LimitedToo many requests or too many active jobs.
500/503Server ErrorServer incident or AI provider temporarily unavailable.
json
{
  "error": "Invalid post payload",
  "details": {
    "fieldErrors": {
      "platforms": ["Array must contain at least 1 element(s)"]
    }
  }
}
Team work. API keys are created at project level by an Owner or Admin. They do not replace human roles: invitations, roles, editor/publish/inbox scopes and revocations remain managed in the app so external scripts cannot silently rewrite the team.
Public v1 surface. Public v1 covers reads, assets, analytics, copy, visuals, scheduling and webhooks. Direct video generation and team management are not exposed in public v1; use Studio/VIBE/Turbo to generate videos, then fetch them through /assets.
Social Networks

Platforms & Networks#

What you can do on each connected social network (publishing, comment replies, and DM replies), so you know what to expect before connecting an account.

PlatformPublishingComment auto-replyDM auto-reply
Facebook⏳ Soon⏳ Soon⏳ Soon Messenger
Instagram⏳ Soon⏳ Soon⏳ Soon DM
TikTok✅ Publishing
LinkedIn⚠️ Limited
YouTube✅ Video only
WhatsAppN/AN/A
Using Gliiz from Claude, ChatGPT or Gemini? See the "Claude & ChatGPT (MCP)" section below: generation, import and scheduled publishing, without leaving your assistant. For other integrations (Slack, Notion, dedicated business sync), reach out from the Contact page. The v1 routes above are the stable contract for your external systems.
Good to Know#

Capabilities above depend on the permissions each platform grants Gliiz at connection time and can change if a platform updates its policies. If a feature you expect is missing on a connected account, try reconnecting it from Settings → Accounts.

Conversational AI

Claude, ChatGPT & Gemini (MCP)#

Generate, import and publish Gliiz content directly from your own Claude, ChatGPT or Gemini, without opening the app. One server (MCP, the standard protocol for both) serves both clients.

Unavailable on Free. From Starter onward, with deliberately restricted access (a single key, tight quotas, table below); without that restriction from Pro onward. The same key as the v1 API above (Account Settings → API) serves both. One key = one project: Claude, ChatGPT or Gemini never acts outside the project the key is bound to.

Limits by plan. Beyond these, every call (Claude, ChatGPT or Gemini) gets a 429 until the window resets:

PlanMax keysPer minutePer day
Starter120300
Pro3603 000
Agency71208 000
Enterprise20240Unlimited

The two columns don't measure the same thing: the per-minute limit caps a burst, the per-day limit caps sustained volume across the whole day. A Starter account sustaining 20/min without a break would exhaust its 300 requests in 15 minutes, then wait until the next day. They are not two ways of saying the same limit.

Step 1: get your API key#

Shared by Claude and ChatGPT, you only create it once. Account Settings → API → Create a key. The full key (prefix gliiz_…) is shown only at that exact moment. Copy it right away: it will never be shown in full again (only an 8-character prefix stays visible, to recognize it in the list). If you lose it, revoke it and create a new one: revoking one key doesn't affect the others.

Claude — connect#
Two paths, depending on which Claude app you use.From Claude Desktop or claude.ai (browser), go to "Settings → Connectors → Add custom connector" and simply paste the server URL: there is no API key to copy, Gliiz shows you its own sign-in screen and then asks which project to authorize. From Claude Code (terminal), use the command below, with an API key. One detail that wastes time: don't try editing claude_desktop_config.json by hand, Claude Desktop only reads local servers there and ignores, with an error, any remote server placed in it.

From Claude Desktop or claude.ai, the URL to paste into "Add custom connector":

text
https://www.gliiz.com/api/mcp/claude

Claude then opens a Gliiz page: sign in, pick the project to authorize, and you are done. No API key is involved in this path.

In a terminal, from any folder:

bash
claude mcp add --transport http gliiz https://www.gliiz.com/api/mcp/claude \
  --header "Authorization: Bearer gliiz_YOUR_API_KEY" \
  --scope user

--scope usermakes the connector available from any folder, not just the one you added it from, recommended for everyday use. Don't have Claude Code installed? The official command (macOS/Linux):

bash
curl -fsSL https://claude.ai/install.sh | bash

Once registered, day-to-day use is no longer a sequence of commands: just type claude in a terminal, which opens a real conversation, and describe what you want in plain language (see step 3 below). No extra install, no restart needed beyond the command itself.

Video Tutorial: Connect Gliiz MCP to Claude Code & Claude Desktop

YouTube
ChatGPT — connect#
No API key is needed here. ChatGPT connects over OAuth: when you add the connector, Gliiz shows its own sign-in screen and then asks which project to authorize. You need a Starter, Pro, Agency or Enterprise account (a Free account cannot authorize a connection). How many connections can be active at once depends on the plan, just like API keys.

Five screens, in this exact order:

1Settings → Connectors → AdvancedTurn on "Developer mode".
2Connectors → Add"Add custom connector".
3NameGliiz
4AuthenticationPick OAuth. ChatGPT opens the Gliiz screen: sign in, pick the project, confirm.
5CreateThe connector appears in the list, ready to enable inside a conversation.

Server URL (the "URL" field, screen 3), copy-paste directly:

text
https://www.gliiz.com/api/mcp/chatgpt

Authentication (screen 4): pick "API key", then paste your key from step 1 into the field, no Bearer prefix, no space before or after:

text
gliiz_YOUR_API_KEY

Inside a conversation, open the tools picker (+ icon) and check "Gliiz". Activation is per conversation: a conversation already open before you added the connector won't see it retroactively, you need to open a new one or enable it manually in that same one.

Video Tutorial: Connect Gliiz MCP connector to ChatGPT in 2 minutes

YouTube
Gemini — connect#

Gemini has its own MCP surface, separate from Claude's and ChatGPT's. It serves the same tool set as ChatGPT — since Gemini generates images natively, gliiz_generate_flyer is not exposed to it: it imports what it created through gliiz_import_asset.

The MCP server URL to declare in Gemini:

text
https://www.gliiz.com/api/mcp/gemini

In a Gemini client that reads an MCP configuration file, declare the server like this. The key comes from step 1 above:

json
{
  "mcpServers": {
    "gliiz": {
      "url": "https://www.gliiz.com/api/mcp/gemini",
      "headers": {
        "Authorization": "Bearer gliiz_VOTRE_CLE_API"
      }
    }
  }
}

To check that the key and URL answer, before even configuring the client:

bash
curl -X POST https://www.gliiz.com/api/mcp/gemini \
  -H "Authorization: Bearer gliiz_VOTRE_CLE_API" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Two authentication modes, your choice. An API key (Bearer gliiz_…) is enough and acts on the project that created it. A client that speaks OAuth 2.1 can instead follow automatic discovery: the protected resource is published at /.well-known/oauth-protected-resource/api/mcp/gemini, and the resulting token is bound to THAT resource — a token issued for Claude or ChatGPT is rejected here, and vice versa.
Step 2: how to talk to it#

No special command to learn. Once the connector is enabled, you describe what you want in plain language, and the assistant decides ON ITS OWN whether to call a Gliiz tool, exactly as it would decide to use a web search if it needed one. You never need to write "use the Gliiz MCP" or name a tool:

You writeThe assistant calls
"Write me an Instagram caption for our product launch"gliiz_generate_copy
"What are my stats for the last 30 days?"gliiz_get_analytics
"Here's an image I just generated, add it to my Gliiz library"gliiz_import_asset

For best results: give useful context in your sentence (target platform, desired tone, which project if you have several) rather than letting the assistant guess. If it's unsure between several tools or projects, it will ask before acting, it never silently improvises a publication or a credit spend.

Step 3: verify it works#

Ask a question that forces the assistant to call a read-only tool, valid for both Claude and ChatGPT. No credits spent, no risk:

text
What's the AI credit balance on my Gliiz account, and which social accounts are connected?

Expected behavior: the assistant announces it's calling a tool ("Gliiz", gliiz_get_account), then answers with your real balance and real accounts, the same numbers as Account Settings → API in the app. If it answers without ever mentioning a tool, or with an authentication error, redo step 1 (key mispasted, stray space, or a revoked key) then step 2/2-alt (restart missed on Claude, connector not checked in THIS conversation on ChatGPT, or plan still Free/Starter).

Step 4: what each platform can do#

Claude gets the full creative studio (it has no native image or video generation). ChatGPT already generates images: it gets gliiz_import_asset instead, to bring what it just produced into your Gliiz library.

ToolClaudeChatGPTGeminiWhat it does
gliiz_get_accountCredit balance, connected social accounts.
gliiz_list_assetsLists the content library.
gliiz_get_analyticsPer-platform statistics.
gliiz_generate_copyBrand copy (caption, hashtags).
gliiz_generate_flyerVisual via Gliiz's creative engine (ChatGPT already generates natively).
gliiz_generate_videoShort video, always asynchronous: follow up with gliiz_check_generation_status.
gliiz_check_generation_statusProgress of an in-flight video/visual generation.
gliiz_import_assetDrops a visual already generated (e.g. by ChatGPT) into the Gliiz library.
gliiz_publish_postSchedules a post, never immediate (see below).
gliiz_connect_social_accountSecure link to connect an accepted and active social network (LinkedIn, TikTok, YouTube, etc.) or list networks.
gliiz_animate_characterTransfers movement from a reference video onto a character/product (Kling motion control).
gliiz_rewrite_textRewrites and adapts copy for a target platform and tone.
gliiz_list_automationsLists the project's automation flows and cadence.
gliiz_create_automationCreates a publishing automation (requires human approval).
Step 5: what to expect in practice#

Real example, with gliiz_publish_post (the only tool marked destructiveHint): you write

text
Post to Instagram and LinkedIn: "We're hiring! Designer role open, link in bio."

The assistant never publishes right away. It replies by proposing a scheduling time (at least 1 minute out, often picking a sensible slot itself, or asking you), waits for your confirmation in the conversation, and only then calls the tool. What you'll actually see: the post sits as pending_review in your Gliiz library until the scheduled time, visible from the app if you want to cancel it before it goes out, exactly like a post scheduled from the interface itself. For a generation (visual or video), expect a two-step reply: the assistant announces the start and, for video, must call gliiz_check_generation_status back itself a moment later, it never sits silently blocked waiting for the result.

No post is ever immediate. gliiz_publish_post always schedules at least 1 minute ahead, leaving a cancellation window before a post becomes visible under your brand. Neither ad campaign creation nor deleting an account, project or key is reachable through this channel.

Connecting a social network account from Claude, ChatGPT or Gemini

You can ask directly in the chat: "Connect my TikTok account", "Link my LinkedIn personal profile", or "Connect my YouTube channel". The assistant calls gliiz_connect_social_account and provides a direct, secure authorization link for the official provider. Once confirmed in your browser, the account is immediately linked to your Gliiz project.

Documentation Feedback#

Was this documentation helpful?