> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vzaps.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Instâncias e billing

> Criar, listar, atualizar instâncias e fluxo de billing no SDK Java

Use `client.instances()` e `client.auth()` para autenticação da conta, ciclo de vida da instância e billing.

Para sessão WhatsApp, veja [Sessão](/pt-BR/sdk/java/session). Para chats, veja [Chats](/pt-BR/sdk/java/chats). Para envio de mensagens, veja [Mensagens](/pt-BR/sdk/java/messages).

Passe `InstanceRequestOptions` com `instanceToken` nas rotas escopadas à instância.

## Auth

### `client.auth().getAccessToken()`

```java theme={null}
String token = client.auth().getAccessToken();
System.out.println(token.substring(0, Math.min(16, token.length())));
```

**Retorno:** `string` com o JWT de acesso (`accessToken` de `POST /token`).

## Instâncias e billing

### `client.instances().create(request)`

```java theme={null}
JsonNode created = client.instances().create(
    InstanceCreateRequest.builder()
        .name("Atendimento")
        .webhook("https://example.com/webhooks/vzaps")
        .eventsSubscribe(List.of("Message", "Connected", "Disconnected"))
        .build());
```

**Retorno:** `InstancePublicCreateResponse` — `id`, `name`, `token`, `url`, `webhook`, `events_subscribe`, `status`, `created_at`, `updated_at`.

### `client.instances().list(request)`

```java theme={null}
JsonNode instances = client.instances().list(
    InstanceListRequest.builder().page(1).pageSize(20).search("atendimento").build());
```

**Retorno:** pagina `{ page, size, total, total_pages, content[], summary }`. Cada item de `content` segue o resumo publico da instancia (`id`, `name`, `status`, etc.).

### `client.instances().get(instanceId)`

```java theme={null}
JsonNode instance = client.instances().get("VZ...");
```

**Retorno:** mesmo formato resumido de um item de `instances.list()` (`id`, `name`, `token`, `url`, `webhook`, `status`, etc.).

### `client.instances().update(instanceId, body, options)`

```java theme={null}
client.instances().update(
    "VZ...",
    Map.of("name", "Atendimento Comercial"),
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** instancia atualizada no mesmo formato resumido de `instances.get()`.

### `client.instances().restart(instanceId, options)`

```java theme={null}
client.instances().restart(
    "VZ...",
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** `InstanceActionResponse` — `instance_id`, `status`, `details`.

### `client.instances().delete(instanceId, options)`

```java theme={null}
client.instances().delete(
    "VZ...",
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** corpo vazio em sucesso (`204`) ou envelope de erro padrao.

### `client.instances().subscribe(instanceId, body, options)`

```java theme={null}
JsonNode checkout = client.instances().subscribe(
    "VZ...",
    Map.of(),
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** `BillingHostedSession` — `url`, `session_id`, `mode` (`direct` ou checkout), `subscription_id`.

### `client.instances().resumeSubscription(instanceId, options)`

```java theme={null}
client.instances().resumeSubscription(
    "VZ...",
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** `{ status: "ok" }`.

### `client.instances().cancel(instanceId, options)`

```java theme={null}
client.instances().cancel(
    "VZ...",
    InstanceRequestOptions.builder().instanceToken("instance-token").build());
```

**Retorno:** `{ message }` confirmando cancelamento ou agendamento.

## Chamadas avançadas

Para tipagem própria, use `client.request(..., MeuDto.class)` ou os DTOs publicados como `SessionStatusResponse`.

Para o contrato HTTP completo, use a aba [API](/pt-BR/api-reference/introduction).
