{"record":{"id":"a9e3266cdb76eb00","repo":"BoundaryML/baml","slug":"failed-to-get-as-base64-w","errorCode":null,"errorMessage":"failed to get as base64: %w","messagePattern":"failed to get as base64: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/language_client_go/pkg/rawobjects_media.go","lineNumber":139,"sourceCode":"\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get as url: %w\", err)\n\t}\n\n\tif result == nil {\n\t\treturn nil, nil\n\t}\n\n\tas_url, ok := result.(string)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unexpected type for as_url: %T\", result)\n\t}\n\n\treturn &as_url, nil\n}\nfunc (m *mediaHolder) AsBase64() (*string, error) {\n\tresult, err := raw_objects.CallMethod(m, \"as_base64\", nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get as base64: %w\", err)\n\t}\n\n\tif result == nil {\n\t\treturn nil, nil\n\t}\n\n\tas_base64, ok := result.(string)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unexpected type for as_base64: %T\", result)\n\t}\n\n\treturn &as_base64, nil\n}\n\nfunc newMedia(ptr int64, rt unsafe.Pointer, mediaType MediaType) media {\n\tmedia := mediaHolder{raw_objects.FromPointer(ptr, rt), mediaType}\n\tswitch mediaType {\n\tcase MediaType_Image:","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_go/pkg/rawobjects_media.go#L121-L157","documentation":"Wraps any error from the FFI call to the runtime's `as_base64` method, which converts media content into a base64 string when possible. The real cause from the Rust runtime is preserved via %w. A nil result (no error) simply means the runtime produced no base64 representation.","triggerScenarios":"Calling AsBase64() on media whose raw object handle is invalid, or when the runtime-side `as_base64` conversion fails (e.g. content that cannot be re-encoded as base64).","commonSituations":"Calling AsBase64 on URL-only media with no stored bytes; stale handles after response release; version mismatch between the Go module and native runtime.","solutions":["Inspect errors.Unwrap(err) for the underlying failure","Check media.IsBase64()/IsUrl() first and use AsUrl for URL media","Rebuild the media object from a fresh BAML response","Keep the Go module and baml-cli runtime versions aligned"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"isB64, err := media.IsBase64()\nif err != nil || !isB64 { return nil }","typeGuard":null,"tryCatchPattern":"b64, err := media.AsBase64()\nif err != nil {\n    log.Printf(\"as_base64 failed: %v\", err)\n    if u, uerr := media.AsUrl(); uerr == nil { return useUrl(u) }\n    return nil\n}","preventionTips":["Check IsBase64()/IsUrl() before As* conversions","Use AsUrl fallback for URL-only media","Keep client/runtime versions in sync"],"tags":["go","ffi","baml","media","base64"],"backgroundTag":"unexpected-api-response-shape","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}