Ceki.me API փաստաթղթեր

Վարձեք իրական բրաուզերային սեսիաներ MCP-ի, Python SDK-ի, JavaScript SDK-ի կամ REST API-ի միջոցով

Արագ սկիզբ

Ceki-ի հետ սկսելու երկու եղանակ — ընտրեք ձեր աշխատանքային հոսքին համապատասխան ուղին։

Ուղի A — Ագենտի ինքնագրանցում MCP-ի միջոցով

Թույլ տվեք ձեր AI ագենտին ինքնուրույն գրանցվել որպես Ceki ագենտ՝ առանց ձեռքով կարգավորման։

1. Ավելացրեք MCP կոնֆիգը (նույնականացում չի պահանջվում)

JSON
{
  "mcpServers": {
    "ceki": {
      "url": "https://api.ceki.me/mcp/agent"
    }
  }
}

2. Խնդրեք ձեր ագենտին գրանցվել

Prompt
"Գրանցիր ինձ որպես Ceki ագենտ։ Անուն՝ my-agent։ Email՝ you@example.com"

3. Ագենտը կանչում է register-agent

Backend-ը պատասխանում է api_key-ով և ուղարկում է 6-նիշանոց հաստատման կոդ նշված հասցեին։

4. Հաստատեք email-ը

Prompt
"Հաստատիր իմ email-ը 123456 կոդով"

5. Վերամիացրեք MCP-ն նույնականացմամբ

JSON
{
  "mcpServers": {
    "ceki": {
      "url": "https://api.ceki.me/mcp/agent",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

6. Համալրեք ձեր դրամապանակը

Խնդրեք ձեր ագենտին՝ «Ցույց տուր իմ դրամապանակը» (կանչում է get-wallet)։ Ավանդագրեք crypto այն wallet.deposit_address-ի վրա, որը հայտնվում է պատասխանում։

7. Պատրաստ է

Կարգավիճակը դառնում է active — բոլոր գործիքները հասանելի են։ Սկսեք բրաուզերներ վարձել։

Ուղի B — Մարդն իր Dashboard-ի միջոցով

Գրանցվեք ձեռքով՝ վեբ-ինտերֆեյսի միջոցով, և ստեղծեք ագենտի բանալի։

  1. Գրանցվեք ceki.me-ում (email + գաղտնաբառ + OTP)
  2. Բացեք Dashboard → Agents
  3. Սեղմեք Create Agent, լրացրեք ձևը, պատճենեք api_key-ը երկխոսության պատուհանից (ցուցադրվում է մեկ անգամ)
  4. Տեղադրեք բանալին MCP կոնֆիգում (Authorization: Bearer ag_...)
  5. Ավանդագրեք crypto Dashboard-ում ցուցադրված դրամապանակի հասցեին — կարգավիճակը կդառնա active
JSON
{
  "mcpServers": {
    "ceki": {
      "url": "https://api.ceki.me/mcp/agent",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Python SDK

Տեղադրեք SDK-ն և սկսեք բրաուզերներ վարձել մի քանի տող կոդով։

bash
pip install ceki-sdk
Python
import asyncio
import os
from ceki_browser import connect

async def main():
    client = await connect(os.environ["CEKI_API_KEY"])
    options = await client.search({"geo": "DE", "language": "en"})
    browser = await client.rent(options[0].schedule_id)

    await browser.navigate("https://example.com")
    snap = await browser.snapshot()
    print(snap.title)

    await browser.close()
    await client.close()

asyncio.run(main())

JavaScript SDK

Աշխատում է Node.js 18+-ի և ժամանակակից բրաուզերների հետ։

bash
npm install @ceki/sdk
JavaScript
import { connect } from '@ceki/sdk';

const client = await connect(process.env.CEKI_API_KEY);
const options = await client.search({ geo: 'DE', language: 'en' });
const browser = await client.rent(options[0].schedule_id);

await browser.navigate('https://example.com');
const snap = await browser.snapshot();
console.log(snap.title);

await browser.close();
await client.close();

Command-line ինտերֆեյս

Երկու SDK-ները տեղադրում են մեկ ընդհանուր ceki CLI-ն ձեր PATH-ում։ Հրամանների հավաքածուն նույնն է՝ անկախ նրանից՝ Python-ից եք եկել, թե Node.js-ից — ընտրեք ձեր stack-ին համապատասխան տեղադրման ուղին։

Տեղադրում

Python՝

bash
pip install ceki-sdk

Node.js՝

bash
npm install -g @ceki/sdk

Տեղադրումից հետո գործարկեք ceki --help՝ համոզվելու համար, որ binary-ն գտնվում է PATH-ում։

Միջավայրի փոփոխականներ

Կոնֆիգուրացիան փոխանցվում է միջավայրի փոփոխականներով, ոչ թե flag-երով։ Սահմանեք դրանք ձեր shell-ում կամ .env-ում՝

ՓոփոխականՊարտադիրՆպատակ
CEKI_API_KEYայոԱգենտի token (ag_...)։ Ստացեք MCP-ի register-agent գործիքի միջոցով (խորհուրդ է տրվում ագենտների համար) կամ Dashboard → Agents → Create Agent-ից։
CEKI_API_URLոչՎերասահմանել API-ի բազային URL-ը։ Կանխադրված՝ https://api.ceki.me։
CEKI_RELAY_URLոչՎերասահմանել բրաուզերի relay WebSocket URL-ը։ Կանխադրված՝ wss://browser.ceki.me/ws/agent։
CEKI_CHAT_URLոչՎերասահմանել chat-service URL-ը։
CEKI_BASIC_AUTH_USERոչHTTP Basic Auth-ի մուտքանուն (միայն պաշտպանված dev/stage endpoint-ների համար)։
CEKI_BASIC_AUTH_PASSոչHTTP Basic Auth-ի գաղտնաբառ (միայն պաշտպանված dev/stage endpoint-ների համար)։

Արագ սկիզբ

Հինգ հրաման՝ վարձելու, ղեկավարելու և անջատելու համար՝

bash
export CEKI_API_KEY=ag_...

SCHEDULE=$(ceki search --limit 1 | jq -r '.[0].schedule_id')
SID=$(ceki rent --schedule $SCHEDULE | jq -r .session_id)
ceki navigate $SID https://example.com
ceki snapshot $SID -o snap.png
ceki stop $SID

CLI-ն լոկալ պահպանում է սեսիայի վիճակը — rent-ից հետո պահպանում է session ID-ն, որպեսզի հաջորդ հրամանները շարունակեն այն SID-ով՝ առանց վերաավարձման։

Հրամանների ուղեցույց

Հայտնաբերում և կենսական ցիկլ

ՀրամանԻ՞նչ է անում
search [--limit N] [--filter K=V]…Ցուցադրել հասանելի բրաուզերները։ Ֆիլտրեր՝ երկիր, ժամ, գին և այլն։
my-browsersՑուցադրել նախապես համաձայնեցված վարձույթի պայմանագրերով բրաուզերները։
rent --schedule ID [--mode incognito|main] [--fingerprint-from FILE]Վարձել բրաուզեր ըստ schedule ID-ի։ --mode main-ը հարցում է հոսթի իրական պրոֆիլը (պետք է լինի pre-authorized)։
sessions [--all] [--limit N] [--json]Ցուցադրել ձեր սեսիաները։ Կանխադրված՝ միայն ակտիվները; --all-ը ցույց է տալիս ավարտվածներն էլ։
stop SIDԱվարտել սեսիան (ազատում է բրաուզերը և կանգնեցնում է վճարման հաշվարկը)։
wait SIDԱրգելափակել մինչև սեսիայի ավարտը։ Օգտակար է cleanup սցենարների համար՝ սեսիայի ժամկետի լրանալուց հետո։

Բրաուզերի ղեկավարում

ՀրամանԻ՞նչ է անում
navigate SID URLԲացել URL վարձված բրաուզերում։
click SID X YՍեղմել viewport-ի կոորդինատներով (X, Y՝ պիքսելներով)։
type SID TEXT [--natural]Մուտքագրել տեքստ ակտիվ տարրում։ --natural-ը ավելացնում է մարդանման ուշացումներ։
scroll SID X Y DYՈլորել (X, Y) կետից DY պիքսելով (բացասական = ներքև)։
screenshot SID -o FILE [--format png|jpeg] [--full]Պահպանել viewport-ի (կամ --full էջի) սքրինշոթը ֆայլում։
snapshot SID -o FILEՆույնը, ինչ screenshot-ը՝ գումարած հոսթից չընթերցված վերջին չատի հաղորդագրությունները։
switch-tab SIDՓոխել բրաուզերի ակտիվ tab-ը։
upload SID --selector CSS --file PATH [--filename NAME]Կցել ֆայլ input[type=file]-ին CSS սելեկտորի միջոցով։

Հոսթի հետ չատ

ՀրամանԻ՞նչ է անում
chat SID send TEXTՈւղարկել տեքստային հաղորդագրություն հոսթին։
chat SID next [--timeout SEC]Արգելափակել մինչև հոսթի հաջորդ հաղորդագրությունը կամ taimaut-ը։
chat SID history [--since TS] [--limit N]Ստանալ չատի անցյալ հաղորդագրությունները (Unix-ts կամ ISO-8601 --since)։
chat SID send-image --image PATH [--text MSG]Ուղարկել պատկեր (ընտրովի նախորդող տեքստով) հոսթին։

Ընդլայնված

ՀրամանԻ՞նչ է անում
profile SID export -o FILE [--domains CSV] [--no-session-storage]Արտահանել cookies / localStorage / sessionStorage JSON-ի։ Ֆիլտր ըստ --domains a.com,b.com։
profile SID import -i FILEՆերմուծել նախկինում արտահանված պրոֆիլ սեսիա։
request-captcha SID [--acceptance SEC] [--completion SEC] [--manual]Խնդրել հոսթին լուծել CAPTCHA։ --manual-ն անջատում է auto-accept-ը, որպեսզի ագենտը քվեարկի բացահայտորեն։
configure SID [--masking-mode VAL] [--fingerprint VAL]Փոխել քողարկումը / fingerprint-ը runtime-ում։
cdp SID --method METHOD [--params JSON]Ուղարկել անմշակ Chrome DevTools Protocol հրաման։ Escape hatch ամեն ինչի համար, ինչը չի ընդգրկվում high-level API-ով։

Արդյունք և սխալներ

Հաջող հրամանները գրում են մեկ JSON տող stdout-ի։ Սխալները գնում են stderr՝ որպես JSON՝ "error" և "code" դաշտերով։ Փոխանցեք stdout-ը jq-ին՝ սցենարներում հրամանները շղթայելու համար։

Ելքի կոդեր

ԿոդԻմաստ
0հաջողություն
1ընդհանուր սխալ
2CEKI_API_KEY-ը սահմանված չէ
3սեսիան չի գտնվել կամ դուք սեփականատերը չեք
4taimaut (CAPTCHA-ի ընդունում, չատի սպասում և այլն)
5ցանցային / միացման սխալ
130ընդհատվել է (Ctrl-C)

REST API

Ուղիղ HTTP հասանելիություն ցանկացած լեզվի կամ պլատֆորմի համար։

Վարձել սեսիա

HTTP
POST /api/sessions/rent
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "geo": "DE",
  "duration": 300,
  "budget": 0.50
}

Պատասխան

JSON
{
  "session_id": "sess_abc123",
  "ws_url": "wss://browser.ceki.me/ws/sess_abc123",
  "host_geo": "DE",
  "rate_per_min": 0.05,
  "expires_at": "2026-04-30T15:05:00Z"
}

Endpoint-ներ

ՄեթոդEndpointՆկարագրություն
POST/api/sessions/rentՎարձել բրաուզերային սեսիա
POST/api/sessions/{id}/navigateՆավարկել դեպի URL
POST/api/sessions/{id}/clickՍեղմել տարրի վրա սելեկտորով
POST/api/sessions/{id}/fillԼրացնել ձևի դաշտերը
POST/api/sessions/{id}/extractՀանել տվյալներ սելեկտորով
POST/api/sessions/{id}/screenshotԱնել սքրինշոթ
DELETE/api/sessions/{id}Ավարտել սեսիան
GET/api/geolocationsՀասանելի աշխարհագրությունների ցանկ
WS/ws/{session_id}Իրական ժամանակում WebSocket ղեկավարում

MCP պրոտոկոլ

Ceki-ն բնականորեն աջակցում է Model Context Protocol-ին — բաց ստանդարտ AI ագենտներին արտաքին գործիքների հետ կապելու համար։ Աշխատում է Claude-ի, GPT-ի, LangChain-ի և ցանկացած MCP-համատեղելի ագենտի հետ։

Կոնֆիգուրացիա

Ավելացրեք Ceki-ն ձեր ագենտի MCP կոնֆիգում (նույնը, ինչ Արագ սկզբում)՝

JSON
{
  "mcpServers": {
    "ceki": {
      "url": "https://api.ceki.me/mcp/agent",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Հասանելի գործիքներ

ԳործիքՆկարագրություն
rent_browserՎարձել իրական բրաուզերային սեսիա կոնկրետ աշխարհագրությունում
navigateՆավարկել բրաուզերը դեպի URL
clickՍեղմել տարրի վրա CSS սելեկտորով
fillԼրացնել ձևի դաշտերը արժեքներով
extractՀանել տեքստ/տվյալներ էջից սելեկտորների միջոցով
screenshotԱնել ընթացիկ էջի սքրինշոթ
closeՓակել բրաուզերի սեսիան և ազատել ռեսուրսները

Ագենտի երկխոսության օրինակ

Dialog
User: "Rent a browser in Germany and check the price on example.com"

Agent: [calls rent_browser(geo="DE", duration=60)]
  -> Session sess_abc123 ready

Agent: [calls navigate(url="https://example.com")]
  -> Page loaded, title: "Example Domain"

Agent: [calls extract(selector=".price")]
  -> Extracted: "$29.99"

Agent: [calls close()]
  -> Session ended

Agent: "The price on example.com is $29.99 (checked from a German IP)."

Նույնականացում

Բոլոր API հարցումները պահանջում են Bearer token Authorization header-ում։

HTTP Header
Authorization: Bearer YOUR_API_KEY

Ձեր API բանալին ստանալը

Տարբերակ 1 (MCP)՝ Կանչեք հանրային register-agent MCP գործիքը — տես Արագ սկիզբ ամբողջական ընթացակարգի համար։

Տարբերակ 2 (Dashboard)՝ Գրանցվեք ceki.me-ում, ապա անցեք Dashboard → Agents → Create Agent։ api_key-ն ցուցադրվում է մեկ անգամ — անմիջապես պատճենեք այն։

Անվտանգություն՝ Երբեք մի բացահայտեք ձեր API բանալին client-side կոդում։ Օգտագործեք միջավայրի փոփոխականներ կամ secrets manager։

Webhook-ներ

Ստացեք իրական ժամանակում ծանուցումներ սեսիայի իրադարձությունների մասին՝ HTTP webhook-ների միջոցով։

Իրադարձություններ

ԻրադարձությունՆկարագրություն
session.startedՍտեղծվել է նոր բրաուզերային սեսիա և պատրաստ է
session.endedՍեսիան ավարտվել է կամ ժամկետը լրացել է
session.errorՍեսիայի կատարման ընթացքում տեղի է ունեցել սխալ

Payload-ի օրինակ

JSON
{
  "event": "session.ended",
  "session_id": "sess_abc123",
  "timestamp": "2026-04-30T15:05:00Z",
  "data": {
    "duration_seconds": 47,
    "total_cost": 0.24,
    "host_geo": "DE",
    "pages_visited": 3
  }
}
Կարգավորեք webhook-ները Dashboard → Settings → Webhooks-ում։ Յուրաքանչյուր webhook URL ստանում է POST հարցում՝ JSON payload-ով։