---
title: "Requisições cruas"
description: "Chamadas HTTP no estilo Axios usando a mesma base URL e o mesmo token da SDK."
---
Os métodos gerados são a forma recomendada para o dia a dia porque carregam tipos de parâmetros e resposta. Mas às vezes você precisa chamar uma rota que ainda não está na SDK, testar um endpoint novo ou fazer uma chamada mais direta.

Para isso, o Cinderace expõe helpers no estilo Axios que usam **a mesma `baseUrl`, o mesmo token e o mesmo `fetch`** dos métodos gerados.

## GET

```ts
const { data, status, headers } = await sdk.get("/raffles/active", {
    params: {
        page: 1
    }
});

console.log(status);
console.log(data);
```

## POST, PUT, PATCH e DELETE

```ts
const response = await sdk.post("/user/sign-in", {
    captcha: "<token-do-captcha>",
    cpf: "00000000000",
    password: "senha"
});

await sdk.put("/user/profile", {
    name: "Maria Silva"
});

await sdk.patch("/user/profile", {
    name: "Maria Souza"
});

await sdk.delete("/user/payment-method/card-id");
```

## request()

Quando o método é dinâmico, use a forma de configuração:

```ts
const response = await sdk.request({
    method: "PATCH",
    url: "/user/profile",
    data: {
        name: "Maria Silva"
    }
});
```

## Retorno

Toda chamada crua devolve:

```ts
interface LMResponse<T> {
    data: T;
    status: number;
    statusText: string;
    headers: Headers;
}
```

Diferente dos métodos gerados, que devolvem direto o body tipado, o modo cru devolve o envelope completo.

## Opções

| Opção | Para que serve |
|---|---|
| `params` | Query string. Aceita objeto ou `URLSearchParams`. |
| `data` | Body. Objetos viram JSON; `FormData`, `Blob`, `ArrayBuffer` e strings passam direto. |
| `headers` | Headers extras daquela chamada. |
| `signal` | `AbortSignal` para cancelar a requisição. |
| `responseType` | `json`, `text`, `arrayBuffer` ou `blob`. |
| `validateStatus` | Define o que conta como sucesso. O padrão é `2xx`. |

## Erros

Por padrão, status fora de `2xx` lança `LMSdkError`:

```ts
import { LMSdkError } from "@luckymaker/sdk-core";

try {
    await sdk.get("/missing");
} catch (error) {
    if (error instanceof LMSdkError) {
        console.log(error.status);
        console.log(error.code);
        console.log(error.body);
    }
}
```

Para tratar o status sem exceção:

```ts
const response = await sdk.get("/missing", {
    validateStatus: (status) => status < 500
});

console.log(response.status);
```

## Base URL e token

Os helpers usam o mesmo cliente:

```ts
const sdk = new LMSdk({
    baseUrl: "api.sualoja.com.br"
});

// GET https://api.sualoja.com.br/v1/raffles/active?page=1
await sdk.get("/raffles/active", { params: { page: 1 } });
```

Se a sessão estiver autenticada, o header vai junto automaticamente:

```http
Authorization: Bearer <token>
```

:::tip[Quando usar]
Prefira os métodos gerados para contratos conhecidos. Use as requisições cruas para exploração, endpoints novos ou respostas que você quer tratar manualmente.
:::