@if (loading()) {
} @else {

{{ 'XP.ModelGateway.ExternalApi' | translate: { Default: 'External API' } }} · {{ 'XP.ModelGateway.Connection' | translate: { Default: 'Connection' } }}

{{ 'XP.ModelGateway.AccountDescription' | translate : { Default: 'Apply for external model access, create dedicated API keys, and use your own membership balance from other platforms.' } }}

{{ 'XP.ModelGateway.OpenAICompatible' | translate : { Default: 'Use this base URL in OpenAI-compatible clients. Direct Claude Code support requires the Anthropic protocol planned for a later phase.' } }}

{{ apiBaseUrl }}
{{ 'XP.ModelGateway.QuickStart' | translate: { Default: 'Quick start' } }}
{{ curlExample() }}

{{ 'XP.ModelGateway.Models' | translate: { Default: 'External models' } }}

{{ 'XP.ModelGateway.ModelsHint' | translate: { Default: 'Every model needs its own approval, including models in your plan.' } }}

{{ 'XP.ModelGateway.SearchModels' | translate: { Default: 'Search models' } }}
@if (catalog()?.items?.length) { @if (filteredCatalogItems().length) {
@for (item of filteredCatalogItems(); track item.id) {
{{ item.externalModelId }}
{{ item.provider }} / {{ item.model }}
@if (item.deprecated) { {{ 'XP.KEY_WORDS.Deprecated' | translate: { Default: 'Deprecated' } }} } @if (item.grant) { @if (item.allowed) { {{ 'XP.ModelGateway.Available' | translate: { Default: 'Available' } }} } @else { {{ 'XP.ModelGateway.TemporarilyUnavailable' | translate: { Default: 'Temporarily unavailable' } }} } } @else if (item.pendingRequest) { {{ 'XP.ModelGateway.Pending' | translate: { Default: 'Pending' } }} }
@if (item.grant && !item.allowed && item.unavailableReason) {
{{ 'XP.ModelAccess.Unavailable.' + item.unavailableReason | translate }}
}
{{ item.planIncluded ? ('XP.ModelGateway.PlanPricing' | translate: { Default: 'Plan pricing' }) : ('XP.ModelGateway.StandardPricing' | translate: { Default: '1× pricing' }) }} @if (item.requestable) { } @else if (item.pendingRequest) { }
}
} @else { } } @else { }

{{ 'XP.ModelGateway.ApiKeys' | translate: { Default: 'API keys' } }}

{{ 'XP.ModelGateway.KeysHint' | translate: { Default: 'Keys do not grant model permissions.' } }}

@if (keys().length) {
@for (key of keys(); track key.id) { }
{{ 'XP.ModelGateway.KeyName' | translate: { Default: 'Name' } }} {{ 'XP.ModelGateway.ApiKey' | translate: { Default: 'API key' } }} {{ 'XP.ModelGateway.Status' | translate: { Default: 'Status' } }} {{ 'XP.ModelGateway.ExpiresAt' | translate: { Default: 'Expires at' } }} {{ 'XP.ModelGateway.Actions' | translate: { Default: 'Actions' } }}
{{ key.name }} @if (key.secret; as secret) {
{{ secret }}
} @else {
{{ key.prefix }}…
{{ 'XP.ModelGateway.LegacyKeyUnavailable' | translate: { Default: 'Create a new key to make it copyable.' } }}
}
{{ 'XP.ModelGateway.KeyStatus.' + key.status | translate: { Default: key.status } }} {{ formatDate(key.validUntil) }} @if (key.status === keyStatus.Active) { }
} @else { }

{{ 'XP.ModelGateway.ApplicationStatus' | translate: { Default: 'Application status' } }}

@if (requests().length) {
@for (request of pagedRequests(); track request.id) { }
{{ 'XP.ModelGateway.Model' | translate: { Default: 'Model' } }} {{ 'XP.ModelGateway.Reason' | translate: { Default: 'Reason' } }} {{ 'XP.ModelGateway.Status' | translate: { Default: 'Status' } }} {{ 'XP.ModelGateway.SubmittedAt' | translate: { Default: 'Submitted at' } }} {{ 'XP.ModelGateway.Actions' | translate: { Default: 'Actions' } }}
{{ request.externalModelId || request.modelSnapshot.externalModelId || request.model }}
{{ request.provider }} / {{ request.model }}
{{ request.reason }}
{{ 'XP.ModelAccess.StatusValue.' + currentRequestStatus(request) | translate: { Default: currentRequestStatus(request) } }} {{ formatDate(request.createdAt) }} @if (request.status === requestStatus.Requested) { } @else { }
{{ 'XP.ModelGateway.PageSummary' | translate : { current: requestPageIndex() + 1, pages: requestPageCount(), total: requests().length, Default: 'Page {{current}} of {{ pages }} · {{ total }} records' } }}
} @else { }

{{ 'XP.ModelGateway.RecentCalls' | translate: { Default: 'Recent API calls' } }}

@if (calls().length) {
@for (call of calls(); track call.id) { }
{{ 'XP.ModelGateway.Model' | translate: { Default: 'Model' } }} {{ 'XP.ModelGateway.Status' | translate: { Default: 'Status' } }} {{ 'XP.ModelGateway.Points' | translate: { Default: 'Points' } }} {{ 'XP.ModelGateway.StartedAt' | translate: { Default: 'Started at' } }}
{{ call.externalModelId }} {{ 'XP.ModelGateway.CallStatus.' + call.status | translate: { Default: call.status } }} {{ call.chargedPoints | number: '1.0-2' }} {{ formatDate(call.startedAt) }}
{{ 'XP.ModelGateway.PageSummary' | translate : { current: callPageIndex() + 1, pages: callPageCount(), total: callTotal(), Default: 'Page {{current}} of {{ pages }} · {{ total }} records' } }}
} @else { }
}