Expanded Limits, Across all tiers - Our Gift to you! Learn more →

AlterLab
SearchResearchPricingComparePlaygroundBlogDocsChangelog
    AlterLabAlterLab
    PricingComparePlaygroundBlogDocsChangelog
    IntroductionQuickstartInstallationYour First Request
    REST APICrawl APIMap APISearch APIResearch APINewSERP APINewExtract APIAIJob PollingDomain StatsNewGeocode APINewNews APIBatch ResultsNewAPI KeysSessions APINewEnterprise APIEnterprise
    AccountAutoAI VisibilityAutoAlertsAutoAuthAutoBillingAutoCrawlAutoExtractAutoIntegrationsAutoKeysAutoMapAutoMonitorsAutoOrganizationsAutoResearch SchedulesAutoRunsAutoSchedulesAutoScrapeAutoSearchAutoSearch SchedulesAutoSessionsAutoUser WebhooksAutoV1 EndpointsAutoAffiliatesAutoAgentAutoAgent OnboardingAutoAgent VisibilityAutoAnalyticsAutoApprovalsAutoArtifactsAutoAttributionAutoB2BAutoBatchAutoBeta FeaturesAutoBlogAutoBuyerAutoChatAutoConnectionsAutoConnectorsAutoContact ListsAutoCreatorAutoCross SellAutoDashboardAutoDefaultsAutoDomainsAutoEmail PreferencesAutoFcAutoHandsAutoHealthAutoJobsAutoListingsAutoMaintenanceAutoNewsAutoOauthAutoOauth GrantsAutoPage InspectAutoPlatformAutoPresetsAutoPricingAutoPrivacyAutoPublicAutoPublic PagesAutoReferralAutoReferralsAutoReportsAutoResearchAutoSecretsAutoSerpAutoSSOAutoStorefrontsAutoSupportAutoTemplatesAutoToolsAutoTrackAutoUsageAutoUsage TagsAutoUserAutoWorkflowsAutoWorkspacesAutoWebhooksAuto
    OverviewPythonNode.jsCLI
    Guides OverviewJavaScript RenderingBrowser ActionsOutput FormatsPDF & OCRCachingWebhooksJSON Schema FilteringWebSocket Real-TimeBring Your Own ProxyProSticky SessionsProAuthenticated ScrapingNewHTTP Methods & BodiesNewStructured ExtractionAIWeb SearchAgent and RAG GroundingResearch JobsAgent RunsSite MappingWeb CrawlingBatch ScrapingSchedulerData MarketplaceSelling DataAgent OnboardingEmbeddingsKeyword IdeasAI VisibilityWorkflowsChange DetectionCloud Storage ExportSpend LimitsOrganizations & TeamsScrape TemplatesCustom ConnectorsSecretsContact ListsPlatform Sub-AccountsReferrals & AffiliatesAlerts & NotificationsExtraction ProfilesAIBYOK ExtractionAIOAuth2 Machine-to-MachineSupport & TicketsUnsupported Targets
    Tutorials OverviewStructured ExtractionAIE-commerce ScrapingNews MonitoringPrice MonitoringMulti-Page CrawlingMonitoring DashboardAI Agent / MCPMCPAI Research AgentAISite CrawlingData Pipeline to Cloud
    E-commerceLead GenerationChange MonitoringRAG & AI PipelinesAIResearch
    Reference OverviewPricingRate LimitsReliabilityReliability ContractError CodesChangelogVersioning
    Migrations OverviewFrom FirecrawlFrom ApifyFrom ScrapingBee / ScraperAPIFrom Crawl4AIFrom SpiderSearch to SERPFirecrawl v0 API ReferenceLegacy
    OverviewMCP ServerAIn8n NodeLangChainAICrewAIAILlamaIndexAISupabaseChrome ExtensionSoon
    PlaygroundPricingStatus

    Up to 5,000 free requests · No credit card

    API Reference
    Auto-generated

    User

    API reference for user endpoints.

    Auto-generated

    This page was generated from the OpenAPI spec. Runmake generate-docs to refresh after spec changes.

    POST /api/v1/user/llm-keys

    POST
    /api/v1/user/llm-keys

    Register a BYOK LLM API key

    Parameters

    NameTypeRequiredDescription
    provider"openai" | "anthropic" | "openrouter" | "groq"
    Required
    LLM provider for this key.
    raw_keystring
    Required
    The plaintext LLM API key. Encrypted at rest immediately on receipt. Never stored or returned in plaintext.
    key_aliasstringOptionalkey_alias
    model_overridestringOptionalmodel_override

    Request Example

    Bash
    curl -X POST https://api.alterlab.io/api/v1/user/llm-keys \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "provider": "...",
        "raw_key": "example_raw_key"
      }'

    Response Example

    JSON
    {
      "status": "ok"
    }

    GET /api/v1/user/llm-keys

    GET
    /api/v1/user/llm-keys

    List BYOK LLM API keys

    Request Example

    Bash
    curl -X GET https://api.alterlab.io/api/v1/user/llm-keys \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json"

    Response Example

    JSON
    {
      "status": "ok"
    }

    POST /api/v1/user/llm-keys/openrouter/exchange

    POST
    /api/v1/user/llm-keys/openrouter/exchange

    Exchange OpenRouter OAuth PKCE code for an API key

    Parameters

    NameTypeRequiredDescription
    codestring
    Required
    The authorization code received from the OpenRouter OAuth callback.
    code_verifierstring
    Required
    The PKCE code verifier that was used to generate the code challenge.
    statestringOptionalstate

    Request Example

    Bash
    curl -X POST https://api.alterlab.io/api/v1/user/llm-keys/openrouter/exchange \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "code": "example_code",
        "code_verifier": "example_code_verifier"
      }'

    Response Example

    JSON
    {
      "status": "ok"
    }

    DELETE /api/v1/user/llm-keys/{key_id}

    DELETE
    /api/v1/user/llm-keys/{key_id}

    Delete a BYOK LLM API key

    Parameters

    NameTypeRequiredDescription
    key_idstring
    Required
    key_id

    Request Example

    Bash
    curl -X DELETE https://api.alterlab.io/api/v1/user/llm-keys/<key_id> \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json"

    Response Example

    JSON
    {
      "status": "ok"
    }

    PUT /api/v1/user/llm-keys/{key_id}

    PUT
    /api/v1/user/llm-keys/{key_id}

    Update a BYOK LLM API key

    Parameters

    NameTypeRequiredDescription
    key_idstring
    Required
    key_id
    raw_keystringOptionalraw_key
    key_aliasstringOptionalkey_alias
    model_overridestringOptionalmodel_override

    Request Example

    Bash
    curl -X PUT https://api.alterlab.io/api/v1/user/llm-keys/<key_id> \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json"

    Response Example

    JSON
    {
      "id": "example",
      "provider": "example",
      "key_alias": "example",
      "key_hint": "example",
      "model_override": "example",
      "is_oauth": true
    }

    GET /api/v1/user/llm-keys/{key_id}/models

    GET
    /api/v1/user/llm-keys/{key_id}/models

    List available models for a BYOK LLM key

    Parameters

    NameTypeRequiredDescription
    key_idstring
    Required
    key_id

    Request Example

    Bash
    curl -X GET https://api.alterlab.io/api/v1/user/llm-keys/<key_id>/models \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json"

    Response Example

    JSON
    {
      "status": "ok"
    }

    POST /api/v1/user/llm-keys/{key_id}/validate

    POST
    /api/v1/user/llm-keys/{key_id}/validate

    Validate a BYOK LLM API key

    Parameters

    NameTypeRequiredDescription
    key_idstring
    Required
    key_id

    Request Example

    Bash
    curl -X POST https://api.alterlab.io/api/v1/user/llm-keys/<key_id>/validate \
      -H "X-API-Key: YOUR_API_KEY" \
      -H "Content-Type: application/json"

    Response Example

    JSON
    {
      "id": "example",
      "provider": "example",
      "key_alias": "example",
      "key_hint": "example",
      "model_override": "example",
      "is_oauth": true
    }
    Last updated: June 2026

    On this page