All notable changes to this project will be documented in this file.
IInputsnow includes:seedImage: Optional[Union[str, File]]
imageInferencenow processesinputs.seedImagevia_process_mediabefore sending the request
IVideoEditSettingsControlsnow uses flat fields for edit controls instead of nested per-control dataclasses:poseStrength: Optional[str]depthBlur: Optional[float]normalsAugmentation: Optional[float]trajectorySparsity: Optional[float]face: Optional[bool]
- Per-control video edit dataclasses superseded by the flat
IVideoEditSettingsControlsfields:IVideoEditPoseControlIVideoEditDepthControlIVideoEditNormalsControlIVideoEditTrajectoryControlIVideoEditFaceControl
ISettingsnow includes:preserveInputSize: Optional[bool]
- Note in README: A new official SDK is available at runware-python. It covers the full inference and utility surface with REST or WebSocket transports and gets all new features going forward. This library remains supported during the transition.
- Video editing/reframing helper dataclasses:
ISourcePositionIVideoEditPoseControlIVideoEditDepthControlIVideoEditNormalsControlIVideoEditTrajectoryControlIVideoEditFaceControlIVideoEditSettingsControlsIVideoEditSettings
- Text inference chat tools and message serialization:
ITextInferenceMessageTool(toolId,name,toolInput; serialized asid,name,input)ITextInferenceMessageextendsSerializableMixinwith optionalcontent,toolId, andtools;serialize()mapstoolId→idon the wire
ISettingsnow supports additional video parameters:edit: Optional[Union[IVideoEditSettings, Dict[str, Any]]]exrExport: Optional[bool]hdr: Optional[bool]loop: Optional[bool]sourcePosition: Optional[Union[ISourcePosition, Dict[str, Any]]]
- Added dict coercion in
ISettings.__post_init__for:edit→IVideoEditSettingssourcePosition→ISourcePosition
_buildTextRequest()now builds messages withITextInferenceMessage.serialize()instead ofdataclasses.asdict()ITextInferenceMessage.contentis nowOptional[str]instantiateDataclassnow skipsnullvalues from API payloads instead of passing them through as explicitNoneinstantiateDataclassfills missing requiredstrfields with""when the API leaves them out, so dataclasses likeIModelcan keepversion: strandarchitecture: stras required fields- Response dataclasses built via
instantiateDataclass/instantiateDataclassList(IModel,IImage,IVideo,I3d, etc.) use a compactreprthat omits unset,None, blank string, and emptyadditional_fieldsvalues
IDracoCompressiondataclass forsettings.dracoCompression:enabled: Optional[bool]level: Optional[int]quantizationPosition: Optional[int]quantizationNormal: Optional[int]quantizationTexCoord: Optional[int]
ISettingsnow includes:dracoCompression: Optional[Union[bool, IDracoCompression, Dict[str, Any]]]
IInputs.referenceImagesnow acceptsDict[str, Any]entries and coerces them toIInputReferenceinIInputs.__post_init__
IInputFontdataclass forinputs.fonts[]:url: Optional[str]text: Optional[str]
IInputsnow includes:fonts: Optional[List[Union[IInputFont, Dict[str, Any]]]]
IScoringRubricdataclass forsettings.scoringRubric[]:key: Optional[str]label: Optional[str]description: Optional[str]weight: Optional[float]passingScore: Optional[float]scoreGuidance: Optional[List[Union[IScoringRubricScoreGuidance, Dict[str, Any]]]]
IScoringRubricScoreGuidance(score,description)ISettingsnow includes:enhancePrompt: Optional[bool]backgroundMode: Optional[str]scoringPrompt: Optional[str]scoringRubric: Optional[List[Union[IScoringRubric, Dict[str, Any]]]]
ISettings.promptEnhancementrenamed toISettings.promptEnhance
IPromptEnhancementdataclass for nestedsettings.promptEnhancement:enabled: Optional[bool]temperature: Optional[float]topP: Optional[float]
IInputFrame.timestamp:Optional[float] = NoneISettingsnow includes:sourceAudioSync: Optional[bool] = None
- Structured prompt support for
imageInferencerequests viasettings.structuredPrompt:IStructuredPrompt(high_level_description,style_description,compositional_deconstruction)IStructuredPromptCompositionalDeconstruction(background,elements)IStructuredPromptElement(elementType,desc,text,bbox,color_palette); serializeselementTypeas APItypeIStructuredPromptStyleDescription(aesthetics,lighting,photo,medium,art_style,color_palette)ISettings.structuredPrompt: Optional[Union[IStructuredPrompt, Dict[str, Any]]]with dict coercion inISettings.__post_init__ISettings.copyrightDetection: Optional[bool]
- Image inference response fields on
IImage:status: Optional[str]structuredPrompt: Optional[Dict[str, Any]](returned as plain dict, matching API shape includingtypeon elements)
IImageInferenceOutputs.structuredPrompt: Optional[Dict[str, Any]]when the API nests it underoutputs
_requestVideonow preprocessesinputs.videothe same way asinputs.frameImages- Removed
createImageFromResponse
IMeshClusterdataclass forsettings.meshCluster:thresholdConeHalfAngleRad: Optional[float]refineIterations: Optional[int]globalIterations: Optional[int]smoothStrength: Optional[int]
ISettingsnow includes:textureFormat: Optional[str]alphaMode: Optional[str]remeshBand: Optional[float]remeshProject: Optional[float]meshCluster: Optional[Union[IMeshCluster, Dict[str, Any]]]
IUltralyticsnow includes:inpaintSize: Optional[int]
ISettingsnow includes:creativity: Optional[str]moodboards: Optional[List[Union[IMoodboard, Dict[str, Any]]]]preserveAudio: Optional[bool]
IMoodboarddataclass forsettings.moodboards[]entries:id: strstrength: Optional[float]
IInputReferencenow includes:role: Optional[str]
ISettingsnow includes:autoCrop: Optional[bool]chunkLength: Optional[int]minChunkLength: Optional[int]normalize: Optional[bool]normalizeLoudness: Optional[bool]latency: Optional[str]conditionOnPreviousChunks: Optional[bool]earlyStopThreshold: Optional[float]
IAudioReferenceVoice(audio,text) for reference-voice input onaudioInferenceIAudioInputsnow includes:referenceVoices: Optional[List[Union[IAudioReferenceVoice, Dict[str, Any]]]]
IAudioSpeech.voicesnow accepts voice model ID strings in addition toIAudioVoiceobjects
IAudioSpeech.volumetype changed fromOptional[int]toOptional[float]
IImageInference.outputTypenow supportsOptional[Union[IOutputType, List[IOutputType]]].- Image inference results now include
outputsonIImage:IImageInferenceOutputswithtextBlocks: Optional[List[IImageInferenceTextBlock]]IImageInferenceTextBlock(alignment,angle,color,fontAlternatives,fontName,fontSize,formatting,height,lineHeight,role,text,width,x,y)
ISettingsnow includes:fit: Optional[str]caption: Optional[bool]
IVideoSpeechSettingsnow includes:volume: Optional[float]
- Added support for taskType
training. - Added text inference cache support:
TextInferenceCacheScope = Literal["system", "system+history"]TextInferenceCacheTtl = Literal["5m", "1h"]ITextInferenceCachedataclass (scope,ttl) with request keycache
ITextInputsnow includes:documents: Optional[List[Union[str, File]]]
ITextInferenceToolnow supports:schema: Optional[Dict[str, Any]]- backward-compatible
input_schemaalias (serialized asschemawhenschemais not provided) - optional
toolType(serialized astype)
- Added
ITextInferenceToolChoicerequest serialization support:request_key = "toolChoice"toolType->typemapping inserialize()
ISettingsnow includes:search: Optional[bool] = NonevoicePrompt: Optional[str]safetyFilter: Optional[bool]cfgIntervalStart: Optional[float]cfgIntervalEnd: Optional[float]repaintMode: Optional[str]repaintStrength: Optional[float]
IAudioOutputFormatnow supports:ogg
toolChoicemoved fromISettingsto the rootITextInferencepayload:ITextInference.toolChoice: Optional[Union[ITextInferenceToolChoice, Dict[str, Any]]]_buildTextRequest()now includes root-leveltoolChoice
- Unified text-input media preprocessing in
runware/base.pyvia_processTextInputs()and applied it to both_requestText()and_requestTextStream(), so images/videos/documents are normalized consistently for sync/async/stream text requests. IVideoInference.speechnow accepts either:IVideoSpeechSettingsDict[str, Any](auto-coerced toIVideoSpeechSettingsin__post_init__)
- Added support for taskType
getTaskDetails. - Added
IVideoReferenceImagedataclass with:tag: Optional[str]refType: Optional[str]images: Optional[List[Union[str, File]]]audio: Optional[Union[str, File]]serialize()override that mapsrefType->typein outgoing payloads.
- Added
IVideoReferenceVideodataclass with:tag: Optional[str]refType: Optional[str]video: Optional[Union[str, File]]serialize()override that mapsrefType->typein outgoing payloads.
- Extended
IVideoInputsto support structured references:referenceImages: Optional[List[Union[str, File, IVideoReferenceImage]]]referenceVideos: Optional[List[Union[str, IVideoReferenceVideo]]]
- Added
process_media()inrunware/utils.pyas the canonical media normalization helper (supports local-file conversion and pass-through for URL/UUID/base64). - Added backward-compat normalization in
IVideoInputs.__post_init__:- dict inputs with
typeare accepted and internally mapped torefTypefor bothreferenceImagesandreferenceVideos.
- dict inputs with
ISettingsnow includes Meshy 6 / 3D controls:meshType: Optional[str]topology: Optional[str]decimation: Optional[int]symmetry: Optional[str]pose: Optional[str]removeLighting: Optional[bool]origin: Optional[str]moderation: Optional[bool]texturePrompt: Optional[str]imageEnhancement: Optional[bool]savePreRemeshedModel: Optional[bool]
I3dInputsnow includes:referenceImages: Optional[List[Union[str, File]]]
ISettingsnow includes:keyframe: Optional[int]
ISettingsnow includes additional3dInferencefields:faceCount: Optional[int]geometryOnly: Optional[bool]generateType: Optional[str]polygonType: Optional[str]
I3dInferencenow includes:negativePrompt: Optional[str]
I3dOutputFormatnow supports:OBJ
- Improved
SerializableMixin.serialize()to handle mixed list/tuple payloads by serializingSerializableMixinitems item-by-item (instead of requiring all items to be mixin instances). - Switched
runware/base.pymedia normalization flow to canonicalprocess_media()semantics (via_process_mediadelegation). - Kept
process_image()as a backward-compatible alias toprocess_media(). - Replaced
typeusage in video reference dataclasses withrefTypeto avoid reserved-name ambiguity while preserving API payload compatibility (typeis still sent on wire viaserialize()). I3dOutputFormatnow supports Meshy 6 target formats:GLB,OBJ,FBX,STL,USDZ,3MF(while keepingPLYfor compatibility).
ISettingsnow includes:syncMode: Optional[str]mode: Optional[str]emotion: Optional[str]activeSpeakerDetection: Optional[Union[IActiveSpeakerDetection, Dict[str, Any]]]occlusionDetection: Optional[bool]segments: Optional[List[Union[ISegment, Dict[str, Any]]]]tts: Optional[Union[ITTSSettings, Dict[str, Any]]]colorCorrection: Optional[bool]renderingSpeed: Optional[str]magicPrompt: Optional[str]background: Optional[str]
- Added
IActiveSpeakerDetection(autoDetect,frameNumber,coordinates,boundingBoxes) with validation forboundingBoxesentries (must benullor four numeric values). - Added
ISegmentfor Sync segments (startTime,endTime,audio,ref,audioStartTime,audioEndTime). - Added
ITTSSettingsfor Sync TTS tuning (stability,similarityBoost). - Added compatibility aliases:
ISyncSegment = ISegmentISyncActiveSpeakerDetection = IActiveSpeakerDetectionISyncSettings = ISyncProviderSettings
IAudioSpeechnow includes:voices: Optional[List[Union[IAudioVoice, Dict[str, Any]]]]
- Added
IAudioVoicefor multi-speaker TTS mapping:speaker: strvoice: str
IImageInferencenow includes:upscaleFactor: Optional[float]
- Updated
ISyncProviderSettingsto include Sync 3 fields:mode: Optional[str]emotion: Optional[str]activeSpeakerDetection: Optional[Union[IActiveSpeakerDetection, Dict[str, Any], bool]]occlusionDetection: Optional[bool]segments: Optional[List[Union[ISegment, Dict[str, Any]]]]
- Added post-init normalization for Sync settings so dict inputs are coerced into
IActiveSpeakerDetection,ISegment, andITTSSettingsobjects.
ISettingsnow includes:useOriginalAlpha: Optional[bool]material: Optional[str]polyCount: Optional[float]taPose: Optional[bool]boundingBox: Optional[List[int]]meshMode: Optional[str]addons: Optional[List[str]]hdTexture: Optional[bool]instrumental: Optional[bool]lyricsOptimizer: Optional[bool]
IAudioInferencenow includes:outputQuality: Optional[int]
ITextInputsnow includes:videos: Optional[List[Union[str, File]]]
IVideoInputsnow includes:referenceAudios: Optional[List[str]]
- Fixed
httpxversion dependency during installation insetup.py. setup.py:find_packagesexcludes the top-leveltestspackage and its subpackages.
- Streaming support for LLMs.
ISettingsnow includes:includePrefix: Optional[bool]audioTemperature: Optional[float]topK: Optional[int]
IAudioInputsnow includes:audios: Optional[List[str]]
ISettingsnow includes:imageAutoFix: Optional[bool]faceLimit: Optional[int]texture: Optional[bool]pbr: Optional[bool]textureSeed: Optional[int]textureAlignment: Optional[str]textureQuality: Optional[str]autoSize: Optional[bool]orientation: Optional[str]quad: Optional[bool]compress: Optional[str]smartLowPoly: Optional[bool]generateParts: Optional[bool]exportUv: Optional[bool]geometryQuality: Optional[str]editRegions: Optional[List[List[List[int]]]]sequential: Optional[bool]thinking: Optional[bool]colorPalette: Optional[List[Union[IColorPaletteEntry, Dict[str, Any]]]]style: Optional[str]thinking: Optional[str]multiClip: Optional[bool]voiceDescription: Optional[str]- Image upscale:
enhanceDetails,realism, and existing upscale tuning fields onISettings(steps,seed,CFGScale, prompts, scheduler, etc.)
I3dInputsnow includesimages: Optional[List[Union[str, File]]].IVideoInputs.audiosfor video inference.IImageUpscale:targetMegapixels, optionalupscaleFactor,deliveryMethod(default"sync");IImageUpscale.settingstyped asISettings.IUpscaleSettings: deprecated subclass ofISettings(deprecation warning on use)._upscaleGan: asyncdeliveryMethodhandling forIAsyncTaskResponse+ polling.- New dataclass
IColorPaletteEntry:hex: str,ratio: Optional[Union[str, float]]. IInputsnow includesimages: Optional[List[Union[str, File]]].
_pollResults:imageUpscale,vectorize, andimageBackgroundRemovalresolve toIImage(fixesgetResponsereturningIVideowithout image URLs)._upscaleGan: conditionalupscaleFactor/targetMegapixels; forwarddeliveryMethod.
- Relax
aiofilesandpython-dotenvpins to>=minimums insetup.pyandrequirements.txtso the package installs cleanly alongside environments that pin newer compatible releases.
- Added
runware/version.pyas the canonical__version__string;runware/__init__.pyimports it sofrom runware import __version__matches the package version. - WebSocket connections send additional headers on connect:
X-SDK-Name: pythonandX-SDK-Version: <__version__>(seerunware/server.py).
- Added
width: Optional[int],height: Optional[int], andfps: Optional[int]toIVideoUpscale. - Added
IElementsdataclass for video inferenceinputs.elements[]with:id: Optional[str]description: Optional[str]frontalImage: Optional[Union[str, File]]images: Optional[List[Union[str, File]]]videos: Optional[List[str]]voice: Optional[List[str]]tags: Optional[List[str]]
- Added
elements: Optional[List[Union[IElements, Dict[str, Any]]]]toIVideoInputs. IAudioOutputFormatextended withwav,mp3,pcm,opus,aac,flac(existingMP3retained).ISettings:maxNewTokens,transcript,xVectorOnlyfor reference-audio / ICL TTS flows.IAudioInputs:audio(reference audio URL or data URI).IAudioSpeech:language(e.g. input language for TTS).
- Updated
_requestVideoUpscale()to forwardwidth,height, andfpswhen provided. - Updated
IVideoInputs.__post_init__to coerceinputs.elementsdictionary items intoIElementsinstances.
- Added photoMaker as a nested object in imageInference using
IPhotoMakerSettings;IImageInference.photoMaker: Optional[Union[IPhotoMakerSettings, Dict[str, Any]]]. Nested settings use images/inputImages + style/strength. StandalonetaskType="photoMaker"remains a separate operation viaIPhotoMaker. - Added
IIpAdapter.guideImages,combineMethod,weightType,embedScaling,weightComposition;guideImageoptional; base supportsguideImageswithprocess_image. - Added
IEmbedding.weight: Optional[float]. - Added dict coercion in
IImageInference.post_initforphotoMaker,instantID,acePlusPlus,puLID,ultralytics,outpaint,refiner; list coercion for embeddings (dict->IEmbedding) and ipAdapters (dict->IIpAdapter). - Added
IInputReference.typeandIInputReference.strength(for sketch-style refs). - Added image inference support so
inputs.referenceImagescan beIInputReferenceitems; each image is run throughprocess_imagebefore send. - Added
IGoogleProviderSettings.safetyTolerance. - Added
bpm,keyScale,timeSignature,vocalLanguage,coverConditioningScale,repaintingStart, andrepaintingEndtoISettings. - Added
audio: Optional[str]toIAudioInputs. - Added
IGoogleProviderSettings.resizeMode.
IImageInference:refiner,outpaint,instantID,acePlusPlus,puLID,ultralytics,photoMakertyped asUnion[Type, Dict[str, Any]]; embeddings asList[Union[IEmbedding, Dict[str, Any]]]; ipAdapters asList[Union[IIpAdapter, Dict[str, Any]]].
IVectorize:width,height,positivePrompt,providerSettings(optional).IVectorize.inputsoptional (prompt-only vectorize e.g. recraft:v4@vector).VectorizeProviderSettingstype alias (IRecraftProviderSettings) in types._processVectorizeInputsand_buildVectorizeRequestin base (vectorize follows video/3D flow).- Single
_addProviderSettings(request_object, payload)for image, image background removal, image upscale, vectorize, video, audio, text (replaces_addImageProviderSettings,_addAudioProviderSettings,_addTextProviderSettings). - Added
post_inittoIAudioInferencedataclass forspeech=Optional[Union[IAudioSpeech, Dict[str, Any]]]. - Added
textNormalization: Optional[bool] = NonetoISettingsdataclass. - Image
IAdvancedFeatures:layerDiffuse,hiresFix,watermark(IWatermark), andregionalPrompting(IRegionalPromptingwithregions:List[IRegion]). - Video
IVideoAdvancedFeatures:IWatermark(text/image, position, opacity, colors) andwatermarkfield. - Serializable advanced features:
IFluxKontext,IRegion,IRegionalPrompting,IWatermark,IAdvancedFeatures, andIVideoAdvancedFeaturesuseSerializableMixinfor request serialization. - Added
avatar: Optional[str],background: Optional[str]toIVideoInputs. - Added
speed: Optional[float],pitch: Optional[float],language: Optional[str]toIVideoSpeechSettings. - Added
expressiveness: Optional[str],removeBackground: Optional[bool],backgroundColor: Optional[str]toISettings.
- Vectorize:
inputsresolved viaprocess_imagewhen present; optional and added with_addOptionalField. _addProviderSettingspayload type:Union[IImageInference, IImageBackgroundRemoval, IImageUpscale, IVectorize, IVideoInference, IAudioInference, ITextInference].- Request wiring: Image/video/audio builders now rely on
_addOptionalBuiltInDataTypesFields()instead of hardcoded optional field lists, ensuring fields likeaccelerationandwebhookURLare always forwarded when set.
- Replace polling with asyncio.Future for O(1) message routing via
_pending_operationsHashMap - Add semaphore to limit concurrent requests (default 15, env
RUNWARE_MAX_CONCURRENT_REQUESTS) - Add jitter on reconnect to prevent thundering herd
- Increase
PING_TIMEOUT_DURATIONfrom 10s to 30s for stability - Graceful cancellation of pending operations on disconnect
- Added
post_inittoIImageInference,IImageCaption,IImageUpscale,IVideoInference,I3dInference,IAudioInference,IVideoBackgroundRemoval - Added
promptExtend: Optional[bool]toISettings - Added
IBytedanceProviderSettings.optimizePromptMode: Optional[str] - Added
settingstoIVideoInferencedataclass - Added
draft: Optional[bool],audio: Optional[bool], andpromptUpsampling: Optional[bool]toISettingsdataclass - Added
post_inittoISettingsdataclass
- Added
IRGBdataclass (rgb: List[int]) with validation (exactly 3 elements, each 0–255) - Added
IRecraftProviderSettingswithstyleId: Optional[str],colors: Optional[List[IRGB]],backgroundColor: Optional[IRGB]; added asImageProviderSettings. - Added
ISettings.lyrics: Optional[str]andISettings.guidanceType: Optional[str]. - Added
negativePrompt,seed,steps,CFGScale, andsettingstoIAudioInferencedataclass. - Added
IAudioSpeechdataclass (text,voice,speed,volume,pitch,emotion,tone: Optional[List[str]]). - Added
channels: Optional[int]toIAudioSettings. - Added
speech: Optional[IAudioSpeech]andsettings: Optional[ISettings]toIAudioInference. - Added
languageBoost: Optional[str]andturbo: Optional[bool]toISettings. - Added
edit,color,lightDirection,lightType,season(allOptional[str]) toIBriaProviderSettings.
- Added
IKlingMultiPrompt: new dataclass withprompt: strandduration: floatfor Kling multiPrompt payloads.
fileToBase64(): allowapplication/octet-streamas MIME type for.glband.plyfiles when MIME cannot be guessed.- Recursive serialization in
SerializableMixin.serialize(): replaced flatasdict+ None filter with a recursive implementation that:- Skips
Noneand keys starting with_ - Recursively serializes nested
SerializableMixininstances - Serializes lists/tuples of
SerializableMixinas lists of dicts (e.g. formultiPromptand other list payloads).
- Skips
- Added
ISparseStructure,IShapeSlat,ITexSlat(guidanceStrength, guidanceRescale, steps, rescaleT). - Added
I3dInference.settings: Optional[ISettings]andoutputQuality: Optional[int]. - Added
I3dInputs.meshFile: Optional[Union[str, File]].
- Extended
ISettingswith 3D fields: textureSize, decimationTarget, remesh, resolution, sparseStructure, shapeSlat, texSlat.
- Added support for textInference task type (TEXT_INFERENCE in ETaskType enum)
- Added
ITextInferenceMessagewith role and content for chat messages - Added
ITextInferenceUsagefor token usage (promptTokens, completionTokens, totalTokens, thinkingTokens) - Added
IGoogleTextProviderSettingswith thinkingLevel for Gemini - Added
TextProviderSettingstype alias for text inference provider settings - Added
ITextInferencefor requests (model, messages, taskUUID, deliveryMethod, maxTokens, temperature, topP, topK, seed, stopSequences, includeCost, providerSettings) - Added
ITextfor responses (taskType, taskUUID, text, finishReason, usage, cost, status) - Added
textInference()to Runware - Added
_buildTextRequest,_requestText,_handleInitialTextResponsein base - Added
_addTextProviderSettingsfor provider settings (matching image/video/audio pattern) - Added
getResponse()support forList[IText]when polling textInference tasks - Added
TEXT_INITIAL_TIMEOUTfor async delivery (configurable via RUNWARE_TEXT_INITIAL_TIMEOUT) - Added
TEXT_POLLING_DELAYfor polling cadence (configurable via RUNWARE_TEXT_POLLING_DELAY) - Added
IVideoInference.scheduler: Optional[str] = None
- Enabled async delivery for text inference (returns IAsyncTaskResponse and uses getResponse() for polling)
- Added support for "3dInference" task type
- Added
I3dInputsdataclass with image and mask parameters for 3D inference inputs - Added
I3dOutputFormattype: Literal["GLB", "PLY"] - Added
I3dInferencedataclass for 3D inference requests (model, positivePrompt, seed, inputs, outputFormat, etc.) - Added
IObjectdataclass with uuid and url for 3D output files - Added
I3dOutputdataclass withfiles: Optional[List[IObject]] = Nonefor 3D output files in responses - Added
I3ddataclass for 3D inference responses (taskType, taskUUID, cost, status, seed, outputs) - Added
inference3d()method to Runware for 3D inference - Added
getResponse()support forList[I3d]when polling 3dInference tasks - Added
_handleInitial3dResponse,_process3dInputs,_build3dRequest,_request3din base - Added
IUltralyticsdataclass with the following parameters:maskBlur: Optional[int]maskPadding: Optional[int]confidence: Optional[float]positivePrompt: Optional[str]negativePrompt: Optional[str]steps: Optional[int]CFGScale: Optional[float]strength: Optional[float]
- Added
IImageInference.ultralytics: Optional[IUltralytics] - Added
quality: Optional[str] = NonetoISettings - Added
audio: Optional[bool] = NonetoIViduProviderSettings
- Split
IOutputinto media-specific output types:IOutput(video: draftId, videoId) andI3dOutput(3D: files)
- Added
IOutputdataclass with the following parameters:draftId: Optional[str] = NonevideoId: Optional[str] = None
- Added
IVideo.outputs: Optional[IOutput] = Noneto support draft ID in video responses - Added
IVideoInputs.draftId: Optional[str] = Nonefor passing draft task ID in video inference inputs for bytedance:seedance@1.5-pro - Added
IVideoInputs.videoId: Optional[str] = Nonefor passing video ID in video inference inputs for openai:3@1 - Added
IBytedanceProviderSettings.draft: Optional[bool] = Noneto enable draft mode for Seedance video generation - Added
IInputs.mask: Optional[Union[str, File]] = None - Added
ISourcefulProviderSettingswith the following parameters:transparency: Optional[bool] = NoneenhancePrompt: Optional[bool] = NonefontInputs: Optional[List[Dict[str, Any]]] = None
- Added
IInputs.superResolutionReferences: Optional[List[Union[str, File]]] = Nonefor super resolution guidance in image-to-image inference
- Enhanced
instantiateDataclass()function to automatically handle nested dataclasses
- Updated
IBriaProviderSettings.preserveAudiodefault fromOptional[bool] = TruetoNone - Updated
IBriaProviderSettings.autoTrimdefault fromOptional[bool] = FalsetoNone
- Added
taskUUIDattribute toIUploadModelBaseTypeto allow passingtaskUUIDfrom user inmodelUpload()method
- Added
_retry_with_reconnect()method that wraps all public API methods for automatic reconnection on authentication errors (up to 10 retries) - Added
MAX_RETRY_ATTEMPTSconstant inrunware/utils.pyfor retry mechanism configuration - Added
IMireloProviderSettingswithstartOffset: Optional[int] = Noneparameter - Added
ISettings.layers: Optional[int] = Noneparameter - Added
ISettings.trueCFGScale: Optional[float] = Noneparameter - Added
IAudio.videoUUID: Optional[str] = Nonefield - Added
IAudio.videoURL: Optional[str] = Nonefield - Added
IAudio.seed: Optional[int] = Nonefield
- Fixed duplicate heartbeat tasks by cancelling existing task before creating new one in
runware/server.py - Fixed connection loss detection during request waits with session UUID tracking
- Fixed
conflictTaskUUIDerror handling to extracttaskTypeanddeliveryMethodfrom error context instead of relying on global message state
- Refactored retry logic: Removed redundant
asyncRetrycalls from 9 methods and them wrapped with_retry_with_reconnect
- Added
MODEL_UPLOAD_TIMEOUTconstant inrunware/utils.pywith 15-minute default (900000ms) for large model uploads - Added
RUNWARE_MODEL_UPLOAD_TIMEOUTenvironment variable support for configuring model upload timeout
- Updated
_modelUpload()inrunware/base.pyto useMODEL_UPLOAD_TIMEOUTinstead of general timeout to prevent timeouts during large LoRA model uploads
- Added
IWanAnimatedataclass with the following parameters:mode: Optional[str] = NoneretargetPose: Optional[bool] = NoneprevSegCondFrames: Optional[int] = None
- Added
VideoAdvancedFeatureTypesunion type:VideoAdvancedFeatureTypes = IWanAnimate - Updated
IVideoAdvancedFeaturesto supportadvancedFeature: Optional[VideoAdvancedFeatureTypes] = Nonefor incorporating WanAnimate features - Added
IVideoInputs.referenceVoices: Optional[List[str]] = None - Added
IKlingAIProviderSettings.characterOrientation: Optional[str] = None
- Fixed NoneType error when initial requests timeout by returning
IAsyncTaskResponseobject instead of processing None values - Added error handling in
_handleInitialVideoResponse,_handleInitialImageResponse, and_handleInitialAudioResponseto handle empty/None initial responses - Added validation in
instantiateDataclassList()method to raise descriptive error whendata_listis None or empty - Improved error messages for timeout scenarios with detailed context including TaskUUID and delivery method
- Refactored serialization: Removed
BaseRequestFieldclass and movedto_request_dict()method toSerializableMixin - Updated multiple dataclasses to inherit from
SerializableMixininstead ofBaseRequestField:IAcceleratorOptionsISafetyISettingsIInputsIVideoInputsIAudioSettingsIVideoSpeechSettingsIAudioInputs
- Updated
IVideoAdvancedFeatures.serialize()method to properly handleadvancedFeatureserialization usingto_request_dict()
- Added
audioparameter toIBytedanceProviderSettings(providerSettings.bytedance.audio) - Added new parameters to
IBriaProviderSettings:preserveAudioautoTrim
- Added
IBriaMaskSettingswith the following parameters:foregroundpromptframeIndexkeyPoints
- Added validation in
_pollResults(): ifnumber_resultsis None, thennumber_results = 1
- Added
IBlackForestLabsProviderSettingswithsafetyToleranceparameter - Added new
ISettingsclass with the following parameters:temperaturesystemPrompttopP
- Added
searchparameter toIGoogleProviderSettings - Added new parameters to
IAlibabaProviderSettings:promptExtendaudioshotType
- Updated
IInputs.referencesdefault value fromfield(default_factory=list)toNone - Updated
IVideoInputs.referencesdefault value fromfield(default_factory=list)toNone
- Added provider setting for Alibaba:
alibaba.promptEnhancer - Added
IAudioInputandISpeechInputtoIVideoInputsfor video inference - Added
ISyncProviderSettingsto video inference - Added
soundparameter toIKlingAIProviderSettings(providerSetting.Kling.sound)
- Updated
referenceImagestype fromOptional[List[IInputReference]]toOptional[List[Union[str, File, IInputReference]]]inIInputs - Renamed
IPixverseSpeechSettingstoIVideoSpeechSettingswith backward compatibility - Made
numberResultsoptional invideoInference