# AX Check: sipgate.io
Checked 2026-09-19.

Docs guide agents well, but pricing and setup steps stay unverified
llms.txt indexes API and use-case guides clearly, but homepage lacks Markdown support and most pricing, install, and code-example details went unchecked.

## Onboarding needs a login

## Coding sessions
Of three independent sessions, only Kimi K3 completed, finding a pricing page with S/M/L plans, a base fee, webhook overage costs, and SMS pricing. The other two sessions did not reach a completed result.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/8c30f95f-96fd-4337-8177-f081a864598a) · [Read transcript](https://www.ax-check.com/sipgate.io/sessions/deepseek.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent built a fully working Node.js example against the official sipgateio SDK and confirmed it correctly reaches the live hosted API (a well-formed but fake Personal Access Token returned a genuine 401 Unauthorized from api.sipgate.com). However it never obtained real credentials: sipgate requires signing into app.sipgate.com to generate a Personal Access Token, which is a human action the agent could not perform itself. No authenticated operation against the real account was ever completed.
  Event 151:

  ```text
  Error: Unauthorized
  exit=1
  ```
  Event 137:

  ```text
  Missing sipgate credentials.
    1. Sign in at https://app.sipgate.com and create a Personal Access Token
       (you get a tokenId and a token).
    2. Put them in .env (see .env.example) or export them:
         export SIPGATE_TOKEN_ID=...
         export SIPGATE_TOKEN=...
  ```
  Event 156:

  ```text
  The **only** blocker is authentication: I don't have (and can't create) a sipgate Personal
  Access Token — that requires you to sign up/sign in to a sipgate account.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-service way to get a sipgate API credential**: sipgate has no signup or token-issuing API reachable from the sandbox; a Personal Access Token can only be generated by logging into the sipgate web app (app.sipgate.com) as a human. This is a normal login requirement, not a product defect, and it stopped the agent from running any authenticated call against the real account.
  Event 137:

  ```text
  Missing sipgate credentials.
    1. Sign in at https://app.sipgate.com and create a Personal Access Token
       (you get a tokenId and a token).
    2. Put them in .env (see .env.example) or export them:
         export SIPGATE_TOKEN_ID=...
         export SIPGATE_TOKEN=...
  ```
  Event 151:

  ```text
  Error: Unauthorized
  exit=1
  ```
- **Guessed diagnostic endpoints returned 404s before finding the real spec**: The agent probed several plausible-but-undocumented paths (/v2/whoami, /v2/.well-known/openapi, /v2/openapi.json) that all 404'd before it found the real machine-readable spec at /v2/swagger.json. This is agent trial-and-error against an API without a discovery/index endpoint, not a documented broken link, so it is noted as friction rather than a hallucination.
  Event 8:

  ```text
  HTTP 404
  <html><body><h1>Resource not found</h1></body></html>
  ```
  Event 100:

  ```text
  == https://api.sipgate.com/v2/.well-known/openapi ==
  <html><body><h1>Resource not found</h1></body></html>
  HTTP 404
  ```

#### Suggested Changes
- **Publish the OpenAPI/Swagger spec URL in the developer docs**: The agent had to guess several endpoint paths (whoami, .well-known/openapi, openapi.json) before stumbling onto the real spec at https://api.sipgate.com/v2/swagger.json. Add a direct link to this swagger.json (or an equivalent /docs page) in the sipgateio-node README or developer.sipgate.com quickstart so new integrators do not need to probe for it. Verify by checking the quickstart page links directly to the working spec URL.
  Event 106:

  ```text
  HTTP 200 size=191738
  basePath /v2
  ```
- **Fix or update the developer.sipgate.com/api-docs link**: The agent's fetch of https://developer.sipgate.com/api-docs/ returned a GitHub Pages 404. If this URL is referenced anywhere in current onboarding materials, replace it with the correct current docs URL. Verify by curling the linked URL from the quickstart and confirming a 200 response.
  Event 14:

  ```text
  https://developer.sipgate.com/api-docs/
  ```
  Event 16:

  ```text
  <title>Page not found &middot; GitHub Pages</title>
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/39518dfa-b48e-4086-a717-9420516b425d) · [Read transcript](https://www.ax-check.com/sipgate.io/sessions/kimi.json)
Final output gives a pricing table (S/M/L plans with base fee and webhook overage) sourced from sipgate.io/pricing (seq 12-18), plus SMS cost and the caveat that this is on top of the underlying sipgate account cost — concrete figures with stated basis.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent installed the official sipgateio SDK and correctly wired up token-based auth, confirming the request shape reaches the real hosted API (a dummy token returned a genuine 401 Unauthorized from the live endpoint). However, it never obtained real credentials itself — sipgate requires signing up for a full account with identity/phone verification and manually generating a Personal Access Token from the web console, which the agent explicitly says it cannot do. No authenticated operation was ever completed; the final run failed immediately at a credential-presence check.
  Event 76:

  ```text
  credentials require a Personal Access Token from a sipgate account, and signing up for sipgate needs account registration (a German telephony account with identity/phone verification) — nothing I can complete from here
  ```
  Event 57:

  ```text
  API call result: Unauthorized
  ```
  Event 74:

  ```text
  Missing credentials. Copy .env.example to .env and fill in your
  sipgate Personal Access Token (console.sipgate.com), then re-run.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Sign-up requires a verified sipgate account, blocking self-service credentials**: sipgate.io is an add-on to a full sipgate telephony account, not a standalone developer sign-up. Getting a Personal Access Token requires creating and verifying that account first, which the agent could not do inside the sandbox. This is a normal login/account requirement, not a product defect — the agent correctly identified it as an unresolved need for human account creation.
  Event 76:

  ```text
  credentials require a Personal Access Token from a sipgate account, and signing up for sipgate needs account registration (a German telephony account with identity/phone verification) — nothing I can complete from here
  ```
- **SDK's documented createClient function does not exist**: Following what looked like the natural API name, the agent called createClient from the sipgateio package, but the export does not exist — an agent error caused by guessing an entry point rather than checking the package contents first. Recovered quickly once it inspected Object.keys(s).
  Event 32:

  ```text
  TypeError: createClient is not a function
      at Object.<anonymous> (/sandbox/repo/example.js:15:16)
  ```
  Event 35:

  ```text
  createWebhookModule, WebhookResponse, RejectReason, HangUpCause, WebhookDirection, sipgateIO, createCallModule, createContactsModule, createFaxModule
  ```
- **Trial-and-error needed to find correct auth object shape**: The agent tried username/password style credentials, then a malformed UUID token, before locating the exact regex the SDK expects for a valid Personal Access Token. This is agent error from not consulting SDK docs/types first, but it self-corrected using the library's own validator source.
  Event 39:

  ```text
  Error: Invalid email: x
  ```
  Event 47:

  ```text
  Error: Invalid personal access token: 00000000-0000-0000-0000-000000000000
  ```

#### Suggested Changes
- **Add a working createClient/quickstart code sample matching the current SDK API**: The agent's first attempt used createClient(tokenId, token), a natural guess that does not match the actual sipgateio export (sipgateIO({tokenId, token})). Add a copy-pasteable snippet using the real current function name to the npm README or sipgate.io docs homepage, and verify by running the exact snippet against a fresh npm install of sipgateio.
  Event 32:

  ```text
  TypeError: createClient is not a function
      at Object.<anonymous> (/sandbox/repo/example.js:15:16)
  ```
- **Show the exact Personal Access Token format in setup docs**: The SDK silently expects a v4 UUID-shaped token, but nothing in the pricing/setup page tells a developer this before they generate one. Add the token format (or a masked example) to the console.sipgate.com token-generation screen or the sipgate.io setup docs, and confirm by checking that a new user can validate their token client-side before making an API call.
  Event 50:

  ```text
  if (!token.match(/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/gi)) {
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/8cad5cf3-cac5-4806-8236-0b1f114d1028) · [Read transcript](https://www.ax-check.com/sipgate.io/sessions/qwen.json)

#### End-to-end onboarding
- **Onboarding needs a login**: The agent built a working, zero-dependency Node CLI against the real sipgate REST API (verified against the live Swagger spec at api.sipgate.com/v2/swagger.json), but it never obtained an actual sipgate account or Personal Access Token. All authenticated commands (doctor, whoami, sms, call) were only exercised in dry-run mode or against no credentials at all; the agent explicitly tells the user to create a PAT manually via the sipgate web app. No self-service credential acquisition or authenticated hosted-API call was demonstrated in the transcript.
  Event 118:

  ```text
  No credentials found. Copy .env.example to .env and fill in your token.
  ```
  Event 118:

  ```text
  DRY RUN - nothing was sent. Payload for POST /sessions/sms:
  ```
  Event 109:

  ```text
  Create a Personal Access Token in the sipgate web app:
  #   User Settings -> Personal Access Token -> Add token -> pick scopes -> copy
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No real sipgate account/token available in session**: Personal Access Tokens can only be created by logging into an existing sipgate account through the web UI; the sandbox has no such account and no way to sign up and verify a phone/SIP identity autonomously. This is a normal authentication requirement (not a product defect), but it stopped the agent from running any authenticated request against the live API — every command was demonstrated as a dry run or with 'Auth mode: NONE'.
  Event 109:

  ```text
  Create a Personal Access Token in the sipgate web app:
  #   User Settings -> Personal Access Token -> Add token -> pick scopes -> copy
  ```
  Event 118:

  ```text
  No credentials found. Copy .env.example to .env and fill in your token.
  exit=1
  ```

#### Suggested Changes
- **Publish the OpenAPI/Swagger JSON link directly on the REST API docs page**: The agent had to guess the swagger.json path (/v2/doc, then /v2/swagger.json) via trial and error against api.sipgate.com instead of finding it linked from https://www.sipgate.io/rest-api. Adding a direct link to https://api.sipgate.com/v2/swagger.json on that docs page would save this discovery step; verify by checking the rest-api landing page source for a visible link to the spec file.
  Event 48:

  ```text
  /v2/doc/swagger.json -> 200 text/html; charset=utf-8
  /v2/swagger.json -> 200 application/json
  ```
- **Fix the broken example.py link in the personal-access-token Python sample repo**: The README for sipgateio-personalaccesstoken-python references example code but the file could not be fetched. Point the README's usage instructions to the actual script filename in that repo (README says to run personal_access_token.py) and verify by re-fetching the linked raw file over HTTPS and confirming a 200 response.
  Event 68:

  ```text
  === example code ===\n404: Not Found
  ```
  Event 68:

  ````text
  Run the application:
  
  ```bash
  $ python3 personal_access_token.py
  ```
  ````

### Task given to each agent
Help me build a simple example using sipgate. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: B · 79/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html even when Markdown was requested; no content negotiation for agents.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt lists REST, Push, Flow, CI Webhooks, SIP Stream Bridge and use-case docs with links.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt gives agent instructions, API grouping, and links to .md docs and use cases.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt describes five offered APIs and links their references; no MCP or skills claimed.
  ```

- **Pass** — A compact guide representation exists

  ```text
  llms.txt links to compact .md guides like rest-api.md and use-cases.md for agents.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  llms.txt directly links retrievable .md guides (rest-api.md, push-api.md, use-cases.md).
  ```

- **Skipped** — Equivalent instructions fit a token budget

  ```text
  No compact guide body was fetched; only the llms.txt index is available.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown is unsupported, so link preservation across formats cannot be judged.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  llms.txt gives agent instructions, auth guidance, and links to use-case and API .md guides.
  ```

- **Skipped** — Install and next-step links resolve

  ```text
  No install or next-step links were fetched; only homepage and llms.txt evidence supplied.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  llms.txt links use-cases.md with step-by-step task-oriented quickstart instructions for common integrations.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  No installation or CLI setup commands were fetched; only an index of API docs.
  ```

- **Skipped** — Code examples are available without interaction

  ```text
  Index references examples but no fetched page shows code examples without interaction.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  llms.txt states APIs require a sipgate account and points to rest-api.md for authentication.
  ```


### Pricing
- **Skipped** — Pricing is readable without interaction

  ```text
  Only the homepage was fetched; the linked pricing page at /preise was not retrieved.
  ```

- **Skipped** — Prices are stated, not gated

  ```text
  No pricing page content was fetched, so stated prices cannot be judged.
  ```

- **Skipped** — Pricing units and limits are explicit

  ```text
  Pricing units and limits are not shown in the fetched homepage evidence.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  1 of 3 sessions were judged on pricing; 0 fell short. Kimi K3: Final output gives a pricing table (S/M/L plans with base fee and webhook overage) sourced from sipgate.io/pricing (seq 12-18), plus SMS cost and the caveat that this is on top of the underlying sipgate account cost — concrete figures with stated basis. This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  llms.txt links REST API v2, Pulsar, Push, Flow, CI Webhooks references and use cases.
  ```

- **Skipped** — An MCP server is documented and well-formed

  ```text
  No MCP server is mentioned or documented in the fetched llms.txt index.
  ```

- **Skipped** — A CLI install path is documented

  ```text
  No CLI install path is documented in the fetched llms.txt content.
  ```

- **Skipped** — SDK packages resolve on their registries

  ```text
  No SDK package registry lookup was supplied; only a TypeScript SDK is mentioned.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills are published or referenced in the fetched llms.txt.
  ```



[Full report data](https://www.ax-check.com/sipgate.io/report.json)
