# Morph + Weaviate

<!-- Note: for images, use https://docs.google.com/presentation/d/15opIcJuaIjEEcs_1Zm8B6pccox2p7_MHSjCnRv4dPfU/edit?usp=sharing -->

[Morph](https://morphllm.com/) serves code and text embedding models behind an OpenAI-compatible API. Weaviate integrates with Morph's embedding endpoint so you can vectorize and search data using Morph-hosted models directly from your Weaviate instance.

:::callout{intent="warning" title="Morph lists the Embedding API as legacy"}
Morph's own documentation labels the Embedding API as legacy and planned for deprecation. Check the current status in [Morph's documentation](https://docs.morphllm.com/) before you build on this integration.
:::

## Integrations with Morph

### Embedding models for vector search

![Embedding integration illustration](/assets/docs/weaviate/model-providers/_includes/integration_morph_embedding.png)

Morph exposes embedding models over an OpenAI-compatible `/v1/embeddings` API at `https://api.morphllm.com`.

[Weaviate integrates with Morph's embedding models](morph-embeddings.md) through the `text2vec-morph` vectorizer module. Configure a vector index to use a Morph model and Weaviate generates embeddings for imports, vector searches, and hybrid searches automatically.

[Morph embedding integration page](morph-embeddings.md)

## Summary

This integration lets you use Morph's hosted embedding models from Weaviate without managing inference infrastructure yourself.

## Get started

Generate an API key in the [Morph dashboard](https://morphllm.com/), then supply it to Weaviate through the `MORPH_APIKEY` environment variable or the `X-Openai-Api-Key` request header. The header name is shared with the OpenAI integration, because Morph requests are built by the same OpenAI-compatible client inside Weaviate. Then see the embedding integration page:

- [Text Embeddings](morph-embeddings.md)

## Questions and feedback

Have a question or feedback? Here's how to reach us.

::::card-grid
:::card{title="Community Forum" href="https://forum.weaviate.io/c/support" icon="messages-square"}
Ask questions and connect with other developers on our **Community forum**.
:::

:::card{title="Support" href="/guides/support-overview" icon="life-buoy"}
Weaviate Cloud user or customer? Find the right channel on the **Support page**.
:::
::::

## Related pages

- [Agents](./agents-index.md)
- [AI-assisted Weaviate code generation](./ai-assisted-vibe-coding-index.md)
- [APIs](./apis-index.md)
- [Authorization and authentication](./authorization-and-authentication-index.md)
- [Benchmarks](./benchmarks-index.md)
- [Best practices](./best-practices-index.md)
- [Client libraries](./clients-index.md)
- [Client Libraries / SDKs](./client-libraries-index.md)
- [Cloud](./cloud-index.md)
- [Cloud account management](./cloud-account-management-index.md)

# Agent Instructions

This portal answers questions programmatically. To receive a synthesized,
source-cited answer instead of crawling page by page, append the `?ask=`
query parameter to any page URL on this site:

    /guides/quickstart?ask=how+do+I+authenticate

Optional parameters:

- `&goal=<what-you-are-trying-to-do>` steers the answer toward your
  objective (e.g. `&goal=write+a+python+client`).
- `&version=<label>` scopes the answer to a mounted version when the
  portal publishes more than one.

The response is `text/markdown`: the answer followed by a `# Sources` list
of the portal pages it was grounded in. Status codes are the contract:

- `200` — the answer; `402` — the portal owner’s plan or answer credits are
  exhausted (surface this to your operator; do NOT retry); `429` — you are
  rate-limited; back off for the `Retry-After` seconds; `503` — the answer
  lane is temporarily unavailable; fall back to crawling the `.md` pages.

For the full corpus map read `llms.txt` at the site root; for the tool
surface (search + page fetch as MCP tools) see `/mcp`.
