[Weaviate Cloud (WCD)](/go/console?utm_content=cloud) offers multiple options on how to connect to your cluster:

- **[Connect with APIs](#connect-with-an-api-programmatically)**:
  - Use [client libraries](../client-libraries/index.md) to connect to a Weaviate Cloud instance.
  - Use a tool, such as cURL, to connect to the [REST API](/weaviate/api/rest).
- **[Open the Weaviate Cloud console](#open-the-weaviate-cloud-console)**:
  - Login to manage your clusters, users, and billing.
  - Use built-in tools to work with your data.

## Connect with an API programmatically

The guide below applies to clusters that have [RBAC (Role-Based Access Control)](../authorization-and-authentication/weaviate-configuration-rbac.md) enabled. New clusters with Weaviate version `v1.30` (or later) have RBAC enabled by default.

### Retrieve your API key and REST endpoint

When connecting to a Weaviate Cloud cluster, you need an API key and the REST endpoint URL for authentication.

If you don't have an existing API key, you'll need to create one. Follow these steps to find the API keys section and create a new key if necessary:

[Embedded content embed](https://app.guideflow.com/embed/ok8l954sxr)

:::accordion{title="Steps to create a new API key"}
1. Open the [Weaviate Cloud console](/go/console?utm_content=cloud) and [select your cluster](status.md#select-a-cluster).
2. Navigate to the `API Keys` section, found in the `Cluster details` panel.
3. If you need a new API key, click the `New key` button.
4. In the `Create API Key` form, provide a descriptive name for your key.
5. Choose the role for this API key. You can either select an existing role like `admin` or `viewer`, or [create a new role](authorization.md) with specific permissions.
6. Click the `Create key` button.
7. **Important:** This is the only time your API key will be displayed. Make sure to copy it or download it and store it in a secure location immediately after creation. You will not be able to retrieve the full key again.
:::

:::accordion{title="Steps to retrieve your REST Endpoint"}
1. On the `Cluster details` page or within the API Keys section, find the `REST Endpoint` URL.
2. Copy the `REST Endpoint` URL and store it securely.
:::

:::callout{intent="note" title="REST Endpoint vs gRPC Endpoint"}
When using an official Weaviate [client library](../client-libraries/index.md), you need to authenticate using the `REST Endpoint` and your API key. The client will infer the gRPC endpoint automatically and use the more performant gRPC protocol when available.

To reach the [gRPC-Web interface](../apis/grpc.md#grpc-web), use the `REST Endpoint` URL, not the `gRPC Endpoint` URL, because gRPC-Web is served on the REST port.
:::

### Environment variables

Do not hard-code your API key and Weaviate URL in your client code. Consider passing them as environment variables or using a similar secure coding technique.

```bash
export WEAVIATE_URL="replaceThisWithYourRESTEndpointURL"
export WEAVIATE_API_KEY="replaceThisWithYourAPIKey"
```

### Connection example

To connect, use the `REST Endpoint` URL and the `Admin` API key:

:::::tabs{sync="languages"}
:::tab{title="Python"}
```python title="quickstart_check_readiness.py" {9-12}
import weaviate
from weaviate.classes.init import Auth
import os

# Best practice: store your credentials in environment variables
weaviate_url = os.environ["WEAVIATE_URL"]
weaviate_api_key = os.environ["WEAVIATE_API_KEY"]

client = weaviate.connect_to_weaviate_cloud(
    cluster_url=weaviate_url,
    auth_credentials=Auth.api_key(weaviate_api_key),
)

print(client.is_ready())  # Should print: `True`

client.close()  # Free up resources
```
:::

:::tab{title="JavaScript/TypeScript"}
```typescript title="quickstart_check_readiness.ts" {7-12}
import weaviate, { WeaviateClient } from 'weaviate-client';

// Best practice: store your credentials in environment variables
const weaviateUrl = process.env.WEAVIATE_URL as string;
const weaviateApiKey = process.env.WEAVIATE_API_KEY as string;

const client: WeaviateClient = await weaviate.connectToWeaviateCloud(
  weaviateUrl, // Replace with your Weaviate Cloud URL
  {
    authCredentials: new weaviate.ApiKey(weaviateApiKey), // Replace with your Weaviate Cloud API key
  }
);

var clientReadiness = await client.isReady();
console.log(clientReadiness); // Should return `true`

client.close(); // Close the client connection
```
:::

::::tab{title="Go"}
```goraw title="quickstart/1_check_readiness/main.go" {17-23}
// Set these environment variables
// WEAVIATE_HOSTNAME      your Weaviate instance hostname
// WEAVIATE_API_KEY      your Weaviate instance API key

package main

import (
  "context"
  "fmt"
  "os"

  "github.com/weaviate/weaviate-go-client/v5/weaviate"
  "github.com/weaviate/weaviate-go-client/v5/weaviate/auth"
)

func main() {
  cfg := weaviate.Config{
    Host:       os.Getenv("WEAVIATE_HOSTNAME"),
    Scheme:     "https",
    AuthConfig: auth.ApiKey{Value: os.Getenv("WEAVIATE_API_KEY")},
  }

  client, err := weaviate.NewClient(cfg)
  if err != nil {
    fmt.Println(err)
  }

  // Check the connection
  ready, err := client.Misc().ReadyChecker().Do(context.Background())
  if err != nil {
    panic(err)
  }
  fmt.Printf("%v", ready)
}
```

:::callout{intent="warning"}
This client uses the `hostname` parameter (without the `https` scheme) instead of a complete `URL`.
:::
::::

:::tab{title="Java"}
```java {9}
// Best practice: store your credentials in environment variables
String weaviateUrl = System.getenv("WEAVIATE_URL");
String weaviateApiKey = System.getenv("WEAVIATE_API_KEY");

WeaviateClient client = WeaviateClient.connectToWeaviateCloud(
    weaviateUrl, // Replace with your Weaviate Cloud URL
    weaviateApiKey // Replace with your Weaviate Cloud key
);
System.out.println(client.isReady()); // Should print: `True`

client.close(); // Free up resources
```
:::

:::tab{title="C#"}
```csharp {7-9}
// Best practice: store your credentials in environment variables
string weaviateUrl = Environment.GetEnvironmentVariable("WEAVIATE_URL");
string weaviateApiKey = Environment.GetEnvironmentVariable("WEAVIATE_API_KEY");

WeaviateClient client = await Connect.Cloud(weaviateUrl, weaviateApiKey);

// GetMeta returns server info. A successful call indicates readiness.
var meta = await client.IsReady();
Console.WriteLine(meta);
```
:::

:::tab{title="Curl"}
```bash
# Best practice: store your credentials in environment variables
# export WEAVIATE_URL="YOUR_INSTANCE_URL"  # Your Weaviate instance URL
# export WEAVIATE_API_KEY="YOUR_API_KEY"   # Your Weaviate instance API key

curl -w "\nResponse code: %{http_code}\n" \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" \
  $WEAVIATE_URL/v1/.well-known/ready

# You should see "Response code: 200" if the instance is ready
```
:::
:::::

## Open the Weaviate Cloud console

The Weaviate Cloud console uses your email address and password for authentication. You create the password when you create your Weaviate Cloud account.

To connect to the console, follow these steps:

1. Open the [Weaviate Cloud login page](/go/console?utm_content=cloud) in a browser.
2. Enter your email address and click `Continue`.
3. Enter your password and click `Login`.

Once you are logged in, the console has built-in tools for working with your data:

- The [Explorer tool](../other-tools/explorer-tool.md) browses a collection and runs keyword, semantic, hybrid, and aggregation searches, without writing a query.
- The [Collections tool](../manage-collections/tools-collections-tool.md) creates, configures, and deletes collections.
- The [Query Agent](../cloud-agents/query-agent.md) answers natural language questions about your data.

## Troubleshooting

This section has solutions for some common problems. For additional help, [contact support](#support).

### Reset your password

To reset your Weaviate Cloud password, follow these steps:

1. Go to the Weaviate Cloud [login page](/go/console?utm_content=cloud).
2. Click the login button.
3. Click `Forgot Password`.
4. Check your email account for a password reset email from Weaviate Cloud.
5. Click the link and follow the instructions to reset your password. The link is only valid for five minutes.

### Connection timeouts

The new Python client uses the gRPC protocol to connect to Weaviate Cloud. The gRPC protocol improves query performance, but the protocol is sensitive to network speeds. If you run into timeout errors, increase the connection timeout value in your connection code.

:::code-group{sync="languages"}
```python title="Python"
from weaviate.classes.init import AdditionalConfig, Timeout, Auth
import weaviate

# Set these environment variables
URL = os.getenv("WEAVIATE_URL")
APIKEY = os.getenv("WEAVIATE_API_KEY")

# Connect to Weaviate Cloud
client = weaviate.connect_to_weaviate_cloud(
    cluster_url=URL,
    auth_credentials=Auth.api_key(APIKEY),
    additional_config=AdditionalConfig(timeout=Timeout(init=10)),
)

# Check connection
client.is_ready()
```
:::

Alternatively, leave the default timeout values, but skip the initial connection checks.

:::code-group{sync="languages"}
```python title="Python"
import weaviate
from weaviate.classes.init import Auth

# Set these environment variables
URL = os.getenv("WEAVIATE_URL")
APIKEY = os.getenv("WEAVIATE_API_KEY")

# Connect to Weaviate Cloud
client = weaviate.connect_to_weaviate_cloud(
    cluster_url=URL,
    auth_credentials=Auth.api_key(APIKEY),
    skip_init_checks=True,
)

# Check connection
client.is_ready()
```
:::

### gRPC health check error

**Problem**: gRPC returns a health check error after you update a Shared Cloud cluster.

```
weaviate.exceptions.WeaviateGRPCUnavailableError: gRPC health check could not be completed.
```

**Solution**: Verify the cluster URL is correct and update the URL if needed.

When a Shared Cloud cluster is updated, the cluster URL may change slightly. Weaviate Cloud still routes the old URL, so some connections continue to work. However, the new gRPC URL and the old HTTP URL are different, so connections that require gRPC fail.

To check the URLs, open the Weaviate Cloud Console and check the details panel for your cluster. If you prefix Cluster URL with `grpc-`, the Cluster URL and the Cluster gRPC URL should match. Compare the Cluster URL with the connection URL in your application. The old URL and the new URL are similar, but the new one may have an extra subdomain such as `.c0.region`. If the URLs are different, update your application's connection code to use the new Cluster URL.

## More resources

To authenticate with a Weaviate client library, see the following:

- [Python](../client-libraries/python.md)
- [TypeScript/JavaScript](../client-libraries/typescript.md)
- [Go](../client-libraries/go.md#authentication)
- [Java](../client-libraries/java.md)

## Support

If you use **Weaviate Cloud** (Database cluster(s) or Weaviate product in the cloud) or have a self-hosted support package, open a ticket in the [Support Portal](https://support.weaviate.io) or email [Weaviate support](mailto\:support@weaviate.io) directly. To add a [support plan](https://weaviate.io/support-plans), contact [Weaviate sales](https://weaviate.io/pricing#contact-sales).

Use the **Support Portal** for direct help from the Weaviate team: open and track tickets, and we'll respond in line with your support plan. The **Community Forum** is open to everyone, and a great place to ask questions, get help with your cluster, and connect with other developers. For all the ways to get help, see the [Support overview](../support/overview.md).

::::card-grid
:::card{title="Weaviate Support Portal" href="https://support.weaviate.io" icon="headset"}
Direct help from the Weaviate team for Weaviate Cloud. Open and track tickets in the **Support Portal**.
:::

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

## 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`.
