When Cursor refuses a SwiftRelay key, start with the endpoint and the key
A refused key usually means the request never reached the part of SwiftRelay that could serve it. In Cursor, the first stop is the relay configuration: the base URL should point to https://api.fastapirelay.com/v1, and the API key field should contain your swft_ key. The swft_ prefix is not decoration. It tells Cursor which credential format to send, so a key copied with extra spaces, a missing prefix or an old placeholder can be rejected before any model is selected.
Copy the three pieces again rather than editing them from memory: the OpenAI-compatible base URL, your SwiftRelay key, and the model name. SwiftRelay is a pay-per-token API relay, so there is no monthly fee and nothing to subscribe to. You top up a balance, and each call deducts only what it used. That makes a clean configuration easy to test: one small request should show up in the usage list with its tokens and cost.
If the key is refused, replace it with a freshly copied key instead of trying to repair it character by character. Check that the entire key has been pasted, that it still begins with swft_, and that Cursor has not saved the field as an empty string. Then confirm that the base URL ends in /v1 and that no extra slash, quotation mark or trailing space has been added.
SwiftRelay supports up to 20 live API keys per account. If you have been switching between several keys, keep the one you intend to use live and check that another key has not taken its place in Cursor. This first pass is quick, and it removes the most common configuration mistakes without a stopwatch running.
Confirm that the selected model is a Cursor-compatible SwiftRelay model
The next check is the model pairing. Cursor uses the OpenAI-compatible endpoint, so it should be paired with a model available through that route. The models covered in this guide are DeepSeek V4 Flash, DeepSeek V4 Pro, GPT-6 Astra and GPT-6.1 Sol. Their API names are deepseek-v4-flash, deepseek-v4-pro, gpt-6-astra and gpt-6.1-sol.
Copy the model name exactly as SwiftRelay lists it. A display label in Cursor may be shortened, while the request still needs the correct API identifier. If a model name is misspelled, outdated or entered with spaces, the key can look correct while the request still fails.
Also check the endpoint type. The OpenAI-compatible base URL for Cursor is https://api.fastapirelay.com/v1, with your swft_ key as the API key. Do not mix credentials or endpoint formats from different setups. A clean run starts with one base URL, one key and one listed model.
SwiftRelay publishes a current price per 1M tokens for each model, with separate input, output and cache-read figures. Those figures are useful during troubleshooting because they let you compare the expected cost of a small test with the cost shown in your usage list. If the model is right but the request is still refused, move on to the account state rather than changing model names at random.
Check the balance, the live-key limit and the request itself
Next, sign in to the SwiftRelay dashboard and check the available balance. SwiftRelay deducts the tokens actually used on each call, so an empty or insufficient balance can stop a request even when the key and model are correct. Top-up amounts are $1.39, $6.94, $13.89, $27.78, $69.44 and $138.89. Pick the amount that suits the run you are about to make, top up, and retry with a small request.
New accounts receive $0.22 in sign-up gift credit. That credit is a useful first test, but keep it separate from the troubleshooting arithmetic: a refused request may not have consumed anything. The usage list is the place to confirm whether tokens and cost were recorded for a call.
Check the number of live keys as well. SwiftRelay allows up to 20 live API keys per account. If Cursor is sending a key that has been removed, or if you are unsure which key is active, generate or copy the intended key and paste it into the Cursor field again.
Then reduce the request. Keep the model, key and endpoint unchanged, but send a short prompt that needs only a small number of input and output tokens. This gives you a clean lap: a simple request, a visible usage entry and a cost you can line up against the published rates.
Worked example: line up the tokens and cost step by step
The following examples show how to read the arithmetic on the SwiftRelay pricing page. They are examples, not quoted charges for a particular request. Each sum uses the stated price per 1M tokens.
Example one: DeepSeek V4 Flash
- Input: 10,000 tokens at $0.2639 per 1M tokens.
- Input cost: 10,000 ÷ 1,000,000 × $0.2639 = $0.002639.
- Output: 2,000 tokens at $1.06 per 1M tokens.
- Output cost: 2,000 ÷ 1,000,000 × $1.06 = $0.00212.
- Cache read: 5,000 tokens at $0.006944 per 1M tokens.
- Cache-read cost: 5,000 ÷ 1,000,000 × $0.006944 = $0.00003472.
- Total: $0.002639 + $0.00212 + $0.00003472 = $0.00479372.
Now read the same three lines in the usage list for that call. The token counts and the cost should correspond. If a line looks unfamiliar, check whether the prompt was sent as input, whether the reply was counted as output and whether cached content was read. The list gives you the components needed for this comparison.
Example two: GPT-6.1 Sol
- Input: 20,000 tokens at $0.1736 per 1M tokens.
- Input cost: 20,000 ÷ 1,000,000 × $0.1736 = $0.003472.
- Output: 4,000 tokens at $0.8542 per 1M tokens.
- Output cost: 4,000 ÷ 1,000,000 × $0.8542 = $0.0034168.
- Cache read: 0 tokens at $0.0347 per 1M tokens.
- Cache-read cost: 0 ÷ 1,000,000 × $0.0347 = $0.
- Total: $0.003472 + $0.0034168 + $0 = $0.0068888.
This second example shows why a zero line matters. A cache-read rate can be present in the pricing table even when a particular request reads no cached tokens. With per-token billing, the usage list lets you see the actual cost rather than estimate a flat package charge.
Run one clean test, then use Messages if the key is still refused
After checking the endpoint, key, model, balance and live-key count, make one short request from Cursor. A successful test should appear in the SwiftRelay usage list with tokens and the cost of that call. If it does, the relay path is working and you can return to your normal prompt. If the key is still refused, open Messages in the dashboard and describe what you checked. Support is handled through Messages, and login is required. There is no support email to search for.
Include the details that speed up the answer: the model identifier you selected, the base URL, whether the key begins with swft_, the balance shown in the dashboard, and the exact error message from Cursor. Do not post the full key in a message. Share the key prefix and the last characters if they help identify which live key was used.
SwiftRelay also gives unused credit back within 11 days of a top-up, minus what was used and the payment fee. Rewards from the referral programme can be withdrawn at a minimum of $4.86 or moved into the balance: 14% comes from each top-up by someone you invited, and 3% comes from the people they invite.
One last look at the basics: base URL https://api.fastapirelay.com/v1, a current swft_ key, a listed model name, and enough balance for the call. That is the pit-stop checklist. Copy the three lines, run the first test, and sign up for SwiftRelay today.