HydraCore
API by router

Providers

List Providers

List all available LLM providers with model catalogs.

Includes has_key flag indicating whether the tenant has stored a key.

"I'm gonna make him an offer he can't refuse." — Don Corleone, The Godfather (about our provider pricing)

GET
/v1/providers
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key

Response Body

curl -X GET "https://loading/v1/providers" \  -H "X-Api-Key: string"
[
  {
    "auth_type": "string",
    "base_url": "string",
    "docs_url": "string",
    "has_key": false,
    "id": "string",
    "key_env_hint": "string",
    "model_count": 0,
    "models": [
      {
        "capabilities": [
          "string"
        ],
        "context_window": 0,
        "id": "string",
        "input_cost_per_1m": 0,
        "is_default": true,
        "max_output_tokens": 0,
        "name": "string",
        "output_cost_per_1m": 0
      }
    ],
    "name": "string",
    "rate_limit_note": "string",
    "supports_streaming": true
  }
]
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

List Stored Keys

List stored API keys (metadata only — never returns plaintext).

"I see nothing! NOTHING!" — Sgt. Schultz, Hogan's Heroes

GET
/v1/providers/keys
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key

Response Body

curl -X GET "https://loading/v1/providers/keys" \  -H "X-Api-Key: string"
[
  {
    "created_at": "2019-08-24T14:15:22Z",
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "is_valid": true,
    "key_suffix": "string",
    "label": "string",
    "last_validated_at": "2019-08-24T14:15:22Z",
    "provider_id": "string"
  }
]
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Store Key

Store an encrypted API key for a provider (upsert — replaces existing).

"After all, tomorrow is another day!" — Scarlett O'Hara, Gone with the Wind (about rotating API keys)

POST
/v1/providers/keys
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
api_keyApi Key
Length8 <= length <= 500
label?Label
Default"default"
Lengthlength <= 100
provider_idProvider Id
Length1 <= length <= 50

Response Body

curl -X POST "https://loading/v1/providers/keys" \  -H "X-Api-Key: string" \  -H "Content-Type: application/json" \  -d '{    "api_key": "stringst",    "provider_id": "string"  }'
{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "key_suffix": "string",
  "message": "string",
  "provider_id": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Delete Key

Delete stored API key for a provider.

"Hasta la vista, baby." — T-800, Terminator 2

DELETE
/v1/providers/keys/{provider_id}
AuthorizationBearer <token>

In: header

Path Parameters

provider_idProvider Id

Header Parameters

X-Api-Key?X-Api-Key

Response Body

curl -X DELETE "https://loading/v1/providers/keys/string" \  -H "X-Api-Key: string"
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Validate Key

Validate an API key against a provider (lightweight check).

Performs a minimal API call (e.g. list models) to verify the key works. Rate-limited to prevent abuse.

"Do you feel lucky? Well, do ya, punk?" — Harry Callahan, Dirty Harry

POST
/v1/providers/validate
AuthorizationBearer <token>

In: header

Header Parameters

X-Api-Key?X-Api-Key
api_keyApi Key
Length8 <= length <= 500
provider_idProvider Id
Length1 <= length <= 50

Response Body

curl -X POST "https://loading/v1/providers/validate" \  -H "X-Api-Key: string" \  -H "Content-Type: application/json" \  -d '{    "api_key": "stringst",    "provider_id": "string"  }'
{
  "message": "string",
  "provider_id": "string",
  "valid": true
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}