Organize keys with Apps

Apps are an optional, purely additive grouping layer on top of raw API keys — give a set of keys a name and logo so a merchant sees a real integration on the consent screen, not a bare, unbranded request.

If you only ever use one key for one integration, you don’t need this — everything works identically with no App assigned. Apps start to matter once a merchant should recognize who’s asking when your key requests a Connection: an agency running keys for several client integrations, or a product with a distinct public name different from your account name, both benefit from the merchant seeing that name and logo on the real consent page rather than an anonymous request.

  1. 1

    Create an App from the dashboard

    Go to the Apps page in your developer.askbiz.co dashboard and click "New app." A name is required; logo URL and redirect URI are both optional, and both must be https:// if set. You can hold up to 10 apps per account.

  2. 2

    Link an existing key to it

    There isn’t a dashboard control for this yet — the underlying API supports it today via a direct PATCH call with app_id, made from your own logged-in browser session (this endpoint is session-authenticated, the same as key creation itself, not something a third-party server calls with an x-api-key). Find your key’s id and your app’s id from the dashboard, then run this once.

    // Run from your browser's console while logged into developer.askbiz.co —
    // PATCH /api/v1/keys is session-authenticated (it's an account setting,
    // not something a third-party server calls with an x-api-key). Grab both
    // ids from GET /api/dashboard-apps and GET /api/dashboard-data first.
    await fetch('/api/v1/keys', {
      method: 'PATCH',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        id: '<your key id>',
        app_id: '<your app id>',
      }),
    }).then(r => r.json())
  3. 3

    See it reflected on the consent screen

    The next time that key requests a Connection via POST /api/v1/connections, the merchant’s consent page shows your App’s name and logo instead of an unbranded request. Nothing else about the key changes — its mode, quota, and existing Connections are unaffected.

  4. 4

    Unlink or delete without breaking anything

    Set app_id back to null the same way to ungroup a key, or delete the App entirely from the Apps page — either way, the key and any Connections it created keep working exactly as before, they just stop showing a branded name.

    // Same call with app_id set to null ungroups the key — it keeps working,
    // merchants just see an unbranded request again on future connections.
    await fetch('/api/v1/keys', {
      method: 'PATCH',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ id: '<your key id>', app_id: null }),
    }).then(r => r.json())

What changes, and what doesn’t

An App is metadata — a name, an optional logo, an optional redirect URI — attached to one or more keys. It has no effect on authentication, rate limits, quota, or billing. The only visible difference is what a merchant sees on the /connect/&lbrace;token&rbrace; consent page when a grouped key requests access.

Apps FAQ

Do I need to create an App to use the API?+

No. Apps are entirely optional. A key with no App assigned works exactly the same as one grouped under an App — the only difference is what a merchant sees on the consent screen when that key requests a Connection.

Can one App have multiple keys?+

Yes — an App is just a label with a name and logo; assign as many of your keys to it as you like via the app_id field on PATCH /api/v1/keys.

What happens to existing Connections if I delete an App?+

They keep working. Deleting an App only removes the grouping metadata — the keys and any Connections or webhooks tied to them are unaffected, they just stop showing a branded name on future consent screens.

Is there a REST endpoint a third-party server calls to manage Apps?+

No — like webhook management, App management (create, rename, delete) is a session-authenticated, dashboard-only account setting, not an x-api-key endpoint. See the "Account management" section of the API Reference.