inklet docs
Pushing content

Pushing content

The three push workflows in the inklet SDK — Auto, Manual, and Hardcode — and what each one decides for you.

inklet.push.* is the high-level entry point: one call that uploads a Content and immediately starts an Analysis over it. Each method takes assets, uploads any binaries, retries a failed upload once, and hands back both objects.

The three methods differ in how much of the decision you keep and whether inklet AI processes the assets.

Chooses the displayLays out the contentPlanAssets
push.autoinkletinklet AIPro1–50, any type
push.manualYouinklet AIPro1–50, any type
push.hardcodeYouYouFree or Proexactly 1 PNG or JPEG

See Plans and AI features for authorization behavior and upgrade handling.

Shared options

push.auto and push.manual accept:

OptionTypeNotes
assetsInkletAsset[]At least one. Build them with inklet.assets.*.
titlestringOptional label. Overrides the title inklet would generate.
intentstringOptional sentence of direction for the layout.
context"submitted" | "history"Defaults to submitted. history lets the agent also read the user's earlier Contents.
idempotencyKeystringOptional. Generated if omitted, and always returned.

push.manual additionally requires displayId. push.hardcode takes only displayId, image, and idempotencyKey — there is nothing for a title or an intent to steer.

Shared result

All three return the same shape:

Prop

Type

state is the Analysis state, not the Content state.

presentationIds is commonly empty on return, and state is commonly queued. That is success, not failure — the run happens after the call. Use inklet.analyses.wait(result.analysisId) or watch() to follow it. See Lifecycle.

One idempotency key covers both writes: the Content and the Analysis are created under the same key, in their own namespaces.

A push is two requests that each create something, and neither is retried automatically. If either fails, the error's idempotencyKey is the key both used — generated or not — and calling the same push again with it picks up whatever the first attempt created instead of making it twice. Every push also takes an optional second argument, { signal, timeoutMs }; see Timeouts and retries.

What intent is for

intent is a sentence of direction, not a template and not a prompt for prose. It steers how inklet arranges what you sent:

intent: "Make the key update easy to scan"
intent: "Lead with the number, keep the chart secondary"
intent: "This is a reference sheet — density over drama"

It is optional. Without it, inklet infers a layout from the assets themselves.

Assets

Build assets through inklet.assets.* so they are validated in your process, before a request is made:

inklet.assets.text("Milk, eggs, coffee");
inklet.assets.link("https://example.com/report");
inklet.assets.image({ data, filename: "chart.png", contentType: "image/png" });
inklet.assets.file({ data, filename: "menu.pdf", contentType: "application/pdf" });

Limits: 10 MiB per binary asset, 50 assets per Content. See Assets for accepted content types.

On this page