Skip to content
CuikDocumentation

API: endpoints and practical examples

Choose the right endpoint for sitemaps, Google results, Search Console or performance. Copy requests and build a repeatable workflow.

7 min readUpdated 25/09/2026
On this page
  1. 1. Choose between the API and MCP
  2. 2. Prepare the connection
  3. 3. Find the right endpoint
  4. 4. Three first requests
  5. 5. Automate a small performance audit
  6. 6. Build a practical workflow
  7. 7. Understand errors and limits

1. Choose between the API and MCP

An endpoint is an address that performs a specific operation: extracting sitemap URLs, reading Search Console performance or starting a crawl. Send an HTTP request and use the response in your script or automation tool.

You want to… Start with
Collect the same data weekly using n8n, Make or a script The HTTP API, with explicit parameters.
Explore a project conversationally, prepare a report or manage cards with an assistant Cuik MCP.
Try parameters and get code you can adapt Cuik’s APIs menu and request generators.

This guide covers the API tools, rather than every internal SaaS route or MCP tool. The SaaS Google Analytics view is also separate from the Search Console endpoint below.

2. Prepare the connection

The base URL is https://api.cuik.io. Send your Cuik key in the Authorization header, without Bearer, and a JSON body for POST requests.

Authentication and first request explains where to find the key and how to make a first read-only request without starting an audit.

For this page’s Bash examples, enter the key once without displaying it:

bash
read -r -s -p "Cuik API key: " CUIK_API_KEY
export CUIK_API_KEY

Extraction and analysis calls use your real account and may consume credits. Check the cost and options in the relevant API screen before running a loop. Copying an example does not execute it.

Google search: add "pages": 3 to request three pages of up to ten results, for 3 credits. Viewing Search Console in the Cuik interface uses no credits; extraction through /v1/search_console costs 1 credit per request.

3. Find the right endpoint

Need Method and path Initial parameters Example use
Inventory declared URLs POST /v1/sitemap/urls site Prepare a sample of pages to audit.
Extract a page POST /v1/scrap url Retrieve page content for analysis.
Query Google POST /search q, gl, hl, num, page Observe search results in a market.
Measure web performance POST /v1/pagespeed url, strategy Compare mobile and desktop on an important page.
Produce a screenshot POST /v1/screenshot url, main_page Illustrate an audit with the page concerned.
Read Search Console POST /v1/search_console property_url, startDate, endDate, dimensions Feed an SEO dashboard.
Explore ranked keywords POST /v1/ranked-keywords url, location_code, language_code, limit, offset Find a domain’s queries in the available dataset.
Find keyword ideas POST /v1/keywords-ideas keyword_texts or page_urls, location_ids, language_id Prepare editorial research.
Examine backlinks POST /v1/backlinks url, limit, offset Explore links and referring domains.
Start a technical audit POST /v1/crawl url, max_urls, engine Audit a bounded scope.
List existing audits GET /v1/crawls limit, offset in the URL Retrieve a crawl ID.
Monitor an audit GET /v1/crawl/{crawl_id} ID in the path Wait for completion and read available information.
Read crawl links GET /v1/crawl/{crawl_id}/data/links source or destination, limit, cursor Retrieve a page’s incoming or outgoing links.
Export every link GET /v1/crawl/{crawl_id}/export/links internal, type Download the complete CSV.gz for your own tool.

Filters, defaults, pagination and a PHP example: read and export crawl links.

/search has no /v1 prefix. Do not add one. Geographic parameters are not interchangeable either: for example, use gl: "fr" for search and location_code: 2250 for ranked keywords in France. Use each tool’s generator to select appropriate values.

Interactive screens: sitemap, page extraction, search, PageSpeed, screenshots, Search Console, keywords, backlinks and crawl.

4. Three first requests

Extract a website’s URLs

Replace https://example.com with the website to examine.

bash
curl --fail-with-body --silent --show-error \
  --max-time 120 \
  'https://api.cuik.io/v1/sitemap/urls' \
  -H "Authorization: $CUIK_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"site":"https://example.com"}'

The response contains urls, count, domain, status and optionally error_message. Check status as well as the HTTP status: a successfully received response can indicate that no usable sitemap was found.

A sitemap lists URLs declared by the website. It does not prove that Google indexes them, nor guarantee that every existing page is included.

bash
curl --fail-with-body --silent --show-error \
  --max-time 120 \
  'https://api.cuik.io/search' \
  -H "Authorization: $CUIK_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"q":"logiciel reporting SEO","gl":"fr","hl":"fr","num":10,"page":1}'

This requests the first page of results in French for France. Response sections vary with the search type and available results; organic results are generally found in organic.

Save the query, country, language and collection date alongside the response when comparing observations. A single request does not configure recurring rank tracking: your script schedules and stores subsequent observations.

Read Search Console performance

The property must be connected to your Cuik account. For this production endpoint, use https://example.com for a sc-domain:example.com domain property, or the URL of a URL-prefix property. The sc-domain: format used by other Cuik tools is not accepted by every version of this endpoint.

bash
curl --fail-with-body --silent --show-error \
  --max-time 120 \
  'https://api.cuik.io/v1/search_console' \
  -H "Authorization: $CUIK_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{"property_url":"https://example.com","startDate":"2026-08-01","endDate":"2026-08-31","dimensions":["page"],"searchType":"web","rowLimit":1000}'

Change the dates to an available period. This example groups performance by page. With dimensions: ["query"], you analyse queries; with ["date"], daily changes. Breakdowns do not necessarily return the same coverage: do not assume query rows sum exactly to a property total.

rowLimit limits the batch size. The endpoint also accepts startRow for subsequent batches; the first batch does not prove that you retrieved every available row. This response is not an exhaustive inventory of indexed pages.

5. Automate a small performance audit

This Python 3 script checks at most two URLs, sequentially, on mobile. Replace the URLs, install requests (python -m pip install requests) and use the CUIK_API_KEY environment variable prepared above.

python
import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

urls = ["https://example.com/", "https://example.com/services/"]
output = Path("cuik-pagespeed")
output.mkdir(exist_ok=True)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")

with requests.Session() as client:
    client.headers.update({"Authorization": os.environ["CUIK_API_KEY"]})
    for index, url in enumerate(urls[:2], start=1):
        response = client.post(
            "https://api.cuik.io/v1/pagespeed",
            json={"url": url, "strategy": "mobile"},
            timeout=120,
        )
        response.raise_for_status()
        result = {"url": url, "strategy": "mobile", "data": response.json()}
        target = output / f"{stamp}-{index}.json"
        target.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
        print(f"Result saved: {target}")

Each analysis is a separate request. For desktop, send strategy: "desktop" in another call. A lab score can vary between runs; retain the measurement conditions alongside the result.

The script stops on HTTP errors. It does not automatically repeat an analysis that might already have consumed credits.

6. Build a practical workflow

Use case Possible sequence What your automation stores
Prepare a redesign Sitemap → choose strategic URLs → PageSpeed or bounded crawl URLs, dates, settings and baseline results.
Monitor SEO work Weekly Search Console extraction → storage → comparison The same property, dimensions and comparable periods.
Research competitors Google search → ranked keywords → targeted backlinks Market, queries and observations, without assuming exhaustive coverage.

In n8n or Make, start with an HTTP module: method and URL from the table, key in secure credentials, JSON body and response storage. Your workflow handles recurring triggers and history.

A crawl starts asynchronously: keep the crawl_id and poll its status instead of launching another audit. Start and monitor a crawl explains the sequence and responses.

7. Understand errors and limits

  • 401: check the key and header, especially the absence of Bearer with an sk_ key.
  • 403: read the message: insufficient permissions or unavailable credits, depending on the operation.
  • 404: check the path and requested identifier.
  • 422: correct the named fields, types or formats in the response.
  • 429: respect the indicated retry delay, if provided.
  • Timeout / server error: a missing response does not prove the operation never started. Check available status before repeating a paid action.

When requesting help, retain the endpoint, time, relevant parameters and error message, without sharing the API key. Data collection, credit and source-access limits still apply to scripted calls.