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.6-luna")

    ;  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