{"record":{"id":"d4971909a77482c5","repo":"BoundaryML/baml","slug":"failed-to-get-mime-type-w","errorCode":null,"errorMessage":"failed to get mime type: %w","messagePattern":"failed to get mime type: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/language_client_go/pkg/rawobjects_media.go","lineNumber":86,"sourceCode":"\t}\n}\n\nfunc (m *mediaHolder) ObjectType() cffi.BamlObjectType {\n\treturn m.mediaType.objectType()\n}\n\nfunc (m *mediaHolder) MediaType() (MediaType, error) {\n\treturn m.mediaType, nil\n}\n\nfunc (m *mediaHolder) pointer() int64 {\n\treturn m.RawObject.Pointer()\n}\n\nfunc (m *mediaHolder) MimeType() (*string, error) {\n\tresult, err := raw_objects.CallMethod(m, \"mime_type\", nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get mime type: %w\", err)\n\t}\n\n\tif result == nil {\n\t\treturn nil, nil\n\t}\n\n\tas_mime_type, ok := result.(string)\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"unexpected type for mime type: %T\", result)\n\t}\n\n\treturn &as_mime_type, nil\n}\n\nfunc (m *mediaHolder) IsUrl() (bool, error) {\n\tresult, err := raw_objects.CallMethod(m, \"is_url\", nil)\n\tif err != nil {\n\t\treturn false, fmt.Errorf(\"failed to get is url: %w\", err)","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_go/pkg/rawobjects_media.go#L68-L104","documentation":"This error wraps any failure returned by the underlying FFI call to the Rust runtime's `mime_type` method on a media object (image, audio, PDF, or video). It is raised by the `MimeType()` method of the Go BAML client's media holder when `raw_objects.CallMethod` reports an error. The original cause (e.g. the runtime object was invalid or the method failed) is preserved via %w, so inspect the wrapped error for details.","triggerScenarios":"Calling MimeType() on an Image, Audio, PDF, or Video instance whose underlying CFFI raw object handle is stale, freed, or whose remote `mime_type` method fails inside the BAML runtime.","commonSituations":"Holding onto a media object after the runtime response was released; a version mismatch between the Go client and the native BAML runtime; corrupted or unusual media content that the runtime cannot classify.","solutions":["Inspect the wrapped cause with errors.Is/errors.As to find the underlying FFI failure","Re-acquire the media object from a fresh BAML function call instead of reusing an old handle","Upgrade github.com/boundaryml/baml Go client and the baml-cli runtime so versions match","Log media.MediaType() and the object pointer before the call to confirm the handle is valid"],"exampleFix":"// before\nmime, err := media.MimeType() // opaque failure\n// after\nmime, err := media.MimeType()\nif err != nil {\n    var wrapped error\n    if errors.As(err, &wrapped) { log.Printf(\"mime_type cause: %v\", errors.Unwrap(err)) }\n    media = reFetchMediaFromResponse() // rebuild handle\n}","handlingStrategy":"try-catch","validationCode":"if media == nil { return fmt.Errorf(\"media object is nil\") }","typeGuard":"func validMedia(m baml.Media) bool { var t baml.MediaType; t, err := m.MediaType(); return err == nil && t != \"\" }","tryCatchPattern":"mime, err := media.MimeType()\nif err != nil {\n    log.Printf(\"mime type unavailable: %v (cause: %v)\", err, errors.Unwrap(err))\n    return fallbackMime(media)\n}","preventionTips":["Use media objects only within the lifetime of the response that produced them","Keep the baml Go module and native runtime versions in lockstep","Log the wrapped cause with errors.Unwrap to distinguish FFI vs content issues"],"tags":["go","ffi","baml","media"],"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"}