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

# Get Rate Limit Status

> Check your current rate limit status across all buckets

Use this endpoint to see your current rate limit status for all buckets. This doesn't consume rate limit tokens from any bucket other than `rate_limit_status`.

This endpoint requires only a valid API key. `X-Tenant-Id` isn't required.

## Response

The response includes per-bucket status for all RPS buckets plus in-flight concurrency status for the `criteria_ai` bucket.

```json theme={null}
{
  "partnerId": "partner_abc123",
  "environment": "PRODUCTION",
  "generatedAt": "2026-02-17T10:30:00.000Z",
  "degraded": false,
  "buckets": {
    "criteria_ai": {
      "limit": 2,
      "remaining": 2,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "criteria_ai_inflight": {
      "limit": 4,
      "active": 1,
      "retryAfterSeconds": 0
    },
    "criteria_current_reads": {
      "limit": 60,
      "remaining": 57,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "scoring_intake_batch": {
      "limit": 1,
      "remaining": 1,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "scoring_intake_single": {
      "limit": 10,
      "remaining": 8,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "read_and_ops": {
      "limit": 20,
      "remaining": 19,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "rate_limit_status": {
      "limit": 2,
      "remaining": 1,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    },
    "analytics": {
      "limit": 20,
      "remaining": 20,
      "resetAt": 1739787001,
      "resetInSeconds": 1
    }
  }
}
```

## Response fields

| Field         | Type    | Description                                                           |
| ------------- | ------- | --------------------------------------------------------------------- |
| `partnerId`   | string  | Your partner identifier                                               |
| `environment` | string  | `SANDBOX` or `PRODUCTION`, determined by your API key                 |
| `generatedAt` | string  | ISO 8601 timestamp when this status was generated                     |
| `degraded`    | boolean | `true` when Redis is unavailable and values are best-effort estimates |

### RPS bucket fields

Each RPS bucket (`criteria_ai`, `criteria_current_reads`, `scoring_intake_batch`, `scoring_intake_single`, `read_and_ops`, `rate_limit_status`, `analytics`) has:

| Field            | Type    | Description                                       |
| ---------------- | ------- | ------------------------------------------------- |
| `limit`          | integer | Maximum requests per second                       |
| `remaining`      | integer | Requests remaining in the current 1-second window |
| `resetAt`        | integer | Unix timestamp when the window resets             |
| `resetInSeconds` | integer | Seconds until the window resets                   |

### In-flight fields

The `criteria_ai_inflight` object tracks concurrent request capacity:

| Field               | Type    | Description                                                          |
| ------------------- | ------- | -------------------------------------------------------------------- |
| `limit`             | integer | Maximum concurrent in-flight requests (4)                            |
| `active`            | integer | Currently active in-flight requests                                  |
| `retryAfterSeconds` | integer | Seconds until a slot may become available (0 if slots are available) |

<Note>
  This endpoint is also rate-limited under the `rate_limit_status` bucket (2 req/s). Rate limit headers are included on the response.
</Note>


## OpenAPI

````yaml GET /v1/rate-limit-status
openapi: 3.1.0
info:
  title: Nova Embed API
  description: >-
    The Nova Embed API enables ATS platforms to generate job-scoped screening
    criteria and score applications asynchronously against those criteria.
  version: 1.0.0
  contact:
    name: Nova Support
    email: nova@dweet.com
servers:
  - url: https://embed.nova.dweet.com
    description: >-
      Environment is determined by API key prefix: sk_test_* for sandbox,
      sk_live_* for production.
security:
  - bearerAuth: []
tags:
  - name: Analytics
    description: View scoring performance, webhook health, and error breakdowns.
  - name: Criteria
    description: Generate and manage job-scoped screening criteria.
  - name: Scoring
    description: Submit applications for scoring and fetch scoring job results.
  - name: Deletion
    description: Request application or tenant deletion and poll for completion.
  - name: Criteria Library
    description: Manage tenant-scoped reusable criteria templates.
  - name: Rate Limits
    description: Check your current rate limit status.
  - name: Webhooks
    description: >-
      Events sent to your registered webhook endpoints. Verify signatures with
      HMAC-SHA256 using your webhook secret.
paths:
  /v1/rate-limit-status:
    get:
      tags:
        - Rate Limits
      summary: Get rate limit status
      description: >-
        Returns the current rate limit status for all buckets. Does not consume
        tokens from any bucket other than rate_limit_status. Does not require
        X-Tenant-Id.
      operationId: getRateLimitStatus
      parameters: []
      responses:
        '200':
          description: Rate limit status
          headers:
            X-RateLimit-Bucket:
              $ref: '#/components/headers/X-RateLimit-Bucket'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitStatusResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '429':
          $ref: '#/components/responses/RateLimitedResponse'
        '500':
          $ref: '#/components/responses/ErrorResponse'
      x-codeSamples:
        - lang: typescript
          label: '@nova-sdk/api'
          source: |-
            import { Nova } from "@nova-sdk/api";

            const nova = new Nova({
              apiKey: "sk_test_...",
              tenantId: "acme-corp",
            });

            const status = await nova.rateLimitStatus();
        - lang: bash
          label: cURL
          source: |-
            curl -X GET "https://embed.nova.dweet.com/v1/rate-limit-status" \
              -H "Authorization: Bearer sk_test_..."
components:
  headers:
    X-RateLimit-Bucket:
      description: Which rate limit bucket the request was classified into
      schema:
        type: string
        enum:
          - criteria_ai
          - criteria_current_reads
          - scoring_intake_batch
          - scoring_intake_single
          - read_and_ops
          - rate_limit_status
          - analytics
    X-RateLimit-Limit:
      description: Maximum requests per second for this bucket
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in the current 1-second window
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp when the current window resets
      schema:
        type: integer
    Retry-After:
      description: >-
        Seconds to wait before retrying a short-window RATE_LIMITED or
        service-unavailable response whose body has retryable: true.
      schema:
        type: integer
    X-RateLimit-Degraded:
      description: >-
        Present and set to "true" when rate limiting is operating in degraded
        mode (Redis unavailable). Values in other rate limit headers are
        best-effort estimates.
      schema:
        type: string
        enum:
          - 'true'
  schemas:
    RateLimitStatusResponse:
      type: object
      required:
        - partnerId
        - environment
        - generatedAt
        - degraded
        - buckets
      properties:
        partnerId:
          type: string
          description: Your partner identifier
        environment:
          $ref: '#/components/schemas/Environment'
          description: SANDBOX or PRODUCTION, determined by your API key
        generatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when this status was generated
        degraded:
          type: boolean
          description: True when Redis is unavailable and values are best-effort estimates
        buckets:
          type: object
          required:
            - criteria_ai
            - criteria_ai_inflight
            - criteria_current_reads
            - scoring_intake_batch
            - scoring_intake_single
            - read_and_ops
            - rate_limit_status
            - analytics
          properties:
            criteria_ai:
              $ref: '#/components/schemas/BucketStatus'
            criteria_ai_inflight:
              $ref: '#/components/schemas/InflightStatus'
            criteria_current_reads:
              $ref: '#/components/schemas/BucketStatus'
            scoring_intake_batch:
              $ref: '#/components/schemas/BucketStatus'
            scoring_intake_single:
              $ref: '#/components/schemas/BucketStatus'
            read_and_ops:
              $ref: '#/components/schemas/BucketStatus'
            rate_limit_status:
              $ref: '#/components/schemas/BucketStatus'
            analytics:
              $ref: '#/components/schemas/BucketStatus'
    Environment:
      type: string
      enum:
        - SANDBOX
        - PRODUCTION
    BucketStatus:
      type: object
      required:
        - limit
        - remaining
        - resetAt
        - resetInSeconds
      properties:
        limit:
          type: integer
          description: Maximum requests per second for this bucket
        remaining:
          type: integer
          description: Requests remaining in the current 1-second window
        resetAt:
          type: integer
          description: Unix timestamp when the window resets
        resetInSeconds:
          type: integer
          description: Seconds until the window resets
    InflightStatus:
      type: object
      required:
        - limit
        - active
        - retryAfterSeconds
      properties:
        limit:
          type: integer
          description: Maximum concurrent in-flight requests
        active:
          type: integer
          description: Currently active in-flight requests
        retryAfterSeconds:
          type: integer
          description: Seconds until a slot may become available (0 if slots are available)
    HttpError:
      type: object
      required:
        - type
        - code
        - status
        - message
        - retryable
        - traceId
      properties:
        type:
          type: string
          description: URI reference that identifies the error type
        code:
          $ref: '#/components/schemas/ErrorCode'
        status:
          type: integer
          description: HTTP status code
        message:
          type: string
          description: Error message
        retryable:
          type: boolean
          description: When true, retrying the request may succeed
        traceId:
          type: string
          description: Trace ID for debugging
        details:
          type:
            - array
            - 'null'
          description: Field-level validation details
          items:
            type: object
            required:
              - field
              - code
              - message
            properties:
              field:
                type: string
              code:
                type: string
              message:
                type: string
    ErrorCode:
      type: string
      description: >-
        Machine-readable error code. Generated from the canonical error
        registry.
      enum:
        - UNAUTHORIZED
        - FORBIDDEN
        - VALIDATION_ERROR
        - ANSWER_MISMATCH
        - CRITERIA_INVALID
        - CRITERIA_REVISION_CONFLICT
        - NOT_FOUND
        - TENANT_NOT_FOUND
        - JOB_NOT_FOUND
        - APPLICATION_NOT_FOUND
        - QUESTION_SET_NOT_FOUND
        - CRITERIA_NOT_FOUND
        - CRITERION_NOT_FOUND
        - CRITERIA_VERSION_NOT_FOUND
        - SCORING_JOB_NOT_FOUND
        - BATCH_NOT_FOUND
        - LIBRARY_CRITERION_NOT_FOUND
        - RATE_LIMITED
        - MONTHLY_TRIAL_QUOTA_EXCEEDED
        - IDEMPOTENCY_KEY_ALREADY_USED
        - IDEMPOTENCY_REQUEST_IN_PROGRESS
        - RESUME_FETCH_FAILED
        - RESUME_CONVERSION_FAILED
        - RESUME_ENCRYPTED
        - RESUME_CORRUPTED
        - RESUME_PARSE_FAILED
        - RESUME_TOO_LARGE
        - RESUME_EMPTY
        - RESUME_URL_BLOCKED
        - AI_PROCESSING_FAILED
        - AI_GENERATION_FAILED
        - AI_SCORING_FAILED
        - MISSING_JOB_DESCRIPTION
        - TIMEOUT
        - MAX_RETRIES_EXCEEDED
        - TASK_STUCK
        - DELETION_REQUEST_NOT_FOUND
        - DELETION_REQUEST_FAILED
        - INTERNAL_ERROR
        - SERVICE_UNAVAILABLE
        - UNKNOWN
  responses:
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
    RateLimitedResponse:
      description: >-
        Too many requests. Short-window RATE_LIMITED responses include retry
        timing and rate limit headers. Monthly trial quota responses use
        MONTHLY_TRIAL_QUOTA_EXCEEDED with retryable: false.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
        X-RateLimit-Bucket:
          $ref: '#/components/headers/X-RateLimit-Bucket'
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        X-RateLimit-Degraded:
          $ref: '#/components/headers/X-RateLimit-Degraded'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: 'Use Authorization: Bearer sk_test_* or Authorization: Bearer sk_live_*.'

````