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

# Quickstart do Blob Storage: envie e sirva seu primeiro arquivo

> Crie uma chave de API, envie um arquivo, liste, pegue uma URL pública e um link temporário e apague, com cURL, JavaScript, Python e Go.

Em cinco minutos você vai enviar um arquivo, torná-lo público, criar um link temporário e apagá-lo.

**1. Crie uma chave de API**

No dashboard, abra **Configurações → Chaves de API** e crie uma chave com o escopo `blob:write` (ela também pode ler seus arquivos pelo `blob:read`, que o preset **full** inclui). Guarde-a em uma variável de ambiente:

```bash theme={null}
export VERTRA_API_KEY="your_key"
```

**2. Envie um arquivo**

O upload simples leva uma única requisição para arquivos de até 100 MB. Os arquivos são privados, a menos que você peça `public`.

```bash cURL theme={null}
curl -X POST "https://blob.vertracloud.app/v1/objects?path=images/logo.png&visibility=public" \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -F "file=@./logo.png"
```

```javascript JavaScript theme={null}
import { BlobClient } from "@vertracloud/blob";

const blob = new BlobClient({ apiKey: process.env.VERTRA_API_KEY });
const obj = await blob.put("images/logo.png", file, { visibility: "public" });
console.log(obj.url);
```

```python Python theme={null}
obj = client.blob.put("images/logo.png", open("logo.png", "rb"), visibility="public")
print(obj["url"])
```

```go Go theme={null}
f, err := os.Open("logo.png")
if err != nil {
    log.Fatal(err)
}
defer f.Close()
info, _ := f.Stat()

obj, err := client.Blob.Put(ctx, "images/logo.png", f, info.Size(),
    &vertracloud.BlobPutOptions{Visibility: "public"})
if err != nil {
    log.Fatal(err)
}
fmt.Println(*obj.URL)
```

A resposta é o objeto do arquivo: o `id`, o `size`, o `content_type` e, para arquivos públicos, a `url`.

**3. Liste seus arquivos**

```bash cURL theme={null}
curl "https://blob.vertracloud.app/v1/objects?prefix=images/&delimiter=/" \
  -H "Authorization: Bearer $VERTRA_API_KEY"
```

```javascript JavaScript theme={null}
for await (const obj of blob.list({ prefix: "images/" })) {
  console.log(obj.path, obj.size);
}
```

```python Python theme={null}
for obj in client.blob.list(prefix="images/"):
    print(obj["path"], obj["size"])
```

```go Go theme={null}
it := client.Blob.List(ctx, &vertracloud.BlobListOptions{Prefix: "images/"})
for it.Next(ctx) {
    o := it.Object()
    fmt.Println(o.Path, o.Size)
}
if err := it.Err(); err != nil {
    log.Fatal(err)
}
```

**4. Abra a URL pública**

Um arquivo público fica em `https://blob.vertracloud.dev/<namespace>/images/logo.png`; o campo `url` do objeto já traz esse endereço. Abra no navegador ou use em uma tag `<img>`.

**5. Crie um link temporário para um arquivo privado**

```bash cURL theme={null}
curl "https://blob.vertracloud.app/v1/objects/$OBJECT_ID/download?expires_in=600&redirect=false" \
  -H "Authorization: Bearer $VERTRA_API_KEY"
```

```javascript JavaScript theme={null}
const { url, expires_at } = await blob.downloadUrl(obj.id, { expiresIn: 600 });
```

```python Python theme={null}
link = client.blob.download_url(obj["id"], expires_in=600)
```

```go Go theme={null}
link, err := client.Blob.DownloadURL(ctx, obj.ID, &vertracloud.BlobDownloadOptions{ExpiresIn: 600})
if err != nil {
    log.Fatal(err)
}
fmt.Println(link.URL, link.ExpiresAt)
```

O link funciona por 10 minutos. Veja [Links e visibilidade](https://docs.vertracloud.app/pt-br/blob/links-and-visibility.md).

**6. Apague o arquivo**

```bash cURL theme={null}
curl -X DELETE "https://blob.vertracloud.app/v1/objects/$OBJECT_ID" \
  -H "Authorization: Bearer $VERTRA_API_KEY"
```

```javascript JavaScript theme={null}
await blob.delete(obj.id);
```

```python Python theme={null}
client.blob.delete(obj["id"])
```

```go Go theme={null}
err = client.Blob.Delete(ctx, obj.ID)
if err != nil {
    log.Fatal(err)
}
```

## Próximos passos

* Arquivos grandes e progresso: [Uploads](https://docs.vertracloud.app/pt-br/blob/uploads.md).
* Deixar navegadores enviarem direto: [Servir uploads de usuários](https://docs.vertracloud.app/pt-br/guides/serve-user-uploads.md).
* Todas as rotas: [Referência da API do Blob](https://docs.vertracloud.app/api-reference/endpoint/blob/objects/upload.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.