# AX Check: bulkoid.com
Checked 2026-09-19.

Docs are solid, but clear pricing is hit or miss for agents
The guide index is well organized and API docs are reachable, but 1 of 3 sessions found only vague pricing language instead of an actual rate.

## Onboarding needs a login

## Coding sessions
All three independent sessions completed the pricing task. DeepSeek V4 Pro and Kimi K3 both extracted the exact prepaid charge formula and worked examples from the API docs. Qwen 3.8 Max instead reported pricing as simply "package-based" and "varies by platform, service, and volume," with no rate card or actual figure.

### DeepSeek V4 Pro
[View public run](https://agents.withgauge.com/p/runs/7ca7e746-adab-47c0-a50c-a7bb0e7ba590) · [Read transcript](https://www.ax-check.com/bulkoid.com/sessions/deepseek.json)
Pricing stated as charge = ceil(rate × quantity / 1000), min $0.01, prepaid wallet model, with explicit worked examples ($0.50/1000, $1.25/2500) sourced from GET /services rather than a bare number.
#### End-to-end onboarding
- **Onboarding needs a login**: Agent never obtained a real Bulkoid API key. It read env vars for existing credentials (found none for Bulkoid), tried a placeholder/fake key against the live balance endpoint, and correctly got a 401 Invalid API Key response. Account creation and API key retrieval require a human to register at app.bulkoid.com/register and pull a key from the settings page — this was never done. The agent explicitly built the client to require a user-supplied BULKOID_API_KEY and left order placement dry-run only, never completing an authenticated operation.
  Event 5:

  ```text
  env | grep -iE "bulk|api|key|token" | sed 's/=.*/=<redacted>/'
  ```
  Event 65:

  ```text
  curl -sS -m 8 "https://app.cumparadestept.com/api/v2/balance" -H "X-Api-Key: test"
  ```
  Event 67:

  ```text
  {"error":"INVALID_API_KEY","message":"Invalid API key"}
  
  HTTP 401
  
  ```
  Event 143:

  ```text
  require your real API key and a funded wallet (and would spend money), so I left it as a `--confirm`-gated step rather than a automated live call.
  ```

#### Hallucinated URLs
- **No fabricated URLs used after failure**: The agent guessed at a couple of plausible doc subdomains (docs.bulkoid.com, api.bulkoid.com) but these were exploratory probes, not URLs it then relied on or presented as real in its output. It correctly abandoned them once DNS failed and moved to the real bulkoid.com/api page. Since no invented URL was subsequently treated as valid or embedded in deliverables, this does not rise to a hallucination worth flagging.
  Event 31:

  ```text
  curl: (6) Could not resolve host: docs.bulkoid.com
  HTTP 000  type=
  ```
  Event 31:

  ```text
  curl: (6) Could not resolve host: api.bulkoid.com
  HTTP 000  type=
  ```

#### Blockers
- **No self-service way to get a funded API key**: Placing a real order or confirming authenticated balance/services calls requires a human to register an account, fund a wallet, and copy an API key from the account settings page. This is normal product-required login/credential gating, not a defect — the agent correctly identified this rather than fabricating a key or faking success.
  Event 49:

  ```text
  Before you can call the API, you need a Bulkoid account, funds in your wallet, and an API key:
  Create your account at 
  app.bulkoid.com/register
  .
  ```
  Event 87:

  ```text
  error: HTTP 401: INVALID_API_KEY
  ```
- **No pricing page; rates only discoverable via authenticated API call**: The agent tried the obvious /pricing URL and got a 404. Actual per-service pricing (the 'rate' field) is only exposed through the authenticated GET /services endpoint, which the agent could not call without credentials. This is a product documentation gap: pricing is described conceptually (cents per 1000 units) in the API docs but no public page lists concrete rates.
  Event 58:

  ```text
  pricing page HTTP 404
  
  ```
  Event 94:

  ```text
  There's no fixed price list on a page — actual rates come from `GET /services` per service.
  ```

#### Suggested Changes
- **Add a public pricing or rate-card page**: Create a /pricing page (currently 404s) or a public example of GET /services output so prospective API users can see representative rates in cents-per-1000 without first registering, funding a wallet, and generating an API key. Verify by confirming bulkoid.com/pricing returns real content instead of a 404.
  Event 58:

  ```text
  pricing page HTTP 404
  
  ```
- **Clarify or align the API base host with the branded domain**: The OpenAPI spec and docs point all API traffic to https://app.cumparadestept.com/api/v2 while the customer-facing account/dashboard lives at app.bulkoid.com. Either document why the API host differs from the branded domain or move the API under a bulkoid.com subdomain (e.g. api.bulkoid.com, which currently fails DNS) so integrators aren't wary of pointing production credentials at an unfamiliar third-party-looking domain. Check by confirming the OpenAPI 'servers' entry matches an expected bulkoid.com host.
  Event 66:

  ```text
  "servers": [
      {
        "url": "https://app.cumparadestept.com/api/v2",
        "description": "Production server"
      }
    ]
  ```
  Event 31:

  ```text
  curl: (6) Could not resolve host: api.bulkoid.com
  HTTP 000  type=
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/08ec8b3d-bba2-41ec-b957-9d7e10b78046) · [Read transcript](https://www.ax-check.com/bulkoid.com/sessions/kimi.json)
Pricing section states the wallet-prepaid model, the exact charge formula (ceil(rate×quantity/1000) cents, 1-cent minimum), and quantity constraints (min/max/step) as verified against the docs/OpenAPI spec at seq 34-37, naming the workload-driven assumptions behind the cost.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent found a real hosted API (docs at bulkoid.com/api, OpenAPI spec, live 401 response confirming the endpoint is real) but never obtained an API key. Account creation and wallet funding require a human to register at app.bulkoid.com/register and app.bulkoid.com/settings — the agent explicitly says it cannot proceed without the human doing this, and no authenticated call was ever made.
  Event 37:

  ```text
  {"error":"MISSING_API_KEY","message":"API key is required"}
  
  HTTP 401
  
  ```
  Event 47:

  ```text
  I can't do a live authenticated run (balance check, catalog listing, test order) without you registering an account, adding wallet funds, and providing an API key.
  ```

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

#### Blockers
- **No self-service way to get an API key**: Placing any authenticated call (balance, services, order) requires a Bulkoid account, wallet funds, and an API key pulled from the account settings page — all of which require human registration and payment. This is normal product behavior (a paid, account-gated API), not a bug, but it stopped the agent from completing a live authenticated run within the session.
  Event 19:

  ```text
  Create your account at app.bulkoid.com/register . Add funds to your wallet at app.bulkoid.com/wallet . Orders are charged against your wallet balance, so you cannot place orders without funds. Grab your API key from the account settings page on the customer panel at app.bulkoid.com/settings .
  ```
  Event 47:

  ```text
  I can't do a live authenticated run (balance check, catalog listing, test order) without you registering an account, adding wallet funds, and providing an API key.
  ```

#### Suggested Changes
- **Add a sandbox/test-mode endpoint for the API**: The docs note there is no sandbox and every order charges the real wallet immediately (see 'Pricing model' section fetched at seq 28). Add a documented test/sandbox mode so developers evaluating the API can exercise POST /orders without spending real funds; verify by confirming a sandbox base URL or test API key works without charging the wallet.
  Event 28:

  ```text
  Heads up: orders are charged against your wallet balance immediately. There is no credit / invoice flow — keep your wallet topped up before automating order placement.
  ```
- **Clarify the mismatched API domain in the docs**: The API documentation and OpenAPI spec both point to https://app.cumparadestept.com/api/v2 for a product branded as Bulkoid, which the agent flagged as worth noting for secrets/egress policy. Update the docs at bulkoid.com/api (and the OpenAPI servers field) to use a Bulkoid-branded domain or explain the relationship, and verify by checking the 'servers' field in openapi.json matches expectations.
  Event 36:

  ```text
  servers: [{'url': 'https://app.cumparadestept.com/api/v2', 'description': 'Production server'}]
  ```
  Event 47:

  ```text
  the production base URL is `app.cumparadestept.com` (not a Bulkoid-branded domain — worth noting for secrets/egress policies)
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/4f6c255a-5c35-43c5-a7b5-b1f8a81e755b) · [Read transcript](https://www.ax-check.com/bulkoid.com/sessions/qwen.json)
Final output only says pricing is 'package-based' and 'varies by platform, service, and volume' with 'no published rate card' — no actual cost figure or quoted price is given, just a structural description, so no number-plus-assumptions is stated.
#### End-to-end onboarding
- **End-to-end onboarding not demonstrated**: The agent never attempted to obtain or use product credentials. It only explored the public Bulkoid website and unauthenticated endpoints, found no SDK, API docs, or developer surface, and declined to register an account or go through checkout. No authenticated operation against the product was attempted or demonstrated.
  Event 41:

  ```text
  Bulkoid (bulkoid.com) has no public SDK, no documented REST API, and no developer docs. The site is a consumer checkout store — every flow routes through "Register / Login / My Orders" in a web UI.
  ```
  Event 41:

  ```text
  That's all I can verify without creating an account and going through checkout, which I won't do.
  ```

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

#### Blockers
- **No public SDK, API, or developer docs for Bulkoid**: Product behavior/limitation: the agent checked npm, PyPI, GitHub, and the bulkoid.com site itself and found only a consumer web storefront with Register/Login/My Orders flows, no API or SDK reference, and a 404 on a guessed API path. This is a genuine product gap, not agent error or missing test credentials.
  Event 11:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/bulkoid - Not found
  ```
  Event 39:

  ```text
  ---
  200
  404
  
  ```
  Event 41:

  ```text
  There's nothing published I could write a quickstart against, and per your instructions, that alone means stop.
  ```
- **Agent declined to proceed due to product's nature and lack of API surface**: Combination of product design (no API) and the agent's own policy stance (unwilling to automate purchases of synthetic social engagement) caused the session to stop before any build attempt. This is an agent judgment call layered on top of the missing developer workflow, not a test environment issue.
  Event 41:

  ```text
  Even if it had an API, I wouldn't build an integration for it: purchased engagement is synthetic/inauthentic activity that violates every major platform's terms of service
  ```

#### Suggested Changes
- **Publish developer API documentation if programmatic access is intended**: If Bulkoid intends to support any automated or SDK-based integration, add a documented REST API or SDK reference (e.g., at bulkoid.com/api or a docs subdomain) rather than the current consumer-only Register/Login/My Orders web flow. Verify by having a fresh agent session find and call a documented endpoint successfully instead of hitting a 404 on a guessed path.
  Event 41:

  ```text
  There's nothing published I could write a quickstart against, and per your instructions, that alone means stop.
  ```

### Task given to each agent
Help me build a simple example using Bulkoid. 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 · 73/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 for a Markdown Accept header; no Markdown representation offered.
  ```

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

  ```text
  llms.txt links homepage, FAQ, API docs, OpenAPI spec, blog, sitemap and policies with guidance.
  ```

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

  ```text
  llms.txt gives 'use the most specific page' guidance and per-section navigation instructions.
  ```

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

  ```text
  llms.txt documents the API, OpenAPI spec, auth, account and ordering links.
  ```

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

  ```text
  llms.txt is a standalone Markdown guide covering services, API, tools and policies.
  ```

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

  ```text
  llms.txt fetched directly at 200 as text/plain Markdown with organized sections.
  ```

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

  ```text
  llms.txt is 2787 tokens, well under the 8000-token budget.
  ```

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

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

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

  ```text
  No compact agent guide was fetched; only llms.txt and API docs are present.
  ```

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

  ```text
  No install or next-step links were sampled for resolution.
  ```


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

  ```text
  Only llms.txt fetched; no docs quickstart page retrieved to judge.
  ```

- **Skipped** — Installation commands are extractable

  ```text
  No installation or CLI guide page fetched; llms.txt shows no install commands.
  ```

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

  ```text
  No API docs or code example page fetched; only llms.txt index available.
  ```

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

  ```text
  llms.txt mentions API auth but no fetched page details prerequisites or keys.
  ```


### Pricing
- **Failed** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 1 fell short. DeepSeek V4 Pro: Pricing stated as charge = ceil(rate × quantity / 1000), min $0.01, prepaid wallet model, with explicit worked examples ($0.50/1000, $1.25/2500) sourced from GET /services rather than a bare number. Kimi K3: Pricing section states the wallet-prepaid model, the exact charge formula (ceil(rate×quantity/1000) cents, 1-cent minimum), and quantity constraints (min/max/step) as verified against the docs/OpenAPI spec at seq 34-37, naming the workload-driven assumptions behind the cost. Qwen 3.8 Max: Final output only says pricing is 'package-based' and 'varies by platform, service, and volume' with 'no published rate card' — no actual cost figure or quoted price is given, just a structural description, so no number-plus-assumptions is stated. This behavioural item does not affect the fast grade.
  ```

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

  ```text
  Homepage shows only a '$0.99 Prices From' stat; no dedicated pricing page was fetched.
  ```

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

  ```text
  Homepage mentions transparent starting prices but no actual price list was fetched.
  ```

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

  ```text
  No pricing page fetched, so units and limits cannot be judged.
  ```


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

  ```text
  Bulkoid API docs at /api and OpenAPI 3.0 spec at /openapi.json both fetched successfully.
  ```

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

  ```text
  No MCP server is documented anywhere in the fetched Bulkoid pages.
  ```

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

  ```text
  No CLI install path is documented in the fetched Bulkoid pages.
  ```

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

  ```text
  No SDK or package registry lookup was supplied for Bulkoid.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills are published or mentioned in the fetched Bulkoid pages.
  ```



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