# Start monthly or annual ViralQuery checkout (Standard or Pro) — mints a key once paid (/docs/api-reference/v1/subscribe/post)

`POST https://api.viralquery.com/v1/subscribe`

Start monthly or annual ViralQuery checkout (Standard or Pro) — mints a key once paid

Operation ID: `subscribe`

OpenAPI document: https://viralquery.com/openapi.json

## Authentication

Public endpoint; no bearer token is required.

## Request

### Request body — application/json (required)

```json
{
  "type": "object",
  "properties": {
    "billingInterval": {
      "type": "string",
      "enum": [
        "monthly",
        "annual"
      ]
    },
    "plan": {
      "type": "string",
      "enum": [
        "standard",
        "pro"
      ]
    }
  },
  "required": [
    "billingInterval"
  ],
  "additionalProperties": false
}
```

## Responses

### `200` — OK

**application/json**

```json
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "claimToken": {
      "type": "string",
      "pattern": "^claim_[A-Za-z0-9]{16,128}$"
    }
  },
  "required": [
    "url",
    "claimToken"
  ]
}
```

### `400` — Invalid request (input failed validation)

**application/json**

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "enum": [
        "invalid_request"
      ],
      "description": "Stable machine-readable error code."
    },
    "message": {
      "type": "string",
      "description": "Human-readable summary."
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "path",
          "message"
        ]
      },
      "description": "First-class Zod validation issues (path + message), not a stringified blob."
    }
  },
  "required": [
    "error",
    "message",
    "issues"
  ]
}
```

### `409` — Conflict or operation error

**application/json**

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "enum": [
        "operation_error"
      ]
    },
    "message": {
      "type": "string",
      "description": "The operation failed while handling the request."
    }
  },
  "required": [
    "error",
    "message"
  ]
}
```

### `429` — Too Many Requests (rate limited)

**application/json**

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "enum": [
        "rate_limited"
      ]
    },
    "message": {
      "type": "string"
    },
    "retryAfter": {
      "type": "number",
      "description": "Seconds to wait before retrying (mirrors the Retry-After header)."
    }
  },
  "required": [
    "error",
    "message",
    "retryAfter"
  ]
}
```

### `502` — Temporary upstream service error — safe to retry

**application/json**

```json
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "enum": [
        "temporary_service_error"
      ]
    },
    "message": {
      "type": "string",
      "description": "Temporary service error."
    },
    "retryable": {
      "type": "boolean",
      "enum": [
        true
      ],
      "description": "Safe to retry."
    }
  },
  "required": [
    "error",
    "message",
    "retryable"
  ]
}
```