Excession API vs OpenRouter: integration and funding
Both services let an application call models through an OpenAI-compatible API. The practical differences are which models you can select, how requests are routed, and how you fund usage.
Disclosure: Excession Labs publishes the Excession API, Incursion by Excession Labs and this article. The comparison uses public documentation and the live Excession model list, checked on . We did not run a hands-on OpenRouter test or a comparative workload, so the examples explain configuration and say nothing about model quality, latency, reliability or cost.
Excession Labs combines a model API with Incursion, a terminal security agent, under one account and shared funds. OpenRouter provides a multi-provider model catalog and configurable routing. Start with the model and controls your application needs, then compare the relevant prices and funding terms.
Comparison at a glance
| Decision | Excession API | OpenRouter |
|---|---|---|
| OpenAI client base URL | https://api.excessionlabs.ai/v1 | https://openrouter.ai/api/v1 |
| Authentication | Excession API key. | OpenRouter API key. |
| Model choice | Current Excession catalog: DeepSeek V4.1 Flash and DeepSeek V4.1 Flash Abliterated. | Models and provider endpoints from OpenRouter's own catalog. |
| Routing controls | Select an exact Excession model ID. | Provider selection and fallback controls are documented. |
| Funding | Balance from Add funds, or optional monthly plan credit, shared with Incursion. | Standard and Business use purchased credits, with manual or automatic top-up. |
| Inference price | Posted token rates for the selected Excession model. The rates are the same on every plan and on pay as you go. A plan gives more credit than its price, so its effective rate per token is lower. | Provider list prices for inference; credit-purchase fees are separate. |
Sources for the table: Excession API documentation and pricing, OpenRouter quickstart, OpenRouter provider routing and OpenRouter pricing.
Choose a model before comparing a route
Excession currently lists deepseek/deepseek-v4.1-flash-1017 and deepseek-v4.1-flash-abliterated. They are two separate models. The abliterated variant has its own prices and behavior and is not a display-name alias for regular DeepSeek. DeepSeek V4.1 Flash costs $0.035 input, $0.005 cached input and $0.50 output per 1M tokens. The abliterated variant costs $0.20, $0.025 and $0.80. Output includes reasoning tokens. Check the live Excession model catalog when integrating. Kimi K3.1 Pro, GLM 5.5 and GLM 5.3 are listed as coming soon and are not available yet.
OpenRouter separates the model choice from provider routing. Its routing documentation describes a provider object for selecting or excluding providers and controlling fallbacks, and a require_parameters option that restricts routing to providers that support the parameters you request. Check the selected model's endpoints and supported parameters before using those controls.
A familiar model family name does not make two deployments equivalent. Compare the exact model version, variant, context and output limits, supported tools, cache behavior and provider policies. When two catalogs do not list the same model and configuration, evaluate the models as separate options. A token-price table alone cannot show whether one will finish your task at a lower total cost.
Configure the OpenAI Python client
For a basic Chat Completions integration, you change the API base URL, the service's own key and the model identifier from that service's catalog. Both services document this request format: see the Excession Python guide and OpenRouter API reference. Excession also serves OpenAI Responses (/v1/responses) and Anthropic Messages (/v1/messages). The Anthropic SDK uses the base URL https://api.excessionlabs.ai.
Install the Python SDK with python -m pip install openai. Save this as model_request.py. Set your chosen service's key in its environment variable. For OpenRouter, also set OPENROUTER_MODEL to the exact identifier you select from its model catalog. The script deliberately makes no mapping between the two catalogs.
import os
import sys
from openai import OpenAI
service = sys.argv[1] if len(sys.argv) > 1 else "excession"
if service == "excession":
base_url = "https://api.excessionlabs.ai/v1"
api_key = os.environ["EXCESSION_API_KEY"]
model = "deepseek/deepseek-v4.1-flash-1017"
elif service == "openrouter":
base_url = "https://openrouter.ai/api/v1"
api_key = os.environ["OPENROUTER_API_KEY"]
model = os.environ["OPENROUTER_MODEL"]
else:
raise SystemExit("Choose excession or openrouter")
client = OpenAI(
base_url=base_url,
api_key=api_key,
timeout=120.0,
max_retries=0,
)
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "Explain HTTP 401 in one paragraph."}],
max_tokens=2048,
)
print(response.choices[0].message.content)
print(response.usage)
Run python model_request.py excession or python model_request.py openrouter after setting those variables. Each run sends one request to the chosen service and can incur that service's usage charges. Keep keys on your server. Pin the SDK version you validate in your project.
Changing the endpoint is the start of a migration. Check your application's handling of streaming events, reasoning output, tool calls, usage and errors with the selected model. Move any OpenRouter-specific routing options out of requests sent to Excession. If your application relies on those options, design and validate replacement behavior before switching. This minimal example has no automatic retries or fallback policy.
Funding, fees and credit expiration
For Excession, add funds from $0.50 to $1,000; $10 adds $10 of balance. A monthly plan is optional and gives 50% to 150% more plan credit than you pay. Starter is $20/month for $30 of plan credit (+50%); Pro is $100 for $175 (+75%); Max is $200 for $400 (+100%); Ultra is $500 for $1,250 (+150%). All amounts are USD. Each plan is for one person. The API and terminal use the same funds, so include both workloads in your budget. See the plan table on the API page and Excession's billing explanation.
Excession uses plan credit first, then balance when permitted. Plan credit expires at renewal; balance does not expire while the account stays open. With an active plan, you can turn off balance use in Billing, or run excession billing --use-balance off. Requests then use only plan credit, stop when it runs out, and your balance stays. Plan and pay-as-you-go users have the same token prices for a given model, but plan credit is worth more than the plan price, so a plan lowers the effective rate per token. If you spend all the plan credit, Starter costs $20 for $30 of credit (about 67% of the listed rate) and Ultra costs $500 for $1,250 (40%). The API page lists the effective rate for every plan and model.
For OpenRouter, the pricing page lists a 5.5% fee on Standard credit purchases and 8% on Business credit purchases. These fees apply to credit purchases, and the page states that inference is charged at the provider's list price. Confirm the final amount and any taxes at checkout.
OpenRouter's terms, last updated 31 August 2026, reserve the right to expire unused credits 365 days after purchase. Review those terms before prepaying for a long usage horizon. OpenRouter also documents free models with separate restrictions; their availability tells you nothing about the cost or limits of a paid model you select.
For a project estimate, calculate each candidate's input, cached input where applicable, and output charges using its own current rates. Include reasoning-token billing, any additional services, funding fees and unused expiring credit where relevant. Compare a representative task with a defined acceptable result. Do not assume identical token counts, cache hits or output length across different models.
Limits and errors
Excession's API documentation lists a configured limit of 600 requests per minute per key. That caps request rate and commits Excession to no throughput. Funding failures return HTTP 402; an active plan can also return balance_use_off when balance use is disabled. Check the error code before deciding whether to add funds, change the balance setting or retry. A rate limit or a busy model returns HTTP 429 (rate_limited or model_busy); wait for the Retry-After seconds.
OpenRouter documents provider limits, free-model request caps and burst protection in its limits guide. Its pricing page says paid models have no plan-based rate limit, but upstream capacity limits still apply. Build bounded retries around the actual error response, honor a supplied Retry-After, and monitor your account and key budgets.
Choosing for a project
Consider Excession when its available models meet your needs and shared funding with Incursion, the terminal agent, is useful. Its API cost calculator and integration guide help you estimate and configure that usage.
Consider OpenRouter when its catalog and documented provider-selection or fallback controls fit your application. Check the relevant model endpoints, prices and policies together. An application that needs several model families or configurable provider routing should evaluate those requirements explicitly.
Before moving production traffic, validate your required features and representative tasks with the service and model you intend to use. Set a request budget, check results and usage, then decide from your own requirements.
Sources and review date
We first read the OpenRouter pages on 2 November 2026 and read them again, along with the Excession details, on 3 November 2026. Catalogs, prices, fees and limits can change. These are the primary sources:
- Excession API: available models, base URL, funding and limits. The live model list gives current model IDs and prices.
- Excession billing explanation: plan credit, balance and spending order.
- OpenRouter quickstart and API reference: client configuration and request format.
- OpenRouter provider routing: provider and fallback controls.
- OpenRouter pricing: credits, purchase fees, inference billing and free-model restrictions.
- OpenRouter terms: credit-expiration policy.
- OpenRouter limits: funding, budgets and rate-limit handling.