Ask
- PoolKit finds the context on the device: the best matches for the question, or what recurs when nothing matches.
- On iOS 26 with Apple Intelligence, Apple’s on-device model writes the answer and nothing leaves the phone.
- When Apple’s model is there but cannot run, cloud assist writes the answer, under the same permission.
- On other devices the answer is written by cloud assist, only when your configuration and the grant both allow it. Up to 40 things and excerpts are sent as text. Without that permission the call throws
PoolError.cloudAssistNotAllowed. answer.writtenBysays which of the two wrote it.answer.provenanceis alwaysinferred.- Citations are evidence identifiers from the device. An answer can only cite what it was given.
declinedis true when the model would not answer, for example a question about health.textis then empty.- A question is 1 to 1,000 characters, counted as UTF-16 code units;
PoolContext.questionMaximumLengthholds the limit for your text field. An empty or longer question throwsPoolError.invalidRequest. - While Pool’s service asks the SDK to wait, a cloud answer throws
PoolError.rateLimitedorPoolError.serviceUnavailablewith the seconds left. Search, facets and recurring things keep answering on the device.
Show the answer as it is written
askUpdates runs the same checks, retrieval and writers as ask, and hands over the text while a model writes it.
.writingafter partial text means the first model could not finish and the next one starts over. Drop what you showed.- The final
.answercan bedeclinedafter partial text. Drop the partial text then too. - On the device, Apple’s model streams its words. With cloud assist, Pool’s service sends them as Server-Sent Events: see Service API.
- Cost and permission are the same as
ask.
Fill a profile
- A profile always needs cloud assist, allowed by your configuration and by the grant. It sends up to 80 recurring things as text, never an image.
- Every field comes back with a value and its evidence, or with the reason it was left empty. Nothing is filled without evidence.
- Fields about health, religion, sexuality, ethnicity, politics, children, finances or credentials are always refused as
sensitive. - The schema is a JSON Schema subset: an
objectat the root;type,properties,required,items,enum,description,titleandadditionalProperties: false; at most 5 levels, 100 fields and 32 KB. Anything else throwsPoolError.invalidSchemabefore a request is made. - Fields are addressed by JSON Pointer, for example
/sizes/shoe.

