Skip to content

useNanoBanana

AI image generation composable (Nano Banana integration).

Import

typescript
const {
  jobs,
  currentJob,
  messages,
  isLoading,
  createJob,
  sendMessage,
  fetchJobs,
  fetchMessages,
  subscribeToJob,
} = useNanoBanana(projectId)

Parameters

ParameterTypeDescription
projectIdRef<string>Reactive project UUID

Return Values

PropertyTypeDescription
jobsRef<ImageJob[]>Image generation jobs
currentJobRef<ImageJob | null>Current active job
messagesRef<ImageMessage[]>Chat messages for current job
isLoadingRef<boolean>Loading state

Methods

MethodParametersReturnsDescription
createJobpayload: CreateJobPayloadPromise<ImageJob>Create generation job
sendMessagejobId: string, prompt: string, variantId?: stringPromise<void>Send refinement message
fetchJobsPromise<void>Load all jobs
fetchMessagesjobId: stringPromise<void>Load chat history
subscribeToJobjobId: string, callback: FunctionRealtimeChannelSubscribe to job updates

Job Status Flow

queued → running → succeeded
                 → failed
                 → canceled

API Routes Used

  • POST /api/nano-banana/jobs — Create job
  • POST /api/nano-banana/messages — Send message
  • GET /api/nano-banana/jobs — List jobs
  • GET /api/nano-banana/jobs/[id]/messages — Get messages

Source

app/composables/useNanoBanana.ts

Built with VitePress