https://1clickindexer.com/api/v1The 1ClickIndexer REST API enables developers, SEO agencies, websites, CMS plugins, and automation systems to submit URLs for indexing workflows and retrieve available indexing status information.
The API provides three primary endpoints:
POST /api/v1/index — Submit URLs for indexing.GET /api/v1/status — Retrieve batch or individual URL status.GET /api/v1/account — Retrieve account information, credit balances, API key metadata, and domain permissions.The API supports two indexing modes: Instant Indexing and Regular Bulk Indexing.
All API requests use the following base URL:
https://1clickindexer.com/api/v1
All requests must use HTTPS.
Each API key is bound to one of two indexing modes and routes requests to the corresponding credit pool.
Mode: INSTANT
The Instant Indexing API is designed for priority URL dispatch, with the documentation describing dispatch to Googlebot and Bingbot within minutes.
The stated success rate is an estimate, not a guarantee that a search engine will index every submitted URL.
Mode: REGULAR
The Regular Bulk Indexing API is designed for standard bulk URL processing through a drip-feed queue.
Confirm plan eligibility with the provider before enabling Regular API access for other plans.
| Feature | Instant | Regular |
|---|---|---|
| Mode value | INSTANT | REGULAR |
| Credit pool | Instant Credits | Regular Credits |
| Credit cost | 1 credit per valid URL | 1 credit per valid URL |
| Estimated success rate | 90%–95% | 40%–50% |
| Processing approach | Priority dispatch within minutes | Drip-feed queue over 5–14 days |
| Status endpoint cost | Free | Free |
These success rates and processing descriptions are taken from the supplied API documentation and have not been independently verified.
Every API request must include a valid API key using one of the supported authentication headers.
Authorization: Bearer ui_live_YOUR_API_KEY Content-Type: application/json
X-API-Key: ui_live_YOUR_API_KEY Content-Type: application/json
Replace ui_live_YOUR_API_KEY with the actual API key issued for your account.
Use one authentication method per request unless the provider specifies otherwise.
The documentation describes the following API key configurations.
Accepts URLs that match the verified root domain or its subdomains.
Intended for third-party backlinks, Tier-2/Tier-3 links, press releases, and URLs associated with multiple client domains.
For an agency or reseller platform, MULTI_DOMAIN permission may be necessary. Confirm availability and approval requirements with the provider.
Example environment configuration:
INDEXER_API_BASE_URL=https://1clickindexer.com/api/v1 INDEXER_API_KEY=ui_live_YOUR_REAL_API_KEY
This is an example configuration. The API key must be supplied by the provider.
POST/api/v1/indexhttps://1clickindexer.com/api/v1/indexThis endpoint submits one or more URLs for indexing processing.
Authorization: Bearer ui_live_YOUR_API_KEY Content-Type: application/json
Alternatively, use the X-API-Key authentication header.
The documented request body contains the following fields:
| Field | Data Type | Description |
|---|---|---|
| urls | Array of strings | URLs to submit for indexing. |
| batchName | String | Optional campaign or batch label; required status is not specified in the supplied documentation. |
{
"urls": [
"https://example.com/blog/post-1",
"https://example.com/blog/post-2",
"https://example.com/product/item-1"
],
"batchName": "October-SEO-Campaign"
}Before submitting a request, the application should:
urls is an array.The documentation identifies empty URL arrays, batches exceeding 500 URLs, and invalid URL formats as potential 400 Bad Request errors.
The provider's exact URL normalization, duplicate detection, and batchName validation rules are not specified.
curl -X POST \
"https://1clickindexer.com/api/v1/index" \
-H "Authorization: Bearer ui_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://example.com/blog/post-1",
"https://example.com/blog/post-2"
],
"batchName": "October-Campaign"
}'The supplied documentation provides the following example response structure:
{
"success": true,
"batchId": "batch-api-1789082001",
"mode": "INSTANT",
"submitted": 2,
"balanceRemaining": 498,
"estimatedSuccessRate": "90% - 95%",
"upstreamStatus": "DISPATCHED"
}| Field | Description |
|---|---|
| success | Indicates whether the API request succeeded. |
| batchId | Identifier assigned to the submitted batch. |
| mode | Indexing mode associated with the request. |
| submitted | Number of URLs reported as submitted. |
| balanceRemaining | Remaining provider credits reported by the API. |
| estimatedSuccessRate | Estimated success rate associated with the mode. |
| upstreamStatus | Upstream dispatch or processing status. |
The values above are illustrative documentation examples, not live account data.
A successful API response confirms request acceptance or processing at the API layer. It does not guarantee that Google has indexed every URL.
The documentation specifies one credit per valid URL.
For example, if 100 valid URLs are submitted, the expected credit requirement is 100 credits.
Before implementation, confirm whether credits are deducted at request acceptance, individual URL validation, or another processing stage. The supplied documentation does not fully define billing behavior for partially accepted batches or failed upstream requests.
For submissions larger than 500 URLs, divide the URLs into batches.
Example:
Store each returned batchId separately so that each batch can be monitored independently.
If a request times out, the client may not know whether the server accepted it.
Recommended behavior:
batchId whenever a response is received.Idempotency support is not documented in the supplied PDF.
GET/api/v1/statushttps://1clickindexer.com/api/v1/statusThe endpoint retrieves status information for a batch or an individual URL.
According to the documentation, status queries consume zero credits.
GET https://1clickindexer.com/api/v1/status?batchId=batch-api-1789082001
| Parameter | Type | Description |
|---|---|---|
| batchId | Query string | Identifier returned by the submission endpoint. |
Use this method to retrieve information about a previously submitted batch.
GET https://1clickindexer.com/api/v1/status?url=https%3A%2F%2Fexample.com%2Fblog%2Fpost-1
| Parameter | Type | Description |
|---|---|---|
| url | Query string | Individual URL whose status is being requested. |
URL-encode query parameter values where necessary to ensure special characters are transmitted correctly.
The documentation describes a response containing success, batch, and records.
Example structure:
{
"success": true,
"batch": {
"id": "batch-api-1789082001",
"mode": "INSTANT",
"totalUrls": 2,
"indexedCount": 1,
"crawledCount": 2,
"estimatedSuccessRate": "90% - 95%"
},
"records": []
}This is an illustrative structure based on the documented fields. The exact records schema and all possible status values are not fully specified in the supplied PDF.
| Field | Description |
|---|---|
| success | Indicates whether the status query succeeded. |
| batch.id | Batch identifier. |
| batch.mode | Indexing mode associated with the batch. |
| batch.totalUrls | Total number of URLs in the batch. |
| batch.indexedCount | Number of URLs reported as indexed. |
| batch.crawledCount | Number of URLs reported as crawled. |
| batch.estimatedSuccessRate | Estimated indexing success rate. |
| records | Individual URL records and available status information. |
The application may display:
Map provider status values to customer-facing labels only after confirming the actual response schema.
Crawled and indexed counts must be displayed separately. A URL being crawled does not necessarily mean it has been indexed by a search engine.
The supplied documentation does not specify a mandatory polling interval.
Recommended implementation:
GET/api/v1/accounthttps://1clickindexer.com/api/v1/accountThis endpoint retrieves account and API key information.
According to the supplied documentation, account queries consume zero credits.
curl -X GET \ "https://1clickindexer.com/api/v1/account" \ -H "Authorization: Bearer ui_live_YOUR_API_KEY"
No request body is specified in the documentation.
| Field | Description |
|---|---|
| instantCredits | Available Instant credit balance. |
| regularCredits | Available Regular credit balance. |
| status | Account status. |
| apiKey.mode | Mode associated with the API key. |
| apiKey.purpose | Domain permission type associated with the key. |
| apiKey.estimatedSuccessRate | Estimated success rate associated with the mode. |
| Allowed domains | Domains permitted for the key. |
| Rate-limit quota | Available API request-limit information. |
The exact nesting and complete JSON schema of all account fields are not fully specified in the supplied PDF.
Use this endpoint to:
Provider credits must remain separate from customer credits sold through the 1ClickIndexer platform.
The supplied documentation lists the following HTTP status codes.
| HTTP Code | Meaning | Recommended Action |
|---|---|---|
| 200 OK | Request succeeded. | Process and store the response. |
| 400 Bad Request | Invalid input, empty URL array, more than 500 URLs, or invalid URL format. | Validate and correct the request. |
| 401 Unauthorized | Missing or invalid API key. | Verify the configured credentials. |
| 402 Payment Required | Insufficient Instant or Regular credits. | Check the relevant provider balance. |
| 403 Forbidden | Domain restriction or Regular API plan restriction. | Verify domain permissions and plan eligibility. |
The provider's exact error-response JSON schema is not specified in the supplied documentation.
The following is a proposed internal response format for your own application, not a documented provider response:
{
"success": false,
"code": "PROVIDER_CREDITS_LOW",
"message": "Insufficient provider credits.",
"retryable": false
}Use consistent internal error codes so that the frontend can display understandable messages without exposing internal credentials or server details.
401 or 403 without correcting the underlying issue.400.402.Retry behavior for HTTP 429 and 5xx responses is not specified in the supplied PDF and should be confirmed during live API testing.
The documentation specifies:
Implement rate limiting and a job queue in your own backend so that multiple customers do not overload the API.
If your platform needs job history beyond 30 days, maintain the required records in your own database. Do not assume provider-side logs remain available after the documented retention period.
The following architecture is recommended for a commercial platform built around the API.
Handles customer login, permissions, and access to platform features.
Validates URL format, submission quantity, and applicable domain restrictions.
Maintains the customer's purchased credits, deductions, refunds, and transaction history.
Handles authentication headers, requests, responses, timeouts, and errors.
Processes large batches and schedules status checks.
Stores customer information, indexing jobs, provider batch IDs, and credit transactions.
Monitors provider credits, API errors, job processing, and customer usage.
The following schema is a suggested implementation design, not a schema required by the provider.
| Field | Purpose |
|---|---|
| user_id | Internal user identifier. |
| Customer email address. | |
| plan_id | Purchased plan identifier. |
| customer_credits | Available customer credits. |
| account_status | Internal account status. |
| created_at | Account creation timestamp. |
| Field | Purpose |
|---|---|
| job_id | Internal job identifier. |
| user_id | Customer who submitted the job. |
| provider_batch_id | Batch ID returned by the provider. |
| mode | Instant or Regular. |
| batch_name | Customer-facing batch label. |
| submitted_count | Number of URLs submitted. |
| indexed_count | Number of URLs reported as indexed. |
| crawled_count | Number of URLs reported as crawled. |
| job_status | Internal status mapped from verified provider responses. |
| created_at | Job creation timestamp. |
| last_checked_at | Last status-check timestamp. |
| Field | Purpose |
|---|---|
| transaction_id | Unique transaction identifier. |
| user_id | Customer associated with the transaction. |
| job_id | Related indexing job, if applicable. |
| credits_added | Credits added to the customer account. |
| credits_deducted | Credits deducted from the customer account. |
| transaction_type | Purchase, deduction, refund, or adjustment. |
| created_at | Transaction timestamp. |
Use database transactions or equivalent atomic operations to prevent duplicate deductions and race conditions when multiple submissions happen simultaneously.
These are two different balances and must not be treated as interchangeable.
Credits available in the API provider account, returned through the account endpoint.
Credits purchased by users on the 1ClickIndexer platform.
Your backend must manage customer credit allocation independently from the provider's balance.
Do not deduct customer credits solely because a request was attempted. Define how accepted, partially accepted, and failed requests are billed.
Confirm provider billing behavior before implementing automatic refunds or credit adjustments.
The following example demonstrates a basic backend client using Node.js and fetch.
It includes basic input validation and HTTP error handling.
const API_BASE_URL =
process.env.INDEXER_API_BASE_URL ||
"https://1clickindexer.com/api/v1";
const API_KEY = process.env.INDEXER_API_KEY;
async function submitUrls(urls, batchName) {
if (!API_KEY) {
throw new Error("Indexer API key is not configured.");
}
if (!Array.isArray(urls) || urls.length < 1 || urls.length > 500) {
throw new Error("Submit between 1 and 500 URLs.");
}
for (const value of urls) {
let parsed;
try {
parsed = new URL(value);
} catch {
throw new Error(`Invalid URL: ${value}`);
}
if (!["http:", "https:"].includes(parsed.protocol)) {
throw new Error("Only HTTP and HTTPS URLs are supported.");
}
}
const response = await fetch(`${API_BASE_URL}/index`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
urls,
...(batchName ? { batchName } : {})
})
});
const data = await response.json();
if (!response.ok) {
const error = new Error(
`Indexer API returned HTTP ${response.status}`
);
error.statusCode = response.status;
error.response = data;
throw error;
}
return data;
}async function main() {
const result = await submitUrls(
[
"https://example.com/page-1",
"https://example.com/page-2"
],
"October-Campaign"
);
console.log("Batch ID:", result.batchId);
console.log("Submitted:", result.submitted);
console.log("Mode:", result.mode);
}
main().catch(console.error);This is a basic integration example. A production implementation should also handle timeouts, malformed responses, transient errors, idempotency, and secure logging.
import os
import requests
API_BASE_URL = os.getenv(
"INDEXER_API_BASE_URL",
"https://1clickindexer.com/api/v1"
)
API_KEY = os.environ["INDEXER_API_KEY"]
def submit_urls(urls, batch_name=None):
if not 1 <= len(urls) <= 500:
raise ValueError(
"Submit between 1 and 500 URLs."
)
payload = {"urls": urls}
if batch_name:
payload["batchName"] = batch_name
response = requests.post(
f"{API_BASE_URL}/index",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()
result = submit_urls(
["https://example.com/page-1"],
"October-Campaign"
)
print("Batch ID:", result.get("batchId"))
print("Submitted:", result.get("submitted"))The example uses the documented submission endpoint. Test it with valid credentials before deploying it to production.
The supplied PDF does not fully specify the following details. Confirm them with the provider or through authorized live API testing.
batchName is optional and its validation rules.MULTI_DOMAIN access requires manual approval.Do not invent unsupported request fields such as callbackUrl, webhookUrl, priority, dripFeedDays, or custom mode parameters unless the provider explicitly documents them.
Before launching the integration:
The 1ClickIndexer API v1.4 documentation describes the core operations needed to build URL submission, status tracking, and account monitoring into a platform.
The documented integration flow is:
The supplied documentation is the basis for this guide. Actual API responses, commercial permissions, billing behavior, and undocumented features must be verified before production deployment.