vendor_fabric.meshy.connector¶
Meshy AI Connector - HTTP client for Meshy AI 3D generation API.
This connector provides Python access to Meshy AI’s 3D asset generation API, following the shared connector patterns used across vendor-fabric.
Module Contents¶
Classes¶
Meshy AI 3D generation connector. |
API¶
- class vendor_fabric.meshy.connector.MeshyConnector(api_key: str | None = None, base_url: str | None = None, timeout: float = 300.0, **kwargs: Any)¶
Bases:
vendor_fabric.base.ConnectorBaseMeshy AI 3D generation connector.
Provides access to text-to-3D, image-to-3D, rigging, animation, and retexturing.
Initialization
Initialize the connector.
Args: api_key: API key (overrides environment variable) base_url: Base URL (overrides class default) timeout: HTTP timeout in seconds logger: Logger instance **kwargs: Passed to InputProvider
- API_KEY_ENV = 'MESHY_API_KEY'¶
- BASE_URL = 'https://api.meshy.ai'¶
- text3d_generate(prompt: str, art_style: str = 'realistic', negative_prompt: str = '', target_polycount: int = 30000, enable_pbr: bool = True, wait: bool = True) extended_data.containers.ExtendedDict | extended_data.containers.ExtendedString¶
Generate a 3D model from text description.
- image3d_generate(image_url: str, topology: str = 'triangle', target_polycount: int = 15000, enable_pbr: bool = True, wait: bool = True) extended_data.containers.ExtendedDict | extended_data.containers.ExtendedString¶
Generate a 3D model from an image.
- rig_model(model_id: str, wait: bool = True) extended_data.containers.ExtendedDict | extended_data.containers.ExtendedString¶
Add skeleton/rig to a static 3D model.
- apply_animation(model_id: str, animation_id: int, wait: bool = True) extended_data.containers.ExtendedDict | extended_data.containers.ExtendedString¶
Apply animation to a rigged model.
- retexture_model(model_id: str, texture_prompt: str, enable_pbr: bool = True, wait: bool = True) extended_data.containers.ExtendedDict | extended_data.containers.ExtendedString¶
Apply new textures to an existing model.
- CONNECTOR_CATEGORY: ClassVar[str] = 'external'¶
- CONNECTOR_CAPABILITIES: ClassVar[tuple[str, ...]] = ()¶
- TIMEOUT: ClassVar[float] = 300.0¶
- MIN_REQUEST_INTERVAL: ClassVar[float] = 0.0¶
- MAX_RETRIES: ClassVar[int] = 5¶
- property api_key: str¶
- property client: httpx.Client¶
- close() None¶
- request(method: str, endpoint: str, *, headers: dict[str, str] | None = None, **kwargs: Any) httpx.Response¶
- decode_response(response: httpx.Response, *, suffix: str | None = None, as_extended: bool = True) Any¶
- decode_response_file(response: httpx.Response, *, source: str | None = None, suffix: str | None = None, as_extended: bool = True, metadata: collections.abc.Mapping[str, Any] | None = None) extended_data.io.DataFile¶
- extend_result(value: Any) Any¶
- request_data(method: str, endpoint: str, *, headers: dict[str, str] | None = None, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- request_data_file(method: str, endpoint: str, *, headers: dict[str, str] | None = None, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.io.DataFile¶
- request_workflow(method: str, endpoint: str, *, headers: dict[str, str] | None = None, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- get(endpoint: str, **kwargs: Any) httpx.Response¶
- get_data(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- get_workflow(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- post(endpoint: str, **kwargs: Any) httpx.Response¶
- post_data(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- post_workflow(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- put(endpoint: str, **kwargs: Any) httpx.Response¶
- put_data(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- put_workflow(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- delete(endpoint: str, **kwargs: Any) httpx.Response¶
- delete_data(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- delete_workflow(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- patch(endpoint: str, **kwargs: Any) httpx.Response¶
- patch_data(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) Any¶
- patch_workflow(endpoint: str, *, suffix: str | None = None, as_extended: bool = True, **kwargs: Any) extended_data.workflows.DataWorkflow¶
- download(url: str, output_path: str) int¶
- vendor_capabilities: ClassVar[dict[str, vendor_fabric.capabilities.CapabilitySpec]] = None¶
- vendor_capability_methods: ClassVar[dict[str, str]] = None¶
- get_input(k: str, default: Any | None = None, required: bool = False, is_bool: bool = False, is_integer: bool = False, is_float: bool = False, is_path: bool = False, is_datetime: bool = False, as_extended: bool = False) Any¶
- decode_input(k: str, default: Any | None = None, required: bool = False, decode_from_json: bool = False, decode_from_yaml: bool = False, decode_from_base64: bool = False, allow_none: bool = True, as_extended: bool = False) Any¶
- freeze_inputs() extended_data.containers.mappings.ExtendedDict¶
- thaw_inputs() extended_data.containers.mappings.ExtendedDict¶
- snapshot_inputs(*, frozen: bool = False) extended_data.containers.mappings.ExtendedDict¶
- replace_inputs(new_inputs: collections.abc.Mapping[str, Any] | None, *, clear_frozen: bool = True) extended_data.containers.mappings.ExtendedDict¶
- merge_inputs(new_inputs: collections.abc.Mapping[str, Any] | None) extended_data.containers.mappings.ExtendedDict¶
- shift_inputs() extended_data.containers.mappings.ExtendedDict¶