# Verify an email address

Redeems the code mailed to the address, adds the address to the account as verified, and returns every address on the account. A wrong, expired, or exhausted code fails the same way, and the address can still be claimed by whoever verifies it first.

## Endpoint

`POST /v1/auth/emails/verify`

## Authorization

`__Host-better-auth.session_token` API key · cookie required

Dashboard session cookie set at sign-in. An operation that lists only this scheme needs a person: API keys and machine credentials are refused. The same session token also works as `Authorization: Bearer`.

## Request body

required `application/json`

- `email` string required  
  min length 3 · max length 320  
- `code` string required  
  min length 1 · max length 16

## Responses

### 200 Response for status 200

- `$schema` string <uri>  
  Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.

- `data` object required  
  - `emails` object[] required  
    - Array of `object`
      - `id` string required  
      - `email` string required  
      - `isPrimary` boolean required  
      - `verifiedAt` string required  
        ISO 8601 timestamp for when the address was verified.
      - `verificationMethod` string required  
        How the address proved itself: 
        - `email_code` a code mailed to it  
        - `oauth` an identity provider that vouched for it  
        - `admin` a Spacefast operator  
        - `migration` an import
      
        Allowed: `email_code`, `oauth`, `admin`, `migration`

### default Error

- `$schema` string <uri>  
  Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.

- `type` string required  
  URL of the documentation page for this error. Derived from `code`.
- `title` string required  
  Human-readable name of the error type. Derived from `code`.
- `status` integer required  
  HTTP status of the response, repeated in the body.
  min -9007199254740991 · max 9007199254740991
- `detail` string required  
  What went wrong in this request.
- `code` string required  
  Stable snake_case error code. Match on this, not on `detail`.
- `pointer` string  
  RFC 6901 JSON Pointer to the request field or batch entry that failed, for example `/files/37/path`. Present on validation failures.
- `details` object  
  Machine-readable context keyed by the error code.
  - `suggestions` string[]  
    Recovery steps safe to show to a person.
  - `next` string[]  
    Commands or API requests to run next, usable as written.
  - `requestId` string required  
    ID of this request, from the `X-Request-Id` header or generated. Quote it when contacting support.

## Try it

### Server

Base URL: `https://api.spacefast.com`

### Authorization

API key

Remember on this device  
Include my values in samples

### Body

`application/json`

- `email` string*  
- `code` string*

## Request Examples

### cURL

```bash
curl -X POST "https://api.spacefast.com/v1/auth/emails/verify" \
  -H "Cookie: __Host-better-auth.session_token=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "string",
  "code": "string"
}'
```

### JavaScript

```javascript
const response = await fetch("https://api.spacefast.com/v1/auth/emails/verify", {
  method: "POST",
  headers: {
    "Cookie": "__Host-better-auth.session_token=YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: "{\n  \"email\": \"string\",\n  \"code\": \"string\"\n}"
});
```

### Python

```python
import requests

response = requests.post(
    "https://api.spacefast.com/v1/auth/emails/verify",
    headers={
        "Cookie": "__Host-better-auth.session_token=YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    data="{\n  \"email\": \"string\",\n  \"code\": \"string\"\n}",
)
```

## Sample Responses

### 200 Default Response

```json
{
  "$schema": "http://example.com",
  "data": {
    "emails": [
      {
        "id": "string",
        "email": "string",
        "isPrimary": true,
        "verifiedAt": "string",
        "verificationMethod": "email_code"
      }
    ]
  }
}
```

### Error Response

```json
{
  "$schema": "http://example.com",
  "type": "string",
  "title": "string",
  "status": -9007199254740991,
  "detail": "string",
  "code": "string",
  "pointer": "string",
  "details": {
    "property1": null,
    "property2": null
  },
  "suggestions": [
    "string"
  ],
  "next": [
    "string"
  ],
  "requestId": "string"
}
```
