# Auto Push (/push/auto)



<Callout type="warn">
  Auto uses inklet AI and requires an active Pro subscription. A Free account
  receives `SubscriptionRequiredError`; manage the plan in the inklet portal.
</Callout>

Use Auto when you have something worth showing and no strong opinion about
where it goes. inklet reads the assets, picks the compatible displays, and
handles the layout.

```ts
const result = await inklet.push.auto({
  idempotencyKey: "daily-brief-2026-08-15",
  title: "Daily brief",
  intent: "Make the key update easy to scan",
  assets: [
    inklet.assets.text("Revenue is up 12% week over week."),
    inklet.assets.link("https://example.com/report"),
  ],
});
```

## Signature [#signature]

```ts
inklet.push.auto(input: AutoPushInput): Promise<AutoPushResult>
```

<SdkType file="push" name="AutoPushInput" />

`displayId` is not accepted — passing one to the underlying Content resource
throws `ConfigurationError` ("Auto Content must omit displayId"). Auto is
defined by not naming a target.

## Which displays receive it [#which-displays-receive-it]

inklet decides, based on the assets, your account's displays, and their
declared capabilities. A Content can produce several Presentations — one per
display it routed to — which is why `presentationIds` is an array.

To see where it actually landed, read the Content once it is `ready` and
retrieve each Presentation:

```ts
const content = await inklet.contents.retrieve(result.contentId);

for (const id of content.presentationIds) {
  const presentation = await inklet.presentations.retrieve(id);
  console.log(presentation.displayId, presentation.state);
}
```

<Callout>
  Auto can route to zero displays if none are compatible with what you sent.
  A `ready` Content with an empty `presentationIds` is the signal — check
  `content.processing.warnings` for the reason.
</Callout>

## Errors specific to Auto [#errors-specific-to-auto]

| Condition                        | Error                                                                      |
| -------------------------------- | -------------------------------------------------------------------------- |
| `assets` missing or not an array | `ConfigurationError` — "Auto Push requires an assets array."               |
| `assets` empty                   | `ConfigurationError` — "Auto Push requires at least one Asset."            |
| More than 50 assets              | `ConfigurationError`                                                       |
| An asset fails validation        | `ConfigurationError`, naming the asset index                               |
| The PAT owner is on Free         | `SubscriptionRequiredError` — upgrade to Pro, then retry with the same PAT |

The validation errors throw locally, before a request is sent. Subscription
authorization is enforced by the inklet service before it creates a Content or
any upload tickets.
