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

# Get Competition Requirement Status

> Check the signed-in user's credential and registration readiness for one or more competitions.

Return a personalized readiness checklist for competition and workflow pages.
Each competition includes a completed count, an overall state, credential
details, and Bittensor registration status and cost when applicable.

Use the optional `slugs` query to check several competitions in one request:

```text theme={null}
GET /v1/competitions/requirements/status?slugs=oro,nova-blueprint,negotiation
```

Credential values are never returned. Add `include_cost=true` when opening a
detailed view to load Bittensor registration cost in TAO and, when current
price data is available, USD. Add `include_registration=true` to resolve owned
hotkeys against the current Taostats metagraph. Omit both for a faster
badge-only read.

Current requirements are:

* Negotiation: `OPENROUTER_API_KEY`.
* Nova Blueprint: an active Bittensor registration on subnet 68.
* ORO: `OPENROUTER_API_KEY`, `OPENROUTER_MANAGEMENT_KEY`, and an active
  Bittensor registration.

Auth: Droyd API key or signed-in user bearer token plus active app state. Alias:
`GET /api/v1/competitions/requirements/status`. `slugs` is an optional
comma-separated list; values are trimmed, deduplicated, validated, and limited
to 50. Omit it to load all visible, non-archived competitions. Unknown, hidden,
or archived requested slugs do not produce synthetic rows.
`include_cost` accepts `true`, `false`, `1`, or `0` and defaults to false. The
same values are accepted by `include_registration`, which also defaults to
false. With both defaults, the route does not call Taostats or CoinGecko and
returns `cost: null`.

Summary states are `complete`, `partial`, `missing`, and `not_required`.
Summary counts include required definitions only. Credential requirements match
an active caller-owned `user_default` credential by exact provider and
`secret_name`; returned credential data is safe metadata only. Bittensor
requirements return `registered`, `not_registered`, `unknown`, or
`wallet_missing` from caller-owned cached registration and wallet records.
With `include_registration=true`, every owned hotkey is checked through the
Taostats latest metagraph endpoint; all lookups must succeed before an empty
result becomes `not_registered`. Provider failures fall back to cached
evidence. This route never performs a signed ORO check. Use the signed
`GET /v1/competitions/{slug}/registration/status` workflow to refresh the
persisted registration evidence. Positive and negative checks are current for
24 hours; stale or invalid timestamps return `unknown`. Any owned wallet with
fresh positive evidence can satisfy this account-level requirement. The route
returns `not_registered` only when every owned Bittensor wallet has fresh
negative evidence, and includes the selected evidence wallet in the response.

With `include_cost=true`, registration cost uses Taostats for rao/TAO and the
cached CoinGecko TAO price for USD. If Taostats fails, `cost` is null. If only
pricing fails, TAO remains available while `amount_usd`, `price_usd`, and price
provenance are null. Cost enrichment does not change readiness.
Empty/malformed `slugs`, `include_cost`, or `include_registration` returns `400 invalid_request`; auth
failures return `401` or `403`; required database read failures return a
structured `500`.


## OpenAPI

````yaml api-key.openapi.json GET /v1/competitions/requirements/status
openapi: 3.1.0
info:
  title: Droyd API-key Automation API
  version: 1.0.0
  description: >-
    The production API contract for Droyd API-key automations. It contains only
    operations that accept a Droyd API key. `/v1` is canonical; `/api/v1` is a
    compatibility alias.
servers: []
security:
  - droydApiKeyBearer: []
  - droydApiKeyHeader: []
tags:
  - name: Identity
    description: Account-scoped automation identity and onboarding state.
  - name: Workflows
    description: Caller-owned workflows and research nodes.
  - name: Competitions
    description: Competition readiness, submissions, and race entries.
  - name: Experiments
    description: Experiments, artifacts, agent versions, and evaluations.
  - name: Usage
    description: Caller-owned evaluation usage.
  - name: Billing
    description: Caller-owned prepaid credit balances and funding.
paths:
  /v1/competitions/requirements/status:
    get:
      tags:
        - Competitions
      summary: Return caller-specific competition requirements.
      operationId: getCompetitionRequirementsStatus
      parameters:
        - name: slugs
          in: query
          schema:
            type: string
        - name: include_cost
          in: query
          schema:
            type: boolean
        - name: include_registration
          in: query
          schema:
            type: boolean
      responses:
        '200':
          $ref: '#/components/responses/Success'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  responses:
    Success:
      description: Successful response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SuccessEnvelope'
    BadRequest:
      description: Invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Forbidden:
      description: Account state or route policy prevents the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    ServerError:
      description: >-
        The request could not be completed. Retry only when the operation's
        idempotency contract permits it.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  schemas:
    SuccessEnvelope:
      type: object
      required:
        - ok
      properties:
        ok:
          const: true
      additionalProperties: true
    ErrorEnvelope:
      type: object
      required:
        - ok
        - error
      properties:
        ok:
          const: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
  securitySchemes:
    droydApiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: Droyd API key
      description: A Droyd API key in the Authorization Bearer slot.
    droydApiKeyHeader:
      type: apiKey
      in: header
      name: x-droyd-api-key
      description: A Droyd API key when Authorization is absent.

````