B2BB2B LLM

Partner API τελικά σημεία

Συμπληρώστε Partner API παραδείγματα αιτημάτων και απαντήσεων για κλειδιά, ομάδες, αιτήματα και συναλλαγές.

Partner API τελικά σημεία

Βασική διεύθυνση URL:

https://p-api.model-gate.com

Όλα τα αιτήματα απαιτούν:

Authorization: Bearer mg_partner_...
Accept: application/json

Όλες οι νομισματικές και οριακές τιμές είναι δεκαδικές συμβολοσειρές JSON. Μην τους αναλύετε ως δυαδικούς αριθμούς κινητής υποδιαστολής.

Κοινοί κανόνες ενοποίησης τραπεζών

Όλες οι εξωτερικές χρονικές σημάνσεις είναι UTC RFC3339. Χρήση τελικών σημείων συλλογής limit (1–100) συν ένα αδιαφανές cursor; Ποτέ μην αναλύετε ή κατασκευάζετε τα περιεχόμενα του δρομέα. POST, PATCH, και DELETE απαιτούν αιτήματα Idempotency-Key; επαναλάβετε την ίδια λειτουργία με το ίδιο πλήκτρο μετά από χρονικά όρια. Τα αρχεία αδυναμίας διατηρούνται για 7 ημέρες. Οι απαντήσεις περιλαμβάνουν X-Request-ID, είναι Cache-Control: no-store, και όλα τα σφάλματα είναι JSON. Οι αποκρίσεις ορίου ρυθμού είναι HTTP 429 με Retry-After και X-RateLimit-* κεφαλίδες. Τα άγνωστα πεδία σώματος/ερωτήματος απορρίπτονται.

Το συμβόλαιο OpenAPI 3.1 με δυνατότητα ανάγνωσης από μηχανή διανέμεται ως resources/contracts/partner-api.openapi.yaml.

Δημιουργήστε ένα κλειδί API

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/keys \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Telegram user 123",
    "group_id": "GROUP_PUBLIC_ID",
    "rpm_limit": 30,
    "concurrency_limit": 2,
    "spend_limit": "20.0000000000",
    "usage_price_basis": "official_price",
    "usage_price_multiplier": "0.900000"
  }'

Απάντηση — 201

{
  "data": {
    "public_id": "KEY_PUBLIC_ID",
    "group_id": "GROUP_PUBLIC_ID",
    "name": "Telegram user 123",
    "key_prefix": "mg_live_ab12",
    "key": "mg_live_ab12...",
    "status": "active",
    "rpm_limit": 30,
    "concurrency_limit": 2,
    "spend_limit": "20.0000000000",
    "usage": "0.0000000000",
    "total_spent": "0.0000000000",
    "usage_price_basis": "official_price",
    "usage_price_multiplier": "0.900000",
    "effective_usage_price_basis": "official_price",
    "effective_usage_price_multiplier": "0.900000"
  }
}

Το πλήρες key Η τιμή επιστρέφεται μόνο μετά τη δημιουργία ή την περιστροφή.

Λίστα κλειδιών API

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/keys \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": [
    {
      "public_id": "KEY_PUBLIC_ID",
      "group_id": "GROUP_PUBLIC_ID",
      "name": "Telegram user 123",
      "status": "active",
      "spend_limit": "20.0000000000",
      "usage": "3.2500000000",
      "total_spent": "1.1400000000"
    }
  ]
}

Η λίστα ταξινομείται πρώτα η νεότερη και χρησιμοποιεί αδιαφανή σελιδοποίηση του δρομέα. Πέρασμα limit=1..100; όταν meta.has_more είναι αλήθεια, στείλε meta.next_cursor ως το επόμενο cursor.

Λάβετε ένα κλειδί API

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": {
    "public_id": "KEY_PUBLIC_ID",
    "group_id": "GROUP_PUBLIC_ID",
    "name": "Telegram user 123",
    "status": "active",
    "rpm_limit": 30,
    "concurrency_limit": 2,
    "spend_limit": "20.0000000000",
    "usage": "3.2500000000",
    "total_spent": "1.1400000000",
    "effective_usage_price_basis": "official_price",
    "effective_usage_price_multiplier": "0.900000"
  }
}

Ενημερώστε ένα κλειδί API

PATCH αντικαθιστά μόνο τις υποστηριζόμενες μεταβλητές τιμές. Για να αφαιρέσετε το κλειδί από μια ομάδα, στείλτε ένα κενό group_id. Για να κληρονομήσετε τις ρυθμίσεις αποτίμησης, στείλτε null για τη βάση και τον πολλαπλασιαστή σε επίπεδο κλειδιού.

Αίτηση

curl -X PATCH https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated user name",
    "group_id": "GROUP_PUBLIC_ID",
    "rpm_limit": 60,
    "concurrency_limit": 4,
    "spend_limit": "40.0000000000",
    "usage_price_basis": null,
    "usage_price_multiplier": null
  }'

Απάντηση — 200

{
  "data": {
    "public_id": "KEY_PUBLIC_ID",
    "spend_limit": "40.0000000000",
    "usage": "3.2500000000",
    "effective_usage_price_basis": "user_price",
    "effective_usage_price_multiplier": "1.000000"
  }
}

Διαγράψτε ένα κλειδί API

Αίτηση

curl -X DELETE https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση — 200

{"data":{"deleted":true}}

Παγώστε και ξεπαγώστε ένα κλειδί

Αίτημα παγώματος

curl -X POST https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/freeze \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Πάγωμα απόκρισης

{"data":{"public_id":"KEY_PUBLIC_ID","status":"frozen"}}

Αίτημα κατάργησης παγώματος

curl -X POST https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/unfreeze \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Ξεπαγώστε την απόκριση

{"data":{"public_id":"KEY_PUBLIC_ID","status":"active"}}

Η κατάργηση του παγώματος απαιτεί επαληθευμένη διεύθυνση ηλεκτρονικού ταχυδρομείου κατόχου.

Περιστρέψτε ένα κλειδί

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/rotate \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση — 200

{
  "data": {
    "public_id": "KEY_PUBLIC_ID",
    "status": "active",
    "key_prefix": "mg_live_cd34",
    "key": "mg_live_cd34..."
  }
}

Επαναφορά χρήσης κλειδιού

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/reset-usage \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση — 200

{
  "data": {
    "public_id": "KEY_PUBLIC_ID",
    "usage": "0.0000000000",
    "total_spent": "1.1400000000"
  }
}

Η επαναφορά της χρήσης δεν αλλάζει τη διάρκεια ζωής ή το υπόλοιπο του λογαριασμού.

Λάβετε χρήση κλειδιού

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/usage \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": {
    "key_id": "KEY_PUBLIC_ID",
    "usage": "3.2500000000",
    "total_spent": "1.1400000000"
  }
}

Λάβετε όριο δαπανών και υπολειπόμενη χρήση

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/spent-limit \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": {
    "key_id": "KEY_PUBLIC_ID",
    "spend_limit": "20.0000000000",
    "usage": "3.2500000000",
    "remaining": "16.7500000000"
  }
}

Οταν spend_limit είναι μηδέν, είναι απεριόριστο και remaining είναι null.

Λάβετε τα πιο πρόσφατα αιτήματα για ένα κλειδί

Το λεπτομερές ιστορικό αιτημάτων είναι ένα σύνολο δεδομένων εντατικής διατήρησης που ελέγχεται από API_REQUESTS_HOT_RETENTION_DAYS (προεπιλογή 7 ημέρες). Τα μεταδεδομένα απόκρισης αναφέρουν το παράθυρο ενεργής διατήρησης. Χρησιμοποιήστε συναλλαγές υπολοίπου για μακροπρόθεσμη οικονομική συμφωνία.

limit είναι προαιρετικό, ορίζεται από προεπιλογή στο 10 και πρέπει να είναι ακέραιος από το 1 έως το 100. Τα οριστικά αιτήματα ταξινομούνται από finished_at πρώτα το νεότερο. Οταν meta.has_more είναι true, περάστε meta.next_cursor ως το αδιαφανές before παράμετρος ερωτήματος για ανάκτηση της επόμενης παλαιότερης σελίδας. Μην αναλύετε ή κατασκευάζετε δρομείς μόνοι σας.

Η απάντηση περιέχει αμετάβλητες χρεώσεις χρηστών και επίσημων ανά εκατομμύριο διακριτικών για αιτήματα που ολοκληρώθηκαν μετά τη μετεγκατάσταση 059_request_pricing_audit_snapshot.sql. Υπολογίζει επίσης pricing_snapshot.usage_price από τις αποθηκευμένες τιμές βάσης, πολλαπλασιαστή και ιστορικού χωρίς αποθήκευση άλλου συνόλου τιμών. Αυτό καθιστά την ανεξάρτητη αποτίμηση ορίου χρήσης ελεγκτή μετά την αλλαγή των τιμών καταλόγου. Ιστορικά αιτήματα που δημιουργήθηκαν πριν από την επιστροφή της μετεγκατάστασης 059 pricing_snapshot.available: false αντί να αντικαταστήσει τις τρέχουσες τιμές. Τα αιτήματα που εκτελούνται μέσω δέσμης API συμβατών με Claude/OpenAI επισημαίνονται ρητά με request_mode: "batch" και να περιλαμβάνουν το πρωτόκολλό τους, το αναγνωριστικό παρτίδας εργασίας, custom_id, και το στιγμιότυπο πολλαπλασιαστή τιμής παρτίδας Model Gate.

Η καθυστέρηση χρησιμοποιεί σταθερά ονόματα επιχειρήσεων/συνεργατών: gateway_overhead_ms, upstream_first_token_ms, και e2e_first_token_ms. Η τιμή του πρώτου διακριτικού E2E μετράται από την έναρξη του αιτήματος Πύλης Μοντέλου έως το πρώτο διακριτικό πραγματικού περιεχομένου και εξαιρεί τον χρόνο δικτύου/TLS από την πλευρά του πελάτη. Το Partner API εκθέτει μόνο το ρητό e2e_first_token_ms όνομα; παραμένει η στήλη εσωτερικής αποθήκευσης api_requests.first_token_ms.

Αίτηση

curl "https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/requests?limit=10" \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": [
    {
      "request_id": "01KZ...",
      "key_id": "KEY_PUBLIC_ID",
      "group_id": "GROUP_PUBLIC_ID",
      "model": "claude-opus-4.7",
      "endpoint": "messages",
      "method": "POST",
      "status": "succeeded",
      "status_code": 200,
      "is_stream": false,
      "request_mode": "batch",
      "batch": {
        "protocol": "claude",
        "job_id": "msgbatch_01K...",
        "custom_id": "request-1",
        "price_multiplier": "0.5"
      },
      "tokens": {
        "input": 120,
        "output": 45,
        "cached": 0,
        "cache_write": 0,
        "reasoning": 0,
        "total": 165
      },
      "cost": "0.0000345",
      "usage_cost": "0.00345",
      "official_base_cost": "0.000345",
      "currency": "USD",
      "usage_pricing": {
        "basis": "official_price",
        "base_field": "official_base_cost",
        "base_amount": "0.000345",
        "multiplier": "10",
        "usage_cost": "0.00345",
        "formula": "round(base_amount * multiplier, 10)"
      },
      "pricing_snapshot": {
        "available": true,
        "unit": "per_1m_tokens",
        "user_price": {
          "input": "0.2",
          "output": "1",
          "cache_read": "0.02",
          "cache_write": "0.25",
          "reasoning": "1"
        },
        "official_price": {
          "input": "1",
          "output": "5",
          "cache_read": "0.1",
          "cache_write": "1.25",
          "reasoning": "5"
        },
        "usage_price": {
          "input": "10",
          "output": "50",
          "cache_read": "1",
          "cache_write": "12.5",
          "reasoning": "50"
        }
      },
      "duration_ms": 842,
      "gateway_overhead_ms": 34,
      "upstream_first_token_ms": 156,
      "e2e_first_token_ms": 190,
      "settlement_status": "settled",
      "started_at": "2026-08-05T10:00:00Z",
      "finished_at": "2026-08-05T10:00:00.842Z"
    }
  ],
  "meta": {
    "key_id": "KEY_PUBLIC_ID",
    "limit": 10,
    "returned": 1,
    "order": "finished_at_desc",
    "next_cursor": "eyJ0IjoiMjAyNi0wOC0wNSAxMDowMDowMCIsInAiOiIwMUt...",
    "has_more": true
  }
}

Για να συνεχίσετε με την επόμενη παλαιότερη σελίδα:

curl "https://p-api.model-gate.com/api/v1/partner/keys/KEY_PUBLIC_ID/requests?limit=10&before=NEXT_CURSOR" \
  -H "Authorization: Bearer mg_partner_..."

Ένα άκυρο before ο κέρσορας επιστρέφει HTTP 422. Ο δρομέας περιέχει μόνο τη θέση χρόνου τερματισμού και το δημόσιο αναγνωριστικό εξωτερικού αιτήματος. Τα εσωτερικά αριθμητικά αναγνωριστικά αιτημάτων δεν εκτίθενται ποτέ.

Για σύγχρονα και εγγενή αιτήματα ασυγχρονισμού, request_mode είναι sync ή async και το batch το αντικείμενο παραλείπεται. Το αποθηκευμένο στιγμιότυπο ποσοστού διακριτικού επιτρέπει την αναπαραγωγή του ιστορικού υπολογισμού βάσης ως sum(tokens × snapshotted_rate / 1,000,000). Η τακτοποίηση στρογγυλοποιεί το επιλεγμένο ποσό βάσης σε 10 δεκαδικά ψηφία και στη συνέχεια υπολογίζει round(base_amount × multiplier, 10). Το αποθηκευμένο cost, official_base_cost, και usage_cost τα πεδία παραμένουν έγκυρα.

Οι φορείς ακατέργαστων αιτημάτων και απαντήσεων δεν επιστρέφονται ποτέ από αυτό το τελικό σημείο.

Κατάλογος συναλλαγών υπολοίπου

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/transactions \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση — 200

{
  "data": [
    {
      "transaction_id": "TRANSACTION_PUBLIC_ID",
      "type": "debit",
      "source": "api_usage_minute",
      "billing_minute_num": 29769120,
      "amount": "-0.0232000000",
      "request_count": 100,
      "balance_before": null,
      "balance_after": null,
      "api_key_id": null,
      "created_at": "2026-08-05T10:00:00Z"
    }
  ]
}

Το χρεώσιμο συμπέρασμα αντιπροσωπεύεται ως μία σειρά χαρτοφυλακίου πορτοφολιού ανά κάτοχο χρέωσης και λεπτό χρόνο λήξης. transaction_id είναι το διαρκές αναγνωριστικό δημόσιου καθολικού. request_count είναι ο αριθμός των αιτημάτων που περιλαμβάνονται σε αυτό το λεπτό χρέωσης· billing_minute_num είναι floor(unix(finished_at)/60). Ακατέργαστο εσωτερικό καθολικό id / source_id οι τιμές δεν επιστρέφονται. Οι συγκεντρωτικές σειρές χρήσης API επιστρέφουν σκόπιμα null για balance_before, balance_after, και api_key_id; Η ακριβής λεπτομέρεια κλειδιού/ομάδας/αιτήματος παραμένει διαθέσιμη από το ιστορικό αιτημάτων και την αναλυτική περιγραφή των λεπτών του πίνακα.

Λάβετε τρέχον υπόλοιπο

curl https://p-api.model-gate.com/api/v1/partner/balance \
  -H "Authorization: Bearer mg_partner_..."
{"data":{"balance":"1234.5678900000","currency":"USD","as_of":"2026-08-28T07:00:00Z"}}

Χρησιμοποιήστε αυτό το τελικό σημείο μετά account.balance_low επανακλήσεις για τη συμφωνία του πορτοφολιού τρεχούμενου λογαριασμού χωρίς να απαιτείται διαπιστευτήριο μοντέλου API.

Καταχωρίστε συμβάντα ελέγχου συνεργατών

curl "https://p-api.model-gate.com/api/v1/partner/audit-events?limit=100" \
  -H "Authorization: Bearer mg_partner_..."

Τα συμβάντα ελέγχου καταγράφουν επιτυχημένες μεταλλάξεις διαχείρισης συνεργατών με αναγνωριστικό αιτήματος, ενέργεια, στόχο, IP πηγής, κατάσταση, ασφαλή μεταδεδομένα και χρονική σήμανση UTC. Τα μυστικά, τα διακριτικά φορέα, το απλό κείμενο κλειδιού API, τα κλειδιά αδυναμίας, τα δακτυλικά αποτυπώματα αιτημάτων και τα σώματα επανάληψης δεν αποθηκεύονται στα μεταδεδομένα ελέγχου. Χρήση cursor για τις επόμενες σελίδες και προαιρετικό action φιλτράρισμα.

Δημιουργήστε μια ομάδα

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/groups \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Telegram bot A",
    "description": "Keys created by bot A",
    "rpm_limit": 100,
    "concurrency_limit": 20,
    "spend_limit": "1000.0000000000",
    "usage_price_basis": "official_price",
    "usage_price_multiplier": "0.900000"
  }'

Απάντηση — 201

{
  "data": {
    "public_id": "GROUP_PUBLIC_ID",
    "name": "Telegram bot A",
    "status": "active",
    "spend_limit": "1000.0000000000",
    "usage": "0.0000000000",
    "total_spent": "0.0000000000",
    "usage_price_basis": "official_price",
    "usage_price_multiplier": "0.900000"
  }
}

Λίστα ομάδων

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/groups \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση

{"data":[{"public_id":"GROUP_PUBLIC_ID","name":"Telegram bot A","status":"active","usage":"0.0000000000"}]}

Λήψη ή ενημέρωση μιας ομάδας

Λάβετε αίτημα

curl https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..."

Λάβετε απάντηση

{"data":{"public_id":"GROUP_PUBLIC_ID","name":"Telegram bot A","spend_limit":"1000.0000000000","usage":"12.0000000000"}}

Αίτημα ενημέρωσης

curl -X PATCH https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \
  -H "Content-Type: application/json" \
  -d '{"name":"Telegram bot A production","status":"active","spend_limit":"2000.0000000000","usage_price_basis":"user_price","usage_price_multiplier":"1.200000"}'

Ενημέρωση απάντησης

{"data":{"public_id":"GROUP_PUBLIC_ID","name":"Telegram bot A production","spend_limit":"2000.0000000000","usage_price_basis":"user_price","usage_price_multiplier":"1.200000"}}

Διαγραφή ομάδας

Μια μη κενή ομάδα δεν διαγράφεται. Μετακινήστε ή διαγράψτε πρώτα όλα τα κλειδιά API μελών. Διαφορετικά το API επιστρέφει HTTP 409 με group_not_empty.

Αίτηση

curl -X DELETE https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση

{"data":{"deleted":true}}

Τα κλειδιά αποσπώνται σύμφωνα με τη συμπεριφορά ξένου κλειδιού της βάσης δεδομένων. Επαληθεύστε τη συνδρομή πριν τη διαγραφή.

Επαναφορά χρήσης ομάδας

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/reset-usage \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση

{"data":{"public_id":"GROUP_PUBLIC_ID","usage":"0.0000000000","total_spent":"8.5000000000"}}

Καταγράψτε τα μέλη της ομάδας

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/members \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση

{"data":[{"public_id":"KEY_PUBLIC_ID","name":"Telegram user 123","status":"active","usage":"3.2500000000","total_spent":"1.1400000000"}]}

Προσθέστε ένα κλειδί σε μια ομάδα

Αίτηση

curl -X POST https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/members \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \
  -H "Content-Type: application/json" \
  -d '{"key_id":"KEY_PUBLIC_ID"}'

Απάντηση

Η απάντηση είναι η ενημερωμένη λίστα μελών της ομάδας:

{"data":[{"public_id":"KEY_PUBLIC_ID","name":"Telegram user 123","status":"active"}]}

Αφαιρέστε ένα κλειδί από μια ομάδα

Αίτηση

curl -X DELETE https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/members/KEY_PUBLIC_ID \
  -H "Authorization: Bearer mg_partner_..." \
  -H "Idempotency-Key: operation-unique-001" \

Απάντηση

{"data":{"removed":true}}

Λάβετε ομαδική χρήση

Αίτηση

curl https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/usage \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση

{"data":{"group_id":"GROUP_PUBLIC_ID","usage":"12.0000000000","total_spent":"8.5000000000","usage_reset_at":"2026-08-01T00:00:00Z"}}

Λάβετε στατιστικά στοιχεία ομάδας

from και to αποδέχεστε μόνο χρονικές σημάνσεις UTC RFC3339 που τελειώνουν σε Z (κλασματικά δευτερόλεπτα επιτρέπονται έως 6 ψηφία). Τα στατιστικά στοιχεία υπολογίζονται μόνο από συγκεντρωτικά στοιχεία ολοκληρωμένων αιτημάτων που πληκτρολογούνται από finished_at; το τρέχον ανοιχτό λεπτό αποκλείεται σκόπιμα, επομένως τα αποτελέσματα ενδέχεται να καθυστερούν έως και τον ρυθμό συγκέντρωσης λεπτών.

average_duration_ms είναι η μέση διάρκεια πλήρους αιτήματος Model Gate (duration_ms) σε όλα τα ολοκληρωμένα αιτήματα στην επιλεγμένη περίοδο. Δεν είναι λανθάνουσα καθυστέρηση πρώτου διακριτικού E2E, λανθάνουσα καθυστέρηση πρώτου διακριτικού ανάντη ή επιβάρυνση πύλης. Το Partner API εκθέτει μόνο αυτό το ρητό μετρικό όνομα.

Αίτηση

curl "https://p-api.model-gate.com/api/v1/partner/groups/GROUP_PUBLIC_ID/stats?from=2026-08-01T00:00:00Z&to=2026-08-05T23:59:59Z" \
  -H "Authorization: Bearer mg_partner_..."

Απάντηση

{
  "data": {
    "group_id": "GROUP_PUBLIC_ID",
    "requests": 120,
    "errors": 3,
    "input_tokens": 50000,
    "output_tokens": 12000,
    "cached_tokens": 8000,
    "cache_write_tokens": 1200,
    "reasoning_tokens": 2000,
    "cost": "8.5000000000",
    "average_duration_ms": "842.50",
    "from": "2026-08-01T00:00:00Z",
    "to": "2026-08-05T23:59:59Z"
  }
}

Λάβετε ένα ασύγχρονο αποτέλεσμα

Αίτηση

curl https://p-api.model-gate.com/api/v1/requests/01KZ... \
  -H "Authorization: Bearer mg_partner_..."

Επεξεργασία απάντησης

{
  "data": {
    "request_id": "01KZ...",
    "status": "processing",
    "created_at": "2026-08-05T10:00:00Z",
    "started_at": "2026-08-05T10:00:00Z",
    "completed_at": null,
    "expires_at": "2026-08-06T10:00:00Z"
  }
}

Ολοκληρωμένη απάντηση

{
  "data": {
    "request_id": "01KZ...",
    "status": "completed",
    "response_status": 200,
    "response_headers": {"Content-Type":"application/json"},
    "response": {"id":"resp_example","status":"completed"},
    "completed_at": "2026-08-05T10:00:05Z",
    "expires_at": "2026-08-06T10:00:00Z"
  }
}

Συνήθη λάθη

Μη έγκυρο κλειδί Partner API — 401

{"error":{"type":"invalid_token","message":"Invalid Partner API key"}}

Ο πόρος δεν βρέθηκε — 404

{"error":{"type":"not_found","message":"API key not found"}}

Μη έγκυρο αίτημα — 422

{"error":{"type":"invalid_request","message":"limit must be an integer from 1 to 100"}}

Τα μεταλλαγμένα σώματα JSON Partner API περιορίζονται στο 1 MiB.

Σύγκρουση ανικανότητας — 409

Το ίδιο Idempotency-Key επαναχρησιμοποιήθηκε για διαφορετικό αίτημα. Δημιουργήστε ένα νέο κλειδί για μια νέα λογική λειτουργία.

Όριο ποσοστού — 429

Η απάντηση περιέχει error.code = partner_rate_limit_exceeded και Retry-After. Δοκιμάστε ξανά μόνο μετά την υποδεικνυόμενη καθυστέρηση.

Η μέθοδος δεν επιτρέπεται — 405

Ο κεντρικός υπολογιστής Partner επιστρέφει ένα σφάλμα JSON συν το HTTP Allow επί κεφαλής; δεν επιστρέφει ποτέ σε μια σελίδα σφάλματος HTML.

Βασικοί κανόνες επιχειρηματικών διαπιστευτηρίων

Για ένα διακριτικό Business Partner API, γίνεται αποδεκτός μόνο ο επαληθευμένος κάτοχος του οργανισμού. Τα κλειδιά που δημιουργήθηκαν μέσω του Partner API χρησιμοποιούν αυτόν τον κάτοχο τόσο ως κάτοχο χρέωσης όσο και ως κύριο διαπιστευτηρίων. Η ανάθεση υπαλλήλου-προϊσταμένου εκτελείται στον πίνακα web. group_id, όταν παρέχεται, πρέπει να προσδιορίζει μια ενεργή ομάδα που ανήκει στον επιχειρηματικό λογαριασμό. Οι μη έγκυρες τιμές επιστρέφουν HTTP 422 και μην επιστρέψετε ποτέ σε ένα μη ομαδοποιημένο κλειδί. Οι απαντήσεις στο ιστορικό αιτημάτων μπορεί να περιλαμβάνουν principal_user_id για τον προσδιορισμό του κύριου διαπιστευτηρίου ανεξάρτητα από την ιδιοκτησία χρέωσης.