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

# Create free-tier account and API key JSON Schema

> Create free-tier account and API key JSON Schema contract. Includes parameters, response shapes, examples, and implementation notes from the 0xArchive contract.

Source OpenAPI: 0xArchive API 1.5.0; 140 paths; 119 component schemas.

Create a free-tier account and get an API key using a signed SIWE message. If the wallet already has an account, returns a new key (subject to tier limits). Requires a fresh challenge from `/v1/auth/web3/challenge` signed with `personal_sign` (EIP-191).

## Route Metadata

| Field                | Value               |
| -------------------- | ------------------- |
| Method               | `POST`              |
| Path                 | `/v1/web3/signup`   |
| operationId          | `web3Signup`        |
| Tag                  | Web3 Authentication |
| Family               | Web3 Auth           |
| Deprecated or legacy | no                  |

## Request Body

### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "web3Signup request body",
  "type": "object",
  "required": [
    "message",
    "signature"
  ],
  "properties": {
    "message": {
      "description": "The SIWE message from the challenge endpoint",
      "type": "string"
    },
    "signature": {
      "description": "Hex-encoded signature from personal_sign (0x-prefixed)",
      "type": "string",
      "example": "0x..."
    }
  }
}
```

## Response Contracts

### Status 200

Account created and API key returned

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "web3Signup response 200",
  "type": "object",
  "properties": {
    "api_key": {
      "description": "The generated API key",
      "type": "string",
      "example": "0xa_live_abc123..."
    },
    "tier": {
      "description": "Account tier",
      "type": "string",
      "example": "free"
    },
    "wallet_address": {
      "description": "The wallet address that owns this key",
      "type": "string"
    }
  }
}
```

### Status 400

Invalid request

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "web3Signup response 400",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 400,
  "error": "Invalid request parameters"
}
```

### Status 401

Authentication required

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "web3Signup response 401",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 401,
  "error": "Missing or invalid API key. Provide X-API-Key header."
}
```

### Status 429

Rate limit exceeded

#### application/json

```json theme={"theme":"github-dark"}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "web3Signup response 429",
  "description": "Error response",
  "type": "object",
  "properties": {
    "code": {
      "description": "HTTP status code",
      "type": "integer"
    },
    "error": {
      "description": "Error message",
      "type": "string"
    }
  }
}
```

##### OpenAPI example

```json theme={"theme":"github-dark"}
{
  "code": 429,
  "error": "Rate limit exceeded"
}
```
