↑↓ navigate open esc close
REST · OpenAPI 3.1

واجهة عقود الحكومة البرمجية، بتكافؤ كامل.

Every screen on Sell to State is backed by a documented REST endpoint under /api/v1. Search, drill into a buyer or supplier, export CSV, and keep saved lists — with one API key and the same paywall the MCP server and CLI share.

# بداية سريعة خلال 60 ثانية

# 1. Create a key in the dashboard
#    Account → API keys
# 2. Verify it
curl -s https://staging-app.selltostate.com/api/v1/whoami \
  -H "x-api-key: sts_xxxxxxxx"

# 3. Search
curl -s "https://staging-app.selltostate.com/api/v1/search\
?scope=tenders&q=cybersecurity" \
  -H "x-api-key: sts_xxxxxxxx"

Same key works for the MCP server and the selltostate CLI.

المصادقة وجدار الدفع 402

Two credential types resolve to one entitlement check. Humans and backends send an API key as x-api-key: sts_…. Autonomous agents self-register over RFC 7591 DCR and present Authorization: Bearer client:<id>.

Until your subject has an active subscription, every data call returns 402 with a payment_link (humans) and a machine_payment affordance (agents can pay off-session via POST /api/v1/pay and continue without a browser). GET /api/v1/whoami is the exception — it returns 200 with active:false so you can decide to pay before doing work.

Plan caps: trial = 20 rows/page, paid = 5,000. Rate limit: 120 data calls/min per credential (faceted search has its own 300/min budget). Saved lists and saved searches are owner-scoped — they require a user x-api-key; an OIDC client token gets 403.

نقاط النهاية.

All under /api/v1. Full params, schemas and "Try it" live in the reference.

GET /api/v1/whoami المصادقة + الصلاحيات + النطاقات. يعيد 200 مع active:false (وليس 402) لمفتاح صالح لكنه غير مشترك — تحقق قبل أن تُنفق.
GET /api/v1/search بحث Typesense متعدد الأوجه ضمن نطاق واحد (tenders | buyers | suppliers | sectors): نتائج + عدّادات الأوجه + ترقيم صفحات.
GET /api/v1/awards صفوف ترسية مرقّمة الصفحات وقابلة للتصفية، مرتبة حسب القيمة. ملف CSV على /api/v1/awards.csv.
GET /api/v1/buyers/{slug} تفاصيل الجهة المشترية (الوكالة): ملخص، اتجاه الإنفاق السنوي، توزيع القطاعات، أبرز الموردين.
GET /api/v1/suppliers/{slug} تفاصيل المورّد: ملخص، اتجاه الترسية السنوي، توزيع القطاعات، أبرز الجهات المشترية.
GET /api/v1/sectors/{slug} تفاصيل القطاع: ملخص، اتجاه سنوي، الشركاء النشطون (?kind=buyers|suppliers).
GET /api/v1/tenders/{id} ترسية واحدة عبر المعرّف الرقمي أو معرّف المناقصة العام، مع الترسيات ذات الصلة.
CRUD /api/v1/lists* قوائم ترسية محفوظة. مقيّدة بالمالك — تتطلب مفتاح x-api-key خاصًا بالمستخدم.
CRUD /api/v1/saved-searches* عمليات بحث محفوظة. مقيّدة بالمالك — تتطلب مفتاح x-api-key خاصًا بالمستخدم.

أمثلة.

Python — بحث في الترسيات

import requests

H = {"x-api-key": "sts_xxxxxxxx"}
r = requests.get(
    "https://staging-app.selltostate.com/api/v1/search",
    params={"scope": "tenders", "q": "cybersecurity", "year_min": 2023},
    headers=H,
)
if r.status_code == 402:
    print("subscribe:", r.json()["payment_link"]); raise SystemExit
data = r.json()
print(data["found"], "matches")
for hit in data["hits"]:
    print(hit)

Node — تفاصيل الجهة المشترية + تصدير CSV

const H = { "x-api-key": process.env.STS_API_KEY };

const buyer = await fetch(
  "https://staging-app.selltostate.com/api/v1/buyers/ministry-of-education",
  { headers: H },
).then((r) => r.json());
console.log(buyer.buyer, buyer.yearly);

// Stream the entitlement-capped CSV
const csv = await fetch(
  "https://staging-app.selltostate.com/api/v1/awards.csv?supplier=ACME",
  { headers: H },
).then((r) => r.text());

القوائم المحفوظة (مفتاح مستخدم)

# Create a list, add a tender, read it back
LID=$(curl -s -X POST https://staging-app.selltostate.com/api/v1/lists \
  -H "x-api-key: sts_xxxxxxxx" -H "content-type: application/json" \
  -d '{"name":"Cyber FY24"}' | jq -r .id)

curl -s -X POST https://staging-app.selltostate.com/api/v1/lists/$LID/items \
  -H "x-api-key: sts_xxxxxxxx" -H "content-type: application/json" \
  -d '{"tender_no":"MOE000ETT24300001"}'

احصل على مفتاح API.

Start a free trial, create a key under Account → API keys, and you're querying in minutes. The full reference — every parameter, response schema, and a live "Try it" — is at docs.selltostate.com.

Start for free →
اشترك