Buying the Moonshot API for an enterprise is not the same as a personal top-up. Beyond price, you need to confirm the verified entity, corporate payment, invoicing, quotas, data terms, permissions, SLA and exit mechanisms. This article provides an actionable checklist and deliberately avoids specific unit prices. Prices and terms follow the official quote, your contract and the model pricing page.

Note: Moonshot and Kimi are trademarks of their respective owners. This article has no affiliation, agency or partnership with Moonshot AI. The processes and rules mentioned here follow the official pages and the contract.

1. First, confirm what you are buying

The Moonshot open platform behind Kimi provides a token-billed API, not Kimi membership or office seats. The API is used for customer service, knowledge bases, document processing and agents; distributing chat memberships to employees is a separate procurement line. Accounts and keys on the domestic site platform.kimi.com and the international site platform.kimi.ai are not interchangeable. Confirm which site the team uses first, so that the contracting entity and actual usage match.

2. Procurement checklist

Bring the following ten items into discussions with the vendor. Only what can be written into the contract or an attachment counts as settled.

Procurement item Question to confirm Evidence
Contracting and verified entity Are the contract, payment and invoicing entities the same? Business license, enterprise verification record
Top-up and payment Corporate transfer and arrival time Payment receipt, arrival record
Invoicing Invoice type, tax rate, title rules Sample invoice or explanation
Quota and rate limits Concurrency, RPM, TPM, TPD, temporary throttling Official rate-limit page, contract attachment
Data and ZDR Retention, training, deletion, coverage Data processing agreement, ZDR confirmation
Permissions Organization, projects, keys, IP allowlist, member removal Permission matrix, console screenshots
SLA and support Availability, response time, escalation channel Contract SLA or support attachment
Model lifecycle Retirement notice period, migration support Notice terms, version records
Cost governance Budgets, alerts, reconciliation granularity Console configuration, sample bill
Exit mechanism Balance, data and log handling Termination and refund terms

3. Quotas and rate limits

The rate tier is based on the account's cumulative top-up amount, and trial credit does not count toward it. An unfunded Tier0 account has only 1 concurrency and 3 RPM, plus a daily token cap. Paid tiers usually remove the daily cap, but TPM, concurrency and RPM still exist. Specific thresholds follow the official rate-limit page.

Projects share the organization-level rate limit and balance. A project's TPM cannot exceed the organization limit, and peak values must be calculated for the organization as a whole. For negotiation, provide at least five data points: average monthly tokens, peak concurrency, average input-to-output ratio, cache hit rate and Batch share. A monthly total alone is not enough.

Also clarify temporary throttling and risk-control throttling. The official documentation states that the platform may throttle temporarily when the cluster is under heavy load, and that risk-control throttling triggered by abnormal behavior cannot be removed once applied. The architecture must retain queuing, backoff and fallbacks; do not assume that "a high quota means no throttling ever."

4. Top-up and invoicing

After enterprise verification, you can top up online or by corporate bank transfer. The corporate account name must match the verified entity. Transfers usually take 1 to 5 business days to arrive, and the platform credits the account about 10 minutes after receiving the funds. Cross-border transfers and third-party payments often get stuck at the verification and invoicing stages.

Invoices can be requested based on consumption or top-up. An enterprise invoice title can only be the verified entity, while a personal account can choose a personal or company title. The official page shows the invoicing party as Beijing Moonshot Technology Co., Ltd., the category as technical service fee, and the tax rate as 6 percent; the invoicing page takes precedence.

The console supports daily and monthly project budgets and rejects requests automatically when a budget is reached, but billing has about a 10-minute delay and is not real-time risk control. The default low-balance SMS threshold is 20 yuan; production accounts should raise the threshold and keep a billing-cycle buffer.

5. Data terms and ZDR

The platform agreement states that users grant the platform the right to use input, output and feedback for model service optimization within the scope permitted by law. Do not assume by default that data "will not be used for training." The privacy policy states that data is stored in mainland China.

Enterprises can apply for zero data retention (ZDR). When enabled, request content is used only for the current inference and is deleted after the response; enterprise data is not used for training. ZDR does not cover Batch, images or videos uploaded through the file API, Hosted Agents, operational data such as security logs and billing, or third-party services. ZDR must be enabled by the business team and is not included by default in every plan.

For public-facing services, the agreement also requires you to complete security assessments, algorithm filing, content moderation and incident response yourself. During procurement, confirm which materials the platform provides.

6. Permissions and access control

After enterprise verification, an organization can have up to 50 projects and 100 keys; an unverified account has 1 project and 10 keys; personal verification allows 20 projects and 50 keys. Keys created within a project count toward that project's consumption. Team members should each create their own key; do not distribute one key to the whole team.

The IP allowlist is an organization-level switch with a maximum of 20 entries. It accepts only public IPv4 addresses or valid CIDR ranges and does not support IPv6, private networks or loopback addresses. Removing a member from a project invalidates the keys that member created. Before launch, document the permission matrix, offboarding revocation and key rotation as formal processes.

7. SLA, support and exit

As of October 2026, the platform's standard agreement gives no availability commitment, disclaims liability for maintenance interruptions, and caps liability at the total consumption of the most recent calendar month. This does not mean the service is unstable; it means the standard terms do not provide an enterprise-grade SLA.

If you have availability requirements, agree in the contract or an attachment on availability metrics, incident notification deadlines, support response levels, escalation paths, compensation methods and migration support after service termination. If you buy only the API without an SLA, your options during an incident are usually retries and switching. Exit terms should also be explicit: whether the balance is refundable, how long data and logs are retained, how to export bills, and when keys expire.

8. Cost control

  • Caching: Automatic cache TTL defaults to 5 minutes and can be set to 1 hour. Keep the system prompt and knowledge-base prefix stable to improve the hit rate. Cache writes are billed separately.
  • Model routing: Use kimi-k2.6 for general tasks, kimi-k2.7-code for code tasks, and evaluate kimi-k3 for very long materials or complex reasoning.
  • Batch: Official documentation shows Batch at 60 percent of standard pricing. It supports only kimi-k2.6 and kimi-k2.7-code and suits large, low-real-time workloads. It is not subject to real-time concurrency limits but is outside ZDR coverage.
  • Budgets and reconciliation: Set daily and monthly budgets and alerts per project, and review monthly by project, model and scenario. Budget interception has about a 10-minute delay and cannot serve as a real-time circuit breaker.

The hidden cost is retries. The OpenAI SDK retries automatically twice by default, and retries count toward RPM and TPM. Failed 429 requests are not charged, but successful retries are billed normally. Non-streaming requests return 504 after 900 seconds without a response, so long tasks should use streaming output.

9. Fallbacks and failure drills

Do not assume that a single vendor will always be available. Prepare at least three levels of fallback: switch to a smaller model on the same platform, queue or make the workload asynchronous, and switch to a backup vendor or AI gateway. Test the backup channel in advance; do not go looking for a Base URL only when an incident occurs.

Run a drill before launch: simulate 429, timeout and 5xx responses, and confirm that someone owns alerting, switching and rollback. The drill record itself is acceptance material.

10. Pilot acceptance

Start with a pilot of 2 to 4 weeks, then scale after it passes.

  1. Prepare 20 to 50 real tasks and define quality, format and review standards.
  2. Estimate monthly tokens, peak concurrency, cache hit rate and Batch share.
  3. Run for 30 minutes at the target concurrency, recording success rate, P95 latency and 429 types.
  4. Reconcile the bill: confirm that cache writes, cache hits, Batch and retries are billed as expected.
  5. Verify project keys, the IP allowlist, member removal and budget interception.
  6. Verify ZDR coverage, log retention and the deletion process.
  7. Run a fallback drill: can the system switch automatically when the primary model returns 429, times out or returns 5xx?
  8. Negotiate the contract with data: quota, SLA, price, payment terms and exit clauses.
import os
import time
import statistics
from collections import Counter
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["MOONSHOT_API_KEY"],
    base_url="https://api.moonshot.cn/v1",
    max_retries=0,  # disable automatic retries during acceptance to see the real error rate
)

def one_call(_):
    start = time.perf_counter()
    try:
        client.chat.completions.create(
            model="kimi-k2.6",
            messages=[{"role": "user", "content": "Explain the purpose of acceptance testing in one sentence"}],
            max_completion_tokens=128,
        )
        return ("ok", time.perf_counter() - start)
    except Exception as exc:
        resp = getattr(exc, "response", None)
        kind = resp.json().get("error", {}).get("type", type(exc).__name__) if resp else type(exc).__name__
        return (kind, time.perf_counter() - start)

with ThreadPoolExecutor(max_workers=3) as pool:  # adjust to target concurrency; do not use this to stress-test the platform
    results = list(pool.map(one_call, range(30)))

latencies = [d for kind, d in results if kind == "ok"]
print("succeeded", len(latencies), "failed", len(results) - len(latencies))
print("P95 seconds", round(statistics.quantiles(latencies, n=20)[-1], 2) if len(latencies) >= 2 else "N/A")
print("error distribution", Counter(kind for kind, _ in results if kind != "ok"))

This script is only for small-traffic acceptance and does not represent platform capacity. A real stress test requires confirming the terms and quota first to avoid triggering risk controls.

FAQ

Does Moonshot enterprise procurement require enterprise verification?

If you need a contract, corporate payment, enterprise invoices or member management, enterprise verification is required. Personal accounts do not have the full capabilities for these steps.

Can I pay by corporate transfer and request an invoice?

Usually yes after enterprise verification is complete. The corporate account name must match the verified entity, and the invoice title can only be the verified entity. Invoice types and tax rates follow the invoicing page.

Does the standard API have an SLA?

As of October 2026, the standard agreement has no availability commitment and disclaims liability for maintenance interruptions. If you need an SLA, it should be written into the contract or an attachment.

Will data be used for training?

The default agreement allows input and output to be used for model service optimization. Enterprises can apply for ZDR, but exceptions such as Batch and file uploads apply. Customer data should go through review first.

What if the quota is not enough?

A top-up raises the rate tier; higher concurrency, TPM or dedicated support requires a business request. Regardless of the quota, code must handle 429, timeouts and fallbacks.

Next steps

Register a test account on the ZSQH AI Gateway, run a round of real tasks and export usage, latency and error distribution, then use that data to negotiate quotas and the contract. Models, prices and enterprise plans follow the model pricing page.

Related reading: