B2BB2B LLM

Partner API крајњих тачака

Завршите Partner API примере захтева и одговора за кључеве, групе, захтеве и трансакције.

Partner API крајњих тачака

Основни УРЛ:

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

Сви захтеви захтевају:

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

Све новчане и граничне вредности су ЈСОН децимални низови. Немојте их анализирати као бинарне бројеве са помичним зарезом.

Заједничка правила интеграције банке

Све спољне временске ознаке су УТЦ РФЦ3339. Коришћење крајњих тачака прикупљања limit (1–100) плус непрозирни cursor; никада не анализирајте или производите садржај курсора. POST, PATCH, и DELETE захтеви захтевају Idempotency-Key; поновите исту операцију са истим кључем након истека времена. Евиденција о импотенцији се чува 7 дана. Одговори укључују X-Request-ID, аре Cache-Control: no-store, а све грешке су ЈСОН. Одговори са ограничењем брзине су ХТТП 429 са Retry-After и X-RateLimit-* заглавља. Непознато тело/поља упита су одбијена.

Машински читљив ОпенАПИ 3.1 уговор се дистрибуира као resources/contracts/partner-api.openapi.yaml.

Креирајте АПИ кључ

Захтев

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 вредност се враћа тек након креирања или ротације.

Листа АПИ кључева

Захтев

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.

Набавите један АПИ кључ

Захтев

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"
  }
}

Ажурирајте кључ АПИ-ја

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"
  }
}

Избришите АПИ кључ

Захтев

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 а не замењујући текуће цене. Захтеви који се извршавају преко Цлауде/ОпенАИ-компатибилних пакетних АПИ-ја су експлицитно означени са request_mode: "batch" и укључују њихов протокол, ИД скупног посла, custom_id, и снимљени множитељ серијске цене Модел Гате-а.

Латенција користи стабилна имена предузећа/партнера: gateway_overhead_ms, upstream_first_token_ms, и e2e_first_token_ms. Вредност првог токена Е2Е се мери од почетка захтева за модел Гате до првог токена стварног садржаја и искључује време мреже на страни клијента/ТЛС. 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 курсор враћа ХТТП 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 вредности се не враћају. Збирни редови за коришћење АПИ-ја се намерно враћају 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 повратни позиви за усаглашавање новчаника текућег налога без потребе за акредитивом за Модел АПИ.

Наведите догађаје ревизије партнера

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

Догађаји ревизије бележе успешне мутације управљања партнерима са ИД-ом захтева, радњом, циљем, изворном ИП-ом, статусом, сигурним метаподацима и УТЦ временском ознаком. Тајне, токени носиоца, отворени текст АПИ кључева, кључеви идемпотенције, отисци прстију захтева и тела понављања се не чувају у метаподацима ревизије. Користите 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"}}

Избришите групу

Група која није празна се не брише. Прво преместите или избришите све АПИ кључеве чланова; у супротном АПИ враћа ХТТП 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 прихвати само УТЦ РФЦ3339 временске ознаке које се завршавају на Z (дозвољени су делими секунде до 6 цифара). Статистике се израчунавају само из агрегата завршених захтева који су означени помоћу finished_at; тренутно отворени минут је намерно искључен, тако да резултати могу заостајати до минуте агрегације.

average_duration_ms је просечно пуно трајање захтева за модел капије (duration_ms) по завршеним захтевима у изабраном периоду. То није кашњење првог токена Е2Е, кашњење првог токена узводно или прекомерно оптерећење мрежног пролаза. Број {0} излаже само овај експлицитни назив показатеља.

Захтев

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"}}

Променљива Partner API ЈСОН тела су ограничена на 1 МиБ.

Конфликт импотенције — 409

Исто Idempotency-Key је поново употребљен за други захтев. Генеришите нови кључ за нову логичку операцију.

Ограничење стопе — 429

Одговор садржи error.code = partner_rate_limit_exceeded и Retry-After. Покушајте поново тек након назначеног одлагања.

Метод није дозвољен — 405

Хост партнера враћа ЈСОН грешку плус ХТТП Allow хеадер; никада се не враћа на страницу са ХТМЛ грешком.

Правила о принципу пословне акредитиве

За токен предузећа Partner API, прихвата се само верификовани власник организације. Кључеви креирани преко Partner API користе тог власника и као власника обрачуна и као принципал акредитива. Задатак запослени-директор се врши у веб панелу. group_id, када се достави, мора да идентификује активну групу у власништву пословног налога; неважеће вредности враћају ХТТП 422 и никада се не враћајте на негруписани кључ. Одговори из историје захтева могу укључивати principal_user_id да идентификује принципал акредитива независно од власништва над фактурисањем.