Ceki.me API փաստաթղթեր
Վարձեք իրական բրաուզերային սեսիաներ MCP-ի, Python SDK-ի, JavaScript SDK-ի կամ REST API-ի միջոցով
Արագ սկիզբ
Ceki-ի հետ սկսելու երկու եղանակ — ընտրեք ձեր աշխատանքային հոսքին համապատասխան ուղին։
Ուղի A — Ագենտի ինքնագրանցում MCP-ի միջոցով
Թույլ տվեք ձեր AI ագենտին ինքնուրույն գրանցվել որպես Ceki ագենտ՝ առանց ձեռքով կարգավորման։
1. Ավելացրեք MCP կոնֆիգը (նույնականացում չի պահանջվում)
{
"mcpServers": {
"ceki": {
"url": "https://api.ceki.me/mcp/agent"
}
}
}2. Խնդրեք ձեր ագենտին գրանցվել
"Գրանցիր ինձ որպես Ceki ագենտ։ Անուն՝ my-agent։ Email՝ you@example.com"3. Ագենտը կանչում է register-agent
Backend-ը պատասխանում է api_key-ով և ուղարկում է 6-նիշանոց հաստատման կոդ նշված հասցեին։
4. Հաստատեք email-ը
"Հաստատիր իմ email-ը 123456 կոդով"5. Վերամիացրեք MCP-ն նույնականացմամբ
{
"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-ի միջոցով
Գրանցվեք ձեռքով՝ վեբ-ինտերֆեյսի միջոցով, և ստեղծեք ագենտի բանալի։
- Գրանցվեք ceki.me-ում (email + գաղտնաբառ + OTP)
- Բացեք Dashboard → Agents
- Սեղմեք Create Agent, լրացրեք ձևը, պատճենեք
api_key-ը երկխոսության պատուհանից (ցուցադրվում է մեկ անգամ) - Տեղադրեք բանալին MCP կոնֆիգում (Authorization: Bearer ag_...)
- Ավանդագրեք crypto Dashboard-ում ցուցադրված դրամապանակի հասցեին — կարգավիճակը կդառնա active
{
"mcpServers": {
"ceki": {
"url": "https://api.ceki.me/mcp/agent",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Python SDK
Տեղադրեք SDK-ն և սկսեք բրաուզերներ վարձել մի քանի տող կոդով։
pip install ceki-sdkimport 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+-ի և ժամանակակից բրաուզերների հետ։
npm install @ceki/sdkimport { 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՝
pip install ceki-sdkNode.js՝
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-ների համար)։ |
Արագ սկիզբ
Հինգ հրաման՝ վարձելու, ղեկավարելու և անջատելու համար՝
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 $SIDCLI-ն լոկալ պահպանում է սեսիայի վիճակը — 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 | ընդհանուր սխալ |
2 | CEKI_API_KEY-ը սահմանված չէ |
3 | սեսիան չի գտնվել կամ դուք սեփականատերը չեք |
4 | taimaut (CAPTCHA-ի ընդունում, չատի սպասում և այլն) |
5 | ցանցային / միացման սխալ |
130 | ընդհատվել է (Ctrl-C) |
REST API
Ուղիղ HTTP հասանելիություն ցանկացած լեզվի կամ պլատֆորմի համար։
Վարձել սեսիա
POST /api/sessions/rent
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"geo": "DE",
"duration": 300,
"budget": 0.50
}Պատասխան
{
"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 կոնֆիգում (նույնը, ինչ Արագ սկզբում)՝
{
"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 | Փակել բրաուզերի սեսիան և ազատել ռեսուրսները |
Ագենտի երկխոսության օրինակ
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-ում։
Authorization: Bearer YOUR_API_KEYՁեր API բանալին ստանալը
Տարբերակ 1 (MCP)՝ Կանչեք հանրային register-agent MCP գործիքը — տես Արագ սկիզբ ամբողջական ընթացակարգի համար։
Տարբերակ 2 (Dashboard)՝ Գրանցվեք ceki.me-ում, ապա անցեք Dashboard → Agents → Create Agent։ api_key-ն ցուցադրվում է մեկ անգամ — անմիջապես պատճենեք այն։
Webhook-ներ
Ստացեք իրական ժամանակում ծանուցումներ սեսիայի իրադարձությունների մասին՝ HTTP webhook-ների միջոցով։
Իրադարձություններ
| Իրադարձություն | Նկարագրություն |
|---|---|
session.started | Ստեղծվել է նոր բրաուզերային սեսիա և պատրաստ է |
session.ended | Սեսիան ավարտվել է կամ ժամկետը լրացել է |
session.error | Սեսիայի կատարման ընթացքում տեղի է ունեցել սխալ |
Payload-ի օրինակ
{
"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
}
}