{
  "title": "Can an agent get its first credential without a browser?",
  "what_this_is": "For 19 of the 88 services in the agent-account index — the ones whose documentation names an API or CLI route that mints a key — what the FIRST credential takes, and whether the minting call needs a credential already held. Documentation read, not tested.",
  "population_is": "19 of the 88 services at https://agent-account-index.vercel.app/",
  "n": 19,
  "population": [
    "npm",
    "Cloudflare",
    "Stripe",
    "Vercel",
    "AWS",
    "Deepgram",
    "ElevenLabs",
    "Fly.io",
    "Linear",
    "Modal",
    "MongoDB Atlas",
    "Neon",
    "Netlify",
    "OpenAI",
    "PayPal",
    "Resend",
    "Twilio",
    "GitLab",
    "fal.ai"
  ],
  "generated_at": "2026-10-15T18:33:23",
  "method_note": "Documentation read, not tested. Evidence quotes are exact substrings of the fetched page text (checked in code). 'browser_session_required' includes docs that name a web dashboard/console/settings page as the place the key is made, and commands the docs say open a browser. Unstated is never inferred.",
  "counts": {
    "first_credential_route": {
      "password_plus_storable_code": 2,
      "browser_session_required": 14,
      "unstated": 2,
      "existing_credential_required": 1
    },
    "minting_call_needs_existing_credential": {
      "false": 1,
      "unstated": 8,
      "true": 10
    }
  },
  "contradicts_prior": [
    "Cloudflare",
    "Stripe",
    "Vercel",
    "AWS",
    "Deepgram",
    "Linear",
    "Modal",
    "MongoDB Atlas",
    "Neon",
    "Netlify",
    "PayPal",
    "Resend",
    "Twilio",
    "GitLab",
    "fal.ai"
  ],
  "field_values": {
    "first_credential_route": {
      "password_plus_storable_code": "password + a code you can store",
      "browser_session_required": "a browser session",
      "existing_credential_required": "a credential you already hold",
      "device_bound": "a device-bound sign-in",
      "password_only": "password only",
      "unstated": "unstated"
    },
    "minting_call_needs_existing_credential": {
      "true": "the docs say the minting call authenticates with a credential already held",
      "false": "the docs document a password or interactive prompt instead",
      "unstated": "nothing readable either way; never inferred"
    }
  },
  "rows": [
    {
      "service": "npm",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "This can accept both complete tokens (such as those you get back from npm token create , and those found in your .npmrc ), and ids as seen in the parseable or json output of npm token list .",
      "prior_credential_issuance_evidence_url": "https://docs.npmjs.com/cli/v10/commands/npm-token",
      "command_or_endpoint": "npm token create",
      "urls_tried": [
        {
          "url": "https://docs.npmjs.com/cli/v10/commands/npm-login",
          "status": 200
        },
        {
          "url": "https://docs.npmjs.com/cli/v10/commands/npm-token",
          "status": 200
        },
        {
          "url": "https://docs.npmjs.com/creating-and-viewing-access-tokens",
          "status": 200
        },
        {
          "url": "https://docs.npmjs.com/cli/v10/commands/npm-adduser",
          "status": 200
        }
      ],
      "first_credential_route": "password_plus_storable_code",
      "first_credential_route_evidence": "This will prompt you for your password, and, if you have two-factor authentication enabled, an otp.",
      "first_credential_route_evidence_url": "https://docs.npmjs.com/cli/v10/commands/npm-token",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "false",
      "minting_call_needs_existing_credential_evidence": "This will prompt you for your password, and, if you have two-factor authentication enabled, an otp.",
      "minting_call_needs_existing_credential_evidence_url": "https://docs.npmjs.com/cli/v10/commands/npm-token",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": false
    },
    {
      "service": "Cloudflare",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "With this you have successfully created an API token and can start working with the Cloudflare API.",
      "prior_credential_issuance_evidence_url": "https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
      "command_or_endpoint": "dashboard: My Profile > API Tokens > Create Token",
      "urls_tried": [
        {
          "url": "https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
          "status": 200
        },
        {
          "url": "https://developers.cloudflare.com/fundamentals/api/get-started/keys/",
          "status": 200
        },
        {
          "url": "https://developers.cloudflare.com/fundamentals/api/get-started/account-owned-tokens/",
          "status": 200
        },
        {
          "url": "https://developers.cloudflare.com/fundamentals/api/get-started/",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "From the Cloudflare dashboard ↗︎ , go to My Profile > API Tokens for user tokens.",
      "first_credential_route_evidence_url": "https://developers.cloudflare.com/fundamentals/api/get-started/create-token/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": true
    },
    {
      "service": "Stripe",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "OAuth 2.0 Use industry standard OAuth 2.0 to generate access tokens to interact with the Stripe API.",
      "prior_credential_issuance_evidence_url": "https://docs.stripe.com/stripe-apps/api-authentication",
      "command_or_endpoint": "Dashboard API keys page",
      "urls_tried": [
        {
          "url": "https://docs.stripe.com/keys",
          "status": 200
        },
        {
          "url": "https://docs.stripe.com/stripe-cli/keys",
          "status": 200
        },
        {
          "url": "https://docs.stripe.com/stripe-cli",
          "status": 200
        },
        {
          "url": "https://docs.stripe.com/keys-best-practices",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Use the API keys page in the Dashboard to create, reveal, expire, and rotate keys for the account or sandbox you’re viewing.",
      "first_credential_route_evidence_url": "https://docs.stripe.com/keys",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": true
    },
    {
      "service": "Vercel",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "Create an Auth Token | Vercel REST API Skip to content Copy Wordmark Copy Logo Download Brand Assets Brand Guidelines Docs Build Build with AI AI Gateway AI SDK Sandbox Container Registry Workflow Vercel Agent v0 ↗ Vercel MCP AI Integrations Deploy & scale Deployments CLI Functions Delivery Network",
      "prior_credential_issuance_evidence_url": "https://vercel.com/docs/rest-api/reference/endpoints/authentication/create-an-auth-token",
      "command_or_endpoint": "POST https://api.vercel.com/v3/user/tokens",
      "urls_tried": [
        {
          "url": "https://vercel.com/docs/rest-api/reference/endpoints/authentication/create-an-auth-token",
          "status": 200
        },
        {
          "url": "https://vercel.com/docs/cli/login",
          "status": 200
        },
        {
          "url": "https://vercel.com/docs/rest-api",
          "status": 200
        },
        {
          "url": "https://vercel.com/docs/rest-api/reference/welcome",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Include the token in the Authorization header: Authorization: Bearer <TOKEN> Create and manage Access Tokens in your account settings .",
      "first_credential_route_evidence_url": "https://vercel.com/docs/rest-api",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "'Authorization' : 'Bearer YOUR_ACCESS_TOKEN' , 5 'Content-Type' : 'application/json'",
      "minting_call_needs_existing_credential_evidence_url": "https://vercel.com/docs/rest-api/reference/endpoints/authentication/create-an-auth-token",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "AWS",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "Run the following command: aws iam create-access-key At this point, the user has two active access keys.",
      "prior_credential_issuance_evidence_url": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id-credentials-access-keys-update.html",
      "command_or_endpoint": "aws iam create-access-key / IAM CreateAccessKey; portal sign-in for short-term credentials",
      "urls_tried": [
        {
          "url": "https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html",
          "status": 200
        },
        {
          "url": "https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html",
          "status": 200
        },
        {
          "url": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id-credentials-access-keys-update.html",
          "status": 200
        },
        {
          "url": "https://docs.aws.amazon.com/cli/latest/userguide/cli-authentication-short-term.html",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "However, you can copy and use temporary credentials that are available in the AWS access portal.",
      "first_credential_route_evidence_url": "https://docs.aws.amazon.com/cli/latest/userguide/cli-authentication-short-term.html",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "If you do not specify a user name, IAM determines the user name implicitly based on the AWS access key ID signing the request.",
      "minting_call_needs_existing_credential_evidence_url": "https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "Deepgram",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "Thereafter, you can continue to add additional API keys using the Console, or you can create additional API Keys using the Deepgram API .",
      "prior_credential_issuance_evidence_url": "https://developers.deepgram.com/docs/create-additional-api-keys",
      "command_or_endpoint": "POST /v1/projects/{id}/keys (after a Console-made first key)",
      "urls_tried": [
        {
          "url": "https://developers.deepgram.com/docs/create-additional-api-keys",
          "status": 200
        },
        {
          "url": "https://developers.deepgram.com/reference/management-api/keys/create",
          "status": "HTTP Error 404: Not Found"
        },
        {
          "url": "https://developers.deepgram.com/docs/authenticating",
          "status": 200
        },
        {
          "url": "https://developers.deepgram.com/docs/api-key-and-projects-management",
          "status": "HTTP Error 404: Not Found"
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Create an API key using the Deepgram Console You must create your first API key using the Deepgram Console .",
      "first_credential_route_evidence_url": "https://developers.deepgram.com/docs/create-additional-api-keys",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "To create additional API keys, be sure that the API key you are using to authenticate your request has been assigned either the administrator role",
      "minting_call_needs_existing_credential_evidence_url": "https://developers.deepgram.com/docs/authenticating",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "ElevenLabs",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "PI requests Get workspace usage Get user Get user subscription Get service accounts Create Service Account Get API keys Create API key Delete API key Update API key Disable API key Set workspace third-party disabling policy List audit logs Get Workspace Auth Connections Create Workspace Auth Connec",
      "prior_credential_issuance_evidence_url": "https://elevenlabs.io/docs/api-reference/authentication",
      "command_or_endpoint": "POST /v1/service-accounts/{id}/api-keys",
      "urls_tried": [
        {
          "url": "https://elevenlabs.io/docs/api-reference/authentication",
          "status": 200
        },
        {
          "url": "https://elevenlabs.io/docs/api-reference/service-accounts/api-keys/create",
          "status": 200
        },
        {
          "url": "https://elevenlabs.io/docs/api-reference/user/get",
          "status": 200
        },
        {
          "url": "https://elevenlabs.io/docs/api-reference/introduction",
          "status": 200
        }
      ],
      "first_credential_route": "unstated",
      "first_credential_route_evidence": null,
      "first_credential_route_evidence_url": null,
      "first_credential_route_evidence_is_exact_substring": false,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "unstated_reason": "pages fetched but state neither how the first key is made nor what authenticates the key-create call (client-rendered; example curl shows no auth header)",
      "contradicts_prior": false
    },
    {
      "service": "Fly.io",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "Create a machine exec token: fly tokens create machine-exec --command \"<exact command and arguments to run>\" ​ Create org-scoped tokens Org-scoped tokens are limited to managing a single org and its resources, including apps.",
      "prior_credential_issuance_evidence_url": "https://fly.io/docs/security/tokens/",
      "command_or_endpoint": "fly auth login (default browser-based); fly tokens create",
      "urls_tried": [
        {
          "url": "https://fly.io/docs/security/tokens/",
          "status": 200
        },
        {
          "url": "https://fly.io/docs/flyctl/auth-login/",
          "status": 200
        },
        {
          "url": "https://fly.io/docs/flyctl/auth-token/",
          "status": 200
        },
        {
          "url": "https://fly.io/docs/flyctl/auth-signup/",
          "status": 200
        }
      ],
      "first_credential_route": "password_plus_storable_code",
      "first_credential_route_evidence": "Supports browser-based, email/password and one-time-password authentication.",
      "first_credential_route_evidence_url": "https://fly.io/docs/flyctl/auth-login/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": false
    },
    {
      "service": "Linear",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "POST https://api.linear.app/oauth/token HTTP/1.1 Pass parameters in body as URL-encoded form submission , where the Content-Type header must be application/x-www-form-urlencoded .",
      "prior_credential_issuance_evidence_url": "https://linear.app/developers/oauth-2-0-authentication",
      "command_or_endpoint": "Settings > Account > Security & Access",
      "urls_tried": [
        {
          "url": "https://linear.app/developers/oauth-2-0-authentication",
          "status": 200
        },
        {
          "url": "https://linear.app/developers/graphql",
          "status": 200
        },
        {
          "url": "https://linear.app/docs/api-and-webhooks",
          "status": 200
        },
        {
          "url": "https://linear.app/developers/oauth-actor-authorization",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Visit Security & access settings to create and manage them.",
      "first_credential_route_evidence_url": "https://linear.app/developers/graphql",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": true
    },
    {
      "service": "Modal",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "Usage : modal token info [OPTIONS] Options : --help : Show this message and exit. modal token new Create a new token by using an authenticated web session.",
      "prior_credential_issuance_evidence_url": "https://modal.com/docs/reference/cli/token",
      "command_or_endpoint": "modal token new",
      "urls_tried": [
        {
          "url": "https://modal.com/docs/reference/cli/token",
          "status": 200
        },
        {
          "url": "https://modal.com/docs/reference/cli/setup",
          "status": 200
        },
        {
          "url": "https://modal.com/docs/guide",
          "status": 200
        },
        {
          "url": "https://modal.com/docs/reference/cli/token#modal-token-set",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "modal token new Create a new token by using an authenticated web session.",
      "first_credential_route_evidence_url": "https://modal.com/docs/reference/cli/token",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "modal token new Create a new token by using an authenticated web session.",
      "minting_call_needs_existing_credential_evidence_url": "https://modal.com/docs/reference/cli/token",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "MongoDB Atlas",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "atlas organizations apiKeys create - Atlas CLI - MongoDB Docs For AI agents: a documentation index is available at https://www.mongodb.com/docs/llms.txt — markdown versions of all pages are available by appending .md to any URL path.",
      "prior_credential_issuance_evidence_url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-organizations-apiKeys-create/",
      "command_or_endpoint": "atlas auth login; atlas organizations apiKeys create",
      "urls_tried": [
        {
          "url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-organizations-apiKeys-create/",
          "status": 200
        },
        {
          "url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-auth-login/",
          "status": 200
        },
        {
          "url": "https://www.mongodb.com/docs/atlas/configure-api-access/",
          "status": 200
        },
        {
          "url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-setup/",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "--noBrowser false Don't automatically open a browser session",
      "first_credential_route_evidence_url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-auth-login/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "To use this command, you must authenticate with a user account, a service account, or an API key with the Organization User Admin role.",
      "minting_call_needs_existing_credential_evidence_url": "https://www.mongodb.com/docs/atlas/cli/current/command/atlas-organizations-apiKeys-create/",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "Neon",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "Create a personal API key You can create a personal API key in the Neon Console, with the Neon CLI, or using the Neon API.",
      "prior_credential_issuance_evidence_url": "https://neon.com/docs/manage/api-keys",
      "command_or_endpoint": "neon login (opens a browser); Console > API keys",
      "urls_tried": [
        {
          "url": "https://neon.com/docs/manage/api-keys",
          "status": 200
        },
        {
          "url": "https://neon.com/docs/reference/cli-auth",
          "status": 200
        },
        {
          "url": "https://neon.com/docs/reference/api-reference",
          "status": 200
        },
        {
          "url": "https://neon.com/docs/reference/cli-install",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "You'll need to create your first API key from the Console, where you are already authenticated.",
      "first_credential_route_evidence_url": "https://neon.com/docs/manage/api-keys",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "To create an organization API key, you must use your personal API key and be an administrator in the organization.",
      "minting_call_needs_existing_credential_evidence_url": "https://neon.com/docs/manage/api-keys",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "Netlify",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "You can obtain this token using the command line or in the Netlify UI. SAML SSO If your team requires you to log in with single sign-on (SSO) , your tokens will be denied access to the team",
      "prior_credential_issuance_evidence_url": "https://docs.netlify.com/api-and-cli-guides/cli-guides/get-started-with-cli/",
      "command_or_endpoint": "netlify login",
      "urls_tried": [
        {
          "url": "https://docs.netlify.com/api-and-cli-guides/cli-guides/get-started-with-cli/",
          "status": 200
        },
        {
          "url": "https://docs.netlify.com/api-and-cli-guides/api-guides/get-started-with-api/",
          "status": 200
        },
        {
          "url": "https://cli.netlify.com/commands/login/",
          "status": 200
        },
        {
          "url": "https://docs.netlify.com/manage/accounts-and-billing/team-management/security/",
          "status": "HTTP Error 404: Not Found"
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "This will open a browser window, asking you to log in with Netlify and grant access to Netlify CLI .",
      "first_credential_route_evidence_url": "https://docs.netlify.com/api-and-cli-guides/cli-guides/get-started-with-cli/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": true
    },
    {
      "service": "OpenAI",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": " API Keys Delete project API key DELETE /organization/projects/{project_id}/api_keys/{api_key_id} List project API keys GET /organization/projects/{project_id}/api_keys Retrieve project API key GET /organization/projects/{project_id}/api_keys/{api_key_id} Update project API key POST /organization/p",
      "prior_credential_issuance_evidence_url": "https://platform.openai.com/docs/api-reference/project-api-keys",
      "command_or_endpoint": "POST /organization/projects/{id}/api_keys (page not readable)",
      "urls_tried": [
        {
          "url": "https://platform.openai.com/docs/api-reference/project-api-keys",
          "status": "HTTP Error 403: Forbidden"
        },
        {
          "url": "https://platform.openai.com/docs/api-reference/authentication",
          "status": "HTTP Error 403: Forbidden"
        },
        {
          "url": "https://platform.openai.com/docs/api-reference/admin-api-keys",
          "status": "HTTP Error 403: Forbidden"
        },
        {
          "url": "https://platform.openai.com/docs/api-reference/project-service-accounts",
          "status": "HTTP Error 403: Forbidden"
        }
      ],
      "first_credential_route": "unstated",
      "first_credential_route_evidence": null,
      "first_credential_route_evidence_url": null,
      "first_credential_route_evidence_is_exact_substring": false,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "unstated_reason": "all 4 anonymous GETs returned HTTP 403 (bot wall); not bypassed, no chromium used",
      "contradicts_prior": false
    },
    {
      "service": "PayPal",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "les show you how to get your access token using cURL or Postman. cURL Copy the following code and modify it: curl -v -X POST \"https://api-m.sandbox.paypal.com/v1/oauth2/token\" \\\\ -u \"CLIENT_ID:CLIENT_SECRET\" \\\\ -H \"Content-Type: application/x-www-form-urlencoded\" \\\\ -d \"grant_type=client_credential",
      "prior_credential_issuance_evidence_url": "https://developer.paypal.com/api/rest/authentication/",
      "command_or_endpoint": "POST /v1/oauth2/token with client ID and secret",
      "urls_tried": [
        {
          "url": "https://developer.paypal.com/api/rest/authentication/",
          "status": 200
        },
        {
          "url": "https://developer.paypal.com/api/rest/",
          "status": 200
        },
        {
          "url": "https://developer.paypal.com/api/rest/reference/orders/v2/errors/",
          "status": 200
        },
        {
          "url": "https://developer.paypal.com/docs/api/overview/",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Here's how to get your client ID and client secret: Select Log in to Dashboard and log in or sign up.",
      "first_credential_route_evidence_url": "https://developer.paypal.com/api/rest/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "To call a REST API in your integration, you'll need to exchange your client ID and client secret for an access token.",
      "minting_call_needs_existing_credential_evidence_url": "https://developer.paypal.com/api/rest/authentication/",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "Resend",
      "prior_credential_issuance": "api_or_cli",
      "prior_credential_issuance_evidence": "omains PATCH Update Domain DEL Delete Domain Logs GET Retrieve Log GET List Logs Usage GET Retrieve Usage API Keys POST Create API key GET List API keys PATCH Update API key DEL Delete API key Suppressions POST Add Suppression GET Retrieve Suppression GET List Suppressions DEL Remove Suppression PO",
      "prior_credential_issuance_evidence_url": "https://resend.com/docs/api-reference/api-keys/create-api-key",
      "command_or_endpoint": "resend login --key; POST /api-keys",
      "urls_tried": [
        {
          "url": "https://resend.com/docs/api-reference/api-keys/create-api-key",
          "status": 200
        },
        {
          "url": "https://resend.com/docs/api-reference/authentication",
          "status": "HTTP Error 404: Not Found"
        },
        {
          "url": "https://resend.com/docs/dashboard/api-keys/introduction",
          "status": 200
        },
        {
          "url": "https://resend.com/docs/cli",
          "status": 200
        }
      ],
      "first_credential_route": "existing_credential_required",
      "first_credential_route_evidence": "resend login Authenticate by storing your API key locally.",
      "first_credential_route_evidence_url": "https://resend.com/docs/cli",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "curl -X POST 'https://api.resend.com/api-keys' \\ -H 'Authorization: Bearer re_xxxxxxxxx'",
      "minting_call_needs_existing_credential_evidence_url": "https://resend.com/docs/api-reference/api-keys/create-api-key",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "Twilio",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "Create and manage API keys using the REST API .",
      "prior_credential_issuance_evidence_url": "https://www.twilio.com/docs/iam/api-keys",
      "command_or_endpoint": "POST /2010-04-01/Accounts/{AccountSid}/Keys.json",
      "urls_tried": [
        {
          "url": "https://www.twilio.com/docs/iam/api-keys",
          "status": 200
        },
        {
          "url": "https://www.twilio.com/docs/iam/api/newkey",
          "status": "HTTP Error 404: Not Found"
        },
        {
          "url": "https://www.twilio.com/docs/iam/api-keys/key-resource-v2010",
          "status": 200
        },
        {
          "url": "https://www.twilio.com/docs/twilio-cli/quickstart",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "You can create Main keys only in the Twilio Console (link takes you to an external page) .",
      "first_credential_route_evidence_url": "https://www.twilio.com/docs/iam/api-keys/key-resource-v2010",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "To create Standard API keys with the API, you must use one of the following credentials: your Account SID and Auth Token, a Main API key, or a Restricted API key with the permission for /twilio/iam/api-keys/create .",
      "minting_call_needs_existing_credential_evidence_url": "https://www.twilio.com/docs/iam/api-keys/key-resource-v2010",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    },
    {
      "service": "GitLab",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "POST /personal_access_tokens/:id/rotate Attribute Type Required Description id integer or string yes ID of a personal access token or the keyword self . expires_at date no Expiration date of the access token in ISO format ( YYYY-MM-DD ).",
      "prior_credential_issuance_evidence_url": "https://docs.gitlab.com/api/personal_access_tokens/",
      "command_or_endpoint": "user profile > Access tokens",
      "urls_tried": [
        {
          "url": "https://docs.gitlab.com/api/personal_access_tokens/",
          "status": 200
        },
        {
          "url": "https://docs.gitlab.com/user/profile/personal_access_tokens/",
          "status": 200
        },
        {
          "url": "https://docs.gitlab.com/api/rest/authentication/",
          "status": 200
        },
        {
          "url": "https://docs.gitlab.com/api/oauth2/",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "To create a personal access token: In the upper-right corner, select your avatar. Select Edit profile . In the left sidebar, select Access > Personal access tokens .",
      "first_credential_route_evidence_url": "https://docs.gitlab.com/user/profile/personal_access_tokens/",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "unstated",
      "minting_call_needs_existing_credential_evidence": null,
      "minting_call_needs_existing_credential_evidence_url": null,
      "minting_call_needs_existing_credential_evidence_is_exact_substring": false,
      "contradicts_prior": true
    },
    {
      "service": "fal.ai",
      "prior_credential_issuance": "both",
      "prior_credential_issuance_evidence": "Yes No Previous Create API Key Creates a new API key with the specified alias.",
      "prior_credential_issuance_evidence_url": "https://docs.fal.ai/platform-apis/v1/keys",
      "command_or_endpoint": "POST /v1/keys; fal.ai/dashboard/keys",
      "urls_tried": [
        {
          "url": "https://docs.fal.ai/platform-apis/v1/keys",
          "status": 200
        },
        {
          "url": "https://docs.fal.ai/platform-apis/v1/keys/create",
          "status": 200
        },
        {
          "url": "https://docs.fal.ai/model-apis/authentication",
          "status": 200
        },
        {
          "url": "https://docs.fal.ai/platform-apis/authentication",
          "status": 200
        }
      ],
      "first_credential_route": "browser_session_required",
      "first_credential_route_evidence": "Go to the Dashboard Navigate to fal.ai/dashboard/keys 2 Generate a Key Click Create Key",
      "first_credential_route_evidence_url": "https://docs.fal.ai/model-apis/authentication",
      "first_credential_route_evidence_is_exact_substring": true,
      "minting_call_needs_existing_credential": "true",
      "minting_call_needs_existing_credential_evidence": "Authorization: Key YOUR_API_KEY",
      "minting_call_needs_existing_credential_evidence_url": "https://docs.fal.ai/platform-apis/v1/keys/create",
      "minting_call_needs_existing_credential_evidence_is_exact_substring": true,
      "contradicts_prior": true
    }
  ]
}