Sample code for 30+ languages & platforms
PureBasic

Referencing a Pre-Uploaded File by file_id in an AI Request

See more AI Examples

Some AI proviers have a Files API that lets you upload content once and then reference it later in generation requests using a file_id. This is especially useful for large documents, reuse across multiple prompts, or keeping inputs structured and separate from your prompt text.

This example demonstrates how to use a file_id in a request.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkAi.pb"
IncludeFile "CkStringBuilder.pb"

Procedure ChilkatExample()

    success.i = 0

    success = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    ai.i = CkAi::ckCreate()
    If ai.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; The provider can be "openai", "google", "claude", "mistral", "deepseek", "xai", or any provider
    ; that supports referencing pre-uploaded files by a file_id (or file uri).
    CkAi::setCkProvider(ai, "openai")

    ; Use your provider's API key.
    CkAi::setCkApiKey(ai, "MY_API_KEY")

    ; Choose a model.
    CkAi::setCkModel(ai, "gpt-5-mini")

    ; See the following example showing how to upload a file
    ; Upload a File to an AI Provider (OpenAI, Google, Antropic, X)

    ; Use the file_id of the pre-uploaded file.
    file_id.s = "file-5G2xncrEiHbVfYPRpFgP9c"
    CkAi::ckInputAddFileId(ai,file_id,"application/json")

    CkAi::ckInputAddText(ai,"Explain why Hamlet delays taking revenge, using only evidence from the file.")

    ; Ask the AI for text output.
    success = CkAi::ckAsk(ai,"text")
    If success = 0
        Debug CkAi::ckLastErrorText(ai)
        CkAi::ckDispose(ai)
        ProcedureReturn
    EndIf

    ; Get the text response.
    sbResponse.i = CkStringBuilder::ckCreate()
    If sbResponse.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkAi::ckGetOutputTextSb(ai,sbResponse)
    Debug CkStringBuilder::ckGetAsString(sbResponse)


    CkAi::ckDispose(ai)
    CkStringBuilder::ckDispose(sbResponse)


    ProcedureReturn
EndProcedure