Docs & Guides
Getting Started
- Create an account and pick a credit package from the Packages page.
- Open your Dashboard and paste one link per line into the submission box — each line should be a full URL starting with
https://. - Click Queue for Indexing. Each link costs one credit and joins the submission queue immediately.
- Watch the Submission History table on your dashboard — it updates live as each link resolves, no refresh needed.
Submission Statuses
Every link you submit moves through one of four statuses, shown as a colored badge in your Submission History:
- pending
- Just submitted and waiting in the submission queue. Most submissions are sent within 1 to 3 minutes.
- submitted
- Accepted by the search engines we submit to and queued for crawling. This isn't yet confirmation that the page is indexed: we check Google for it on day 2, 7 and 14 and mark it "on Google" in your Submission History when it appears. Your Links Submitted count on the Settings page goes up by one for each.
- failed
- Not sent because the site doesn't have your key file yet (Settings → Domain Verification), or not accepted by the search engines. The credit comes back to your balance automatically; verify the site, then submit the link again.
- refunded
- A submission that stayed stuck in the queue for more than 7 days is automatically refunded — the credit is returned to your balance with no action needed from you.
Credits & Billing
Every plan is a one-time credit pack — 1 credit submits 1 link, and credits never expire.
Launch
150 credits · $9
Starter
1,000 credits · $50
Professional
3,500 credits · $150
Enterprise
5,000 credits · $200
Agency
10,000 credits · $350
Pricing shows in INR with Indian payment methods (UPI, cards, netbanking) for visitors in India, and in USD for everyone else — this is detected automatically, there's nothing to switch. Purchases are final, with one exception: credits spent on a link that's still stuck pending after 7 days are refunded automatically. See the Refunds & Cancellations page for full terms.
Account Settings
Everything under Settings takes effect immediately:
- Email Alerts / Indexing Updates / Product News — toggle which emails you receive independently.
- Timezone — controls how submission timestamps are displayed across your dashboard.
- Phone Number — used only to pre-fill Indian payment methods (UPI/cards) at checkout; it's never required to use the product.
Getting Help
Open a ticket from the Support page and pick the category that fits best:
Technical ProblemBilling & PaymentsAccount ManagementIndexing QuestionFeature SuggestionSomething Else
Response times depend on the priority you set when opening the ticket:
Low
48-72h
Medium
24-48h
High
12-24h
Urgent
2-4h
API Reference
Connect IndexLaunch to your own code, CMS or deploy pipeline so new and updated pages are sent for indexing automatically. The API uses the same credit balance as your dashboard.
How it works
- Your server sends a list of page URLs to IndexLaunch, signed with your API key.
- IndexLaunch checks each URL, deducts one credit per URL and sends it to search engines for crawling. You get back one ID per URL.
- Use those IDs to check each URL's status whenever you like.
Set up in 4 steps
- Sign in and create a key in Settings → API Access. It's shown once, so copy it straight away.
- Store the key as a secret environment variable on your server or CI, for example
INDEXLAUNCH_API_KEY. Never put it in browser code or a public repository. - Verify each domain you'll submit (Settings → Domain Verification). Search engines reject URLs from unverified sites.
- Call the API from your backend, a script or your deploy pipeline. The examples below are ready to copy.
Authentication
Send your key in the Authorization header of every request as Bearer YOUR_KEY. All requests use HTTPS and JSON.
Authorization: Bearer il_live_xxxxxxxxxxxxxxxxxxxxxxxx
Submit URLs
Send up to 500 full URLs (starting with https://) per request. Each URL costs one credit. The response lists one ID per URL, in the same order you sent them.
POST https://www.indexlaunch.site/api/v1/submit
Authorization: Bearer il_live_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
{ "urls": ["https://example.com/page-1", "https://example.com/page-2"] }200 OK
{ "submitted": 2, "ids": ["j57...", "j58..."] }Check a URL's status
Pass an ID from the submit response. You can only read URLs submitted by your own account.
GET https://www.indexlaunch.site/api/v1/urls/j57... Authorization: Bearer il_live_xxxxxxxxxxxxxxxxxxxxxxxx
200 OK
{
"id": "j57...",
"url": "https://example.com/page-1",
"status": "indexed",
"submittedAt": 1757740800000,
"indexedAt": 1757741100000
}Response fields
id- The submission ID.
url- The URL you submitted.
status- One of the status values below.
submittedAt- When it was submitted, in milliseconds since the Unix epoch.
indexedAt- When search engines accepted it. Missing until then.
Status values
pending- Received and waiting to be sent. Most URLs move on within a few minutes.
indexed- Accepted by search engines and queued for crawling. The dashboard shows this as "Submitted". It doesn't yet confirm the page is indexed.
failed- Search engines didn't accept the URL, most often because the domain isn't verified. The credit is returned automatically.
refunded- The URL was stuck for more than 7 days, so the credit was returned automatically.
Code examples
curl
curl -X POST https://www.indexlaunch.site/api/v1/submit \
-H "Authorization: Bearer $INDEXLAUNCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/new-post"]}'JavaScript (Node.js 18+)
const res = await fetch("https://www.indexlaunch.site/api/v1/submit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INDEXLAUNCH_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
urls: ["https://example.com/new-post", "https://example.com/pricing"],
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error);
console.log(`Submitted ${data.submitted} URLs`, data.ids);Python
import os
import requests
res = requests.post(
"https://www.indexlaunch.site/api/v1/submit",
headers={"Authorization": f"Bearer {os.environ['INDEXLAUNCH_API_KEY']}"},
json={"urls": ["https://example.com/new-post"]},
timeout=30,
)
data = res.json()
if not res.ok:
raise RuntimeError(data["error"])
print(data["submitted"], data["ids"])After each deploy (GitHub Actions)
# .github/workflows/indexlaunch.yml
name: Submit new pages
on:
workflow_dispatch:
push:
branches: [main]
jobs:
submit:
runs-on: ubuntu-latest
steps:
- name: Send changed URLs to IndexLaunch
env:
INDEXLAUNCH_API_KEY: ${{ secrets.INDEXLAUNCH_API_KEY }}
run: |
curl --fail-with-body -X POST https://www.indexlaunch.site/api/v1/submit \
-H "Authorization: Bearer $INDEXLAUNCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/new-post"]}'Errors
Errors return JSON with an error field holding a message you can show or log.
400- Bad request: the body has no
urlslist, a URL isn't valid, more than 500 URLs were sent, there aren't enough credits, or requests are coming too fast. 401- The key is missing, wrong or revoked.
403- The account is suspended.
404- No submission with that ID belongs to your account.
Good practice
- Submit only new or changed pages, not your whole site on every deploy.
- Batch URLs into one request instead of sending one request per URL.
- If you get "Too many requests" or a rate-limit message, wait a minute and retry. Your account's exact limits are shown in Settings → API Access.
- If a key leaks, revoke it in Settings and create a new one. Revoked keys stop working immediately.
Want more on how indexing actually works? Read our guides.