---
title: Quickstart
description: Create an API key and make your first authenticated request
group: Guides
---

# Quickstart

# Quickstart

Get a workspace API key, then list certificates or import recipients.

## 1. Create an API key

1. Sign in at [app.verifycate.com](https://app.verifycate.com).
2. Open your workspace → **API Keys**.
3. Create a key with at least `certificates:read` (list) or `certificates:write` (import). Leave scopes empty for full access.
4. Copy the secret. It starts with `vc_` and is shown only once.

API keys require an active Pro seat on the workspace. Without a seat, authenticated API calls return `402` with code `seat_required`.

## 2. List certificates

Replace `YOUR_WORKSPACE_SLUG` and the key.

```bash
curl "https://api.verifycate.com/api/v1/workspaces/YOUR_WORKSPACE_SLUG/certificates?limit=50&offset=0" \
  -H "Authorization: Bearer vc_your_api_key"
```

```javascript
const res = await fetch(
  "https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
  {
    headers: { Authorization: "Bearer vc_your_api_key" },
  },
);
const page = await res.json();
console.log(page.items, page.total);
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest(
		http.MethodGet,
		"https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
		nil,
	)
	req.Header.Set("Authorization", "Bearer vc_your_api_key")
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(res.Status, string(body))
}
```

```python
import urllib.request

req = urllib.request.Request(
    "https://api.verifycate.com/api/v1/workspaces/acme/certificates?limit=50&offset=0",
    headers={"Authorization": "Bearer vc_your_api_key"},
)
with urllib.request.urlopen(req) as res:
    print(res.status, res.read().decode())
```

## 3. Import recipients (optional)

Once you have a certificate id, import issues with `certificates:write`:

```bash
curl -X POST \
  https://api.verifycate.com/api/v1/workspaces/acme/certificates/550e8400-e29b-41d4-a716-446655440000/issues \
  -H "Authorization: Bearer vc_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "issues": [
      {
        "email": "ada@example.com",
        "name": "Ada Lovelace",
        "attributes": {
          "course": "Mathematics",
          "roll_number": "CS-001"
        }
      }
    ]
  }'
```

Next: [Authentication](/docs/api/authentication), [Scopes](/docs/api/scopes), and [Import issues](/docs/api/issues/import).
