compose_project
ChatGPTCreate or continue a durable Glif project from natural language. Glif's server-side agent chooses models, tools, and multi-step media workflows. Optional intelligence picks the agent: lite, smart, or genius. Without a tier, new projects use your preferred model and existing ones keep theirs. A request that iterates on, refines, animates, or otherwise references anything Glif previously made in this conversation needs the project_id from that earlier result — omitting it starts a blank project with no memory of prior media, so omitting project_id suits genuinely new, unrelated work. Glif handles batches itself: a series (multiple characters, scenes, variations) works best as one call describing the whole series, kept in one project. Returns immediately with a jobId. Generation often finishes within a minute but can take longer. get_job_status waits up to 15 seconds by default, which suits clients without code execution, sleep or another polling mechanism. Its optional wait_seconds value (0 to 30) overrides that; 0 returns at once. The completed call returns the generated media URLs, with the same media in structuredContent. view_media applies after completion, not to working polls — called once with project_id, it renders the final gallery in UI-capable hosts. In clients with inline rendering, pasted media URLs are redundant; a raw URL is useful only when the client lacks inline rendering or the user asks for one (a sandboxed agent may need its CSP / allowed-domains settings adjusted to load it).
get_job_status
ChatGPTCheck a Glif project job started by compose_project, using its job_id. Wait up to 15 seconds for new saved public text, generated media or a status change. Pass the previous progressCursor as progress_cursor to wait for a change instead of receiving the same output immediately. Without a cursor, already available text or media returns promptly. The optional wait_seconds value (0 to 30) overrides the wait; 0 returns at once. Working responses include saved public messages and media links, not token streaming. When nothing changed since the passed progress_cursor, the text says so and repeats no output. Finished responses return the full result. Keep checking while working, then report the completed result or failure. For input_required, ask for the required input instead. End early only for an explicit background request. Do not assume this chat will receive automatic updates. Job status records expire ~30 minutes after the job finishes. Saved results remain available through get_project when a client cannot keep polling. Do not call compose_project again while this job is working. The same project refuses it, and a new project starts a separate billable job that does not speed up this one.
get_project
ChatGPTRead project state, active job, recent messages, and generated media for a Glif project.
get_user_skill
ChatGPTReads one of the authenticated user's personal Glif skills, including its instructions. Does not expose global Glif skills. To run a skill, name it in a compose_project prompt, e.g. "use my alien-vistas skill". Activation loads the instructions automatically, so copying them into the prompt is redundant.
list_projects
ChatGPTList recent Glif projects owned by the authenticated user.
list_user_skills
ChatGPTLists the authenticated user's personal Glif skills as names and descriptions. Does not expose global Glif skills. To run one, name it in a compose_project prompt rather than fetching and copying its instructions.
read_settings
ChatGPTDefault intelligence for new projects when no intelligence is supplied. This is your existing Glif account preference, shared with the Glif website. Existing projects keep their chosen model unless explicitly changed. Changing this setting does not start generation or spend credits.
select_project_images
ChatGPTSelect existing images from an owned Glif project using a thumbnail form. Returns authorized image asset IDs, not a generation job. Selection never spends credits. Unsupported hosts receive an image list instead. A later reviewed compose_project request is separate.
update_settings
ChatGPTUpdate only submitted settings. Default intelligence for new projects when no intelligence is supplied. This is your existing Glif account preference, shared with the Glif website. Existing projects keep their chosen model unless explicitly changed. Changing this setting does not start generation or spend credits.
upload_file
ChatGPTUpload an image, video, or audio file for compose_project. Inline uploads return an assetId for compose_project.asset_ids; signed uploads return a file URL for compose_project.attachments. Documents use the signed local-file mode. Supported inputs: - file accepts an image, video, or audio attachment resolved by the host app. Supported hosts, including ChatGPT, can populate this field with a short-lived download URL. - url accepts a public image, video, or audio URL. Remote documents are not yet supported. - filename and/or kind, without url or base64, returns a signed curl PUT command as command in the result, with a <YOUR_FILE_PATH> placeholder, and an upfront stable file URL for a local file, including a document. This mode needs local shell and network access; Glif verifies the uploaded bytes and creates the owned asset server-side. - base64 with filename accepts a small local image, video, or audio file when no shell is available. Glif rejects decoded files above 1 MiB, and host tool-call limits may be lower.
view_media
ChatGPTRender existing Glif media in the interactive project viewer when the user asks to see, revisit, or pull up media that was already generated (e.g. "show me that capybara again", "open my last image"). It applies to completed or saved output, not to working polls, and generates nothing (compose_project does that). Don't call it right after a job finishes: the compose_project card already shows that media. Pass project_id to show a project's media, optionally narrowed to specific asset_ids. Clients that render media inline show it in the viewer panel, making pasted URLs redundant there; in clients that don't (e.g. CLI hosts), sharing the URLs is how the user gets the media (a sandboxed agent may need its CSP / allowed-domains settings adjusted to load them).
whoami
ChatGPTReturn the authenticated identity, the credential label (API key name or connected OAuth app name), current subscription/plan, available credit balance, credits spent over the last 24h / 7d / 30d, the typical credit cost of one image, video or audio output, and the agent tier compose_project uses when no intelligence is given. Cheap — no agent loop, no generation.