{"id":"c0f52a0a-ec9c-47fb-9fb4-fb3a1b67bdbd","entityType":"agent","slug":"clawhub-runapi-ai-runapi-gpt","name":"gpt","canonicalUrl":"https://www.xpersona.co/agent/clawhub-runapi-ai-runapi-gpt","canonicalPath":"/agent/clawhub-runapi-ai-runapi-gpt","generatedAt":"2026-10-10T07:44:42.607Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":null},"description":"Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s1771k6pjxksnjws51x2htfjvd876syh:runapi-gpt","sourceUrl":"https://clawhub.ai/runapi-ai/runapi-gpt","homepage":"https://clawhub.ai/runapi-ai/skills/runapi-gpt","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/runapi-ai/runapi-gpt","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/runapi-ai/skills/runapi-gpt","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"gpt technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":null},"stars":null,"forks":null,"downloads":1702,"packageName":null,"latestVersion":"0.2.17","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T04:07:23.563Z","lastCrawledAt":"2026-10-10T04:07:23.563Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T04:07:23.563Z","lastVerifiedAt":null,"highlights":[{"version":"0.2.17","createdAt":"2026-09-30T12:16:09.667Z","changelog":"## Added - List gpt-5-pro for text-only Responses requests. - Add GPT-6.1 Sol with the same protocol and function-tool support as the other GPT models. ## Fixed - Keep model compatibility guidance separate from the generated model roster.","fileCount":4,"zipByteSize":3935},{"version":"0.2.16","createdAt":"2026-09-29T09:03:31.258Z","changelog":"## Removed - gpt-5.2-pro (retired 2026-08-11), gpt-5.4-pro and gpt-5.5-pro (both retired 2026-09-28) are no longer listed; requests for them return 410 model_retired. Migration: Use gpt-5.5 instead of gpt-5.2-pro, gpt-5.4-pro or gpt-5.5-pro.","fileCount":4,"zipByteSize":3803},{"version":"0.2.15","createdAt":"2026-09-29T04:27:32.367Z","changelog":"## Added - codex-auto-review and gpt-5.2-pro are listed among the supported GPT models; gpt-5.2-pro currently accepts OpenAI Responses only. - GPT-6 Sol (gpt-6-sol) and GPT-6 Luna (gpt-6-luna) are now listed as available GPT models. ## Changed - Document that GPT-Live Responses delegation accepts function tools on WebSocket, with delegated events wrapped in response.event and function results returned through response.item.create and response.create. ## Removed - gpt-5.3-codex (retired 2026-09-28) and gpt-5.3-codex-spark (retired 2026-09-14) are no longer listed; requests for them return 410 model_retired. Migration: Use gpt-5.6-sol instead of gpt-5.3-codex or gpt-5.3-codex-spark.","fileCount":4,"zipByteSize":3854},{"version":"0.2.14","createdAt":"2026-09-28T05:47:32.952Z","changelog":"## Changed - GPT-Live-1 is no longer listed among the GPT LLM models because Live sessions are their own transport; the skill keeps documenting Live usage and nothing about Live requests changed.","fileCount":4,"zipByteSize":3744},{"version":"0.2.13","createdAt":"2026-09-16T10:10:28.868Z","changelog":"## Added - Add GPT-Live-1 realtime audio sessions to the supported model guidance. ## Changed - Publish the verified GPT-Live-1 WebRTC and WebSocket contract and delegation boundaries. - Document gpt-4o-mini as an available GPT model and synchronize generated contract metadata.","fileCount":4,"zipByteSize":3947},{"version":"0.2.12","createdAt":"2026-08-12T06:30:43.225Z","changelog":"## Changed - Document GPT authentication, request, result verification, and stop boundaries in the primary recipe, with compatibility protocols loaded only when required. ## Removed - Stop advertising the retired gpt-5.2-pro model. Migration: Use a currently advertised GPT model instead; gpt-5.2 remains available through Chat Completions but no longer supports Responses. - Stop advertising Responses support for gpt-5.2. Migration: Send gpt-5.2 requests to Chat Completions, Anthropic Messages, or Gemini contents; choose another advertised GPT model when Responses is required.","fileCount":4,"zipByteSize":3730},{"version":"0.2.11","createdAt":"2026-08-10T14:13:45.649Z","changelog":"## Changed - Complete marketplace distribution for the RunAPI GPT skill.","fileCount":3,"zipByteSize":5200},{"version":"0.2.10","createdAt":"2026-07-22T22:56:54.619Z","changelog":"## Added - Document text, streaming, custom function, and automatic prompt caching support for GPT 5.6 and Codex Spark. ## Changed - Clarify advanced Responses capabilities that may return `request_conflict` before usage is reserved, plus the terminal SSE Usage and `[DONE]` contract.","fileCount":3,"zipByteSize":5267}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1771k6pjxksnjws51x2htfjvd876syh:runapi-gpt","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s1771k6pjxksnjws51x2htfjvd876syh:runapi-gpt` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/runapi-ai/runapi-gpt before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T07:44:42.604Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-runapi-ai-runapi-gpt/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":null},"readme":"Skill: gpt\n\nOwner: runapi-ai\n\nSummary: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\n\nTags: latest:0.2.17\n\nVersion history:\n\nv0.2.17 | 2026-09-30T12:16:09.667Z | user\n\n## Added\n- List gpt-5-pro for text-only Responses requests.\n- Add GPT-6.1 Sol with the same protocol and function-tool support as the other GPT models.\n\n## Fixed\n- Keep model compatibility guidance separate from the generated model roster.\n\nv0.2.16 | 2026-09-29T09:03:31.258Z | user\n\n## Removed\n- gpt-5.2-pro (retired 2026-08-11), gpt-5.4-pro and gpt-5.5-pro (both retired 2026-09-28) are no longer listed; requests for them return 410 model_retired.\n  Migration: Use gpt-5.5 instead of gpt-5.2-pro, gpt-5.4-pro or gpt-5.5-pro.\n\nv0.2.15 | 2026-09-29T04:27:32.367Z | user\n\n## Added\n- codex-auto-review and gpt-5.2-pro are listed among the supported GPT models; gpt-5.2-pro currently accepts OpenAI Responses only.\n- GPT-6 Sol (gpt-6-sol) and GPT-6 Luna (gpt-6-luna) are now listed as available GPT models.\n\n## Changed\n- Document that GPT-Live Responses delegation accepts function tools on WebSocket, with delegated events wrapped in response.event and function results returned through response.item.create and response.create.\n\n## Removed\n- gpt-5.3-codex (retired 2026-09-28) and gpt-5.3-codex-spark (retired 2026-09-14) are no longer listed; requests for them return 410 model_retired.\n  Migration: Use gpt-5.6-sol instead of gpt-5.3-codex or gpt-5.3-codex-spark.\n\nv0.2.14 | 2026-09-28T05:47:32.952Z | user\n\n## Changed\n- GPT-Live-1 is no longer listed among the GPT LLM models because Live sessions are their own transport; the skill keeps documenting Live usage and nothing about Live requests changed.\n\nv0.2.13 | 2026-09-16T10:10:28.868Z | user\n\n## Added\n- Add GPT-Live-1 realtime audio sessions to the supported model guidance.\n\n## Changed\n- Publish the verified GPT-Live-1 WebRTC and WebSocket contract and delegation boundaries.\n- Document gpt-4o-mini as an available GPT model and synchronize generated contract metadata.\n\nv0.2.12 | 2026-08-12T06:30:43.225Z | user\n\n## Changed\n- Document GPT authentication, request, result verification, and stop boundaries in the primary recipe, with compatibility protocols loaded only when required.\n\n## Removed\n- Stop advertising the retired gpt-5.2-pro model.\n  Migration: Use a currently advertised GPT model instead; gpt-5.2 remains available through Chat Completions but no longer supports Responses.\n- Stop advertising Responses support for gpt-5.2.\n  Migration: Send gpt-5.2 requests to Chat Completions, Anthropic Messages, or Gemini contents; choose another advertised GPT model when Responses is required.\n\nv0.2.11 | 2026-08-10T14:13:45.649Z | user\n\n## Changed\n- Complete marketplace distribution for the RunAPI GPT skill.\n\nv0.2.10 | 2026-07-22T22:56:54.619Z | user\n\n## Added\n- Document text, streaming, custom function, and automatic prompt caching support for GPT 5.6 and Codex Spark.\n\n## Changed\n- Clarify advanced Responses capabilities that may return `request_conflict` before usage is reserved, plus the terminal SSE Usage and `[DONE]` contract.\n\nv0.2.9 | 2026-07-02T09:23:27.407Z | user\n\n## Changed\n- Supported models table simplified; every chat/reasoning/Codex model is callable via Chat Completions, Responses, Anthropic Messages, and Gemini contents (embeddings via /v1/embeddings only). Removed the misleading per-model endpoint split.\n\nv0.2.8 | 2026-07-02T08:42:21.719Z | user\n\n## Changed\n- Supported models and endpoint tables are now generated from the RunAPI catalog.\n- Description no longer enumerates a fixed model subset; the tables are the authoritative roster.\n\nv0.2.7 | 2026-06-24T09:35:55.213Z | user\n\n## Changed\n- Clarify GPT generation compatibility across OpenAI-compatible, Anthropic Messages, and Gemini contents clients.\n\nv0.2.4 | 2026-05-23T18:38:55.917Z | user\n\nAgent-facing CLI-first redesign\n\nArchive index:\n\nArchive v0.2.17: 4 files, 3935 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (1946b), SKILL.md (4450b), _meta.json (130b)\n\nFile v0.2.17:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate backend work through `delegation.type: responses` or return function\nwork through `delegation.type: client`. Responses delegation accepts hosted\ntools on both transports and `function` tools on WebSocket: delegated events\narrive wrapped in `response.event`, a function call arrives as a nested\n`response.output_item.done`, and the client answers with `response.item.create`\n(`function_call_output`) followed by `response.create`. Chat Completions and\nResponses calls do not accept this model.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.2` | Cost-effective |\n| `gpt-4o-mini` | — |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-6-astra` | — |\n| `codex-auto-review` | — |\n| `gpt-5-pro` | Text-only analysis and coding with the Responses API; other input modalities await billing review |\n| `gpt-6-sol` | — |\n| `gpt-6.1-sol` | — |\n| `gpt-6-luna` | — |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.17:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.17\",\n  \"publishedAt\": 1790770569667\n}\n\nFile v0.2.17:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.17:skill-card.md\n\n## Description:\n\nGuides agents using OpenAI-compatible clients to call GPT generation and text embedding models through RunAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to configure RunAPI clients and select supported requests for GPT chat, Responses, embeddings, streaming, tools, vision, or live audio.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Model requests send prompts and other supplied data to RunAPI for processing.\n\nMitigation: Use this skill only when RunAPI is an approved processor; check account policies and data-retention terms before sending secrets, regulated data, or private documents.\n\nRisk: A RunAPI API key is required for client requests.\n\nMitigation: Keep the key in the OPENAI_API_KEY environment variable rather than embedding it in examples or shared files.\n\n## Reference(s):\n\n- [GPT on RunAPI documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI OpenAI provider](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [GPT on RunAPI model page](https://runapi.ai/models/gpt)\n- [Compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Configuration instructions]\n\n**Output Format:** [Markdown with Python examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Request shapes and model support depend on the RunAPI endpoint and current contract.]\n\n## Skill Version(s):\n\n0.2.17 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.16: 4 files, 3803 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (1812b), SKILL.md (4310b), _meta.json (130b)\n\nFile v0.2.16:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate backend work through `delegation.type: responses` or return function\nwork through `delegation.type: client`. Responses delegation accepts hosted\ntools on both transports and `function` tools on WebSocket: delegated events\narrive wrapped in `response.event`, a function call arrives as a nested\n`response.output_item.done`, and the client answers with `response.item.create`\n(`function_call_output`) followed by `response.create`. Chat Completions and\nResponses calls do not accept this model.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.2` | Cost-effective |\n| `gpt-4o-mini` | — |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-6-astra` | — |\n| `codex-auto-review` | — |\n| `gpt-6-sol` | — |\n| `gpt-6-luna` | — |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.16:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.16\",\n  \"publishedAt\": 1790672611258\n}\n\nFile v0.2.16:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.16:skill-card.md\n\n## Description:\n\nGuides developers in using GPT generation and text embedding models through RunAPI with OpenAI-compatible clients.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers use this skill to configure RunAPI clients and make chat, Responses, embedding, streaming, and supported compatibility-protocol requests.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requests can send sensitive data to RunAPI.\n\nMitigation: Send only data authorized for sharing with RunAPI.\n\nRisk: An unintended provider or exposed API key can result from misconfiguration.\n\nMitigation: Use a RunAPI API key and deliberately set the RunAPI base URL; keep the key private.\n\n## Reference(s):\n\n- [RunAPI GPT documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI GPT model page](https://runapi.ai/models/gpt)\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [Compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Code, Configuration instructions, Guidance]\n\n**Output Format:** [Markdown with Python examples and API configuration guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Covers response validation, supported endpoints, and safe retry boundaries.]\n\n## Skill Version(s):\n\n0.2.16 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.15: 4 files, 3854 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (1896b), SKILL.md (4400b), _meta.json (130b)\n\nFile v0.2.15:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate backend work through `delegation.type: responses` or return function\nwork through `delegation.type: client`. Responses delegation accepts hosted\ntools on both transports and `function` tools on WebSocket: delegated events\narrive wrapped in `response.event`, a function call arrives as a nested\n`response.output_item.done`, and the client answers with `response.item.create`\n(`function_call_output`) followed by `response.create`. Chat Completions and\nResponses calls do not accept this model.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.2` | Cost-effective |\n| `gpt-4o-mini` | — |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-6-astra` | — |\n| `codex-auto-review` | — |\n| `gpt-5.2-pro` | — |\n| `gpt-6-sol` | — |\n| `gpt-6-luna` | — |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.15:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.15\",\n  \"publishedAt\": 1790656052367\n}\n\nFile v0.2.15:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.15:skill-card.md\n\n## Description:\n\nGuides GPT generation and text embedding calls through RunAPI using OpenAI-compatible clients.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers use this skill to configure RunAPI-compatible clients and request GPT chat, Responses, embeddings, streaming, tools, vision, or live audio through supported endpoints.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An unrelated OpenAI account key could be supplied as the RunAPI credential.\n\nMitigation: Confirm OPENAI_API_KEY contains a RunAPI key before using the RunAPI base URL.\n\nRisk: Prompts, embeddings inputs, vision data, or live audio sent through these examples go to RunAPI.\n\nMitigation: Share only data appropriate for RunAPI processing and confirm the intended provider before sending requests.\n\n## Reference(s):\n\n- [RunAPI GPT model page](https://runapi.ai/models/gpt)\n- [RunAPI GPT documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [GPT compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Configuration]\n\n**Output Format:** [Markdown with Python examples and API instructions]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes endpoint, model, and response verification guidance.]\n\n## Skill Version(s):\n\n0.2.15 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.14: 4 files, 3744 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (1837b), SKILL.md (4236b), _meta.json (130b)\n\nFile v0.2.14:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. `gpt-5.3-codex-spark` has the same verified subset with parameterless\ncustom functions. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate hosted tools through `delegation.type: responses` or return function\nwork through `delegation.type: client`; Chat Completions and Responses calls do\nnot accept this model.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant; text and parameterless functions in the consistently available Responses subset |\n| `gpt-5.2` | Cost-effective |\n| `gpt-4o-mini` | — |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-6-astra` | — |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.14:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.14\",\n  \"publishedAt\": 1790574452952\n}\n\nFile v0.2.14:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.14:skill-card.md\n\n## Description:\n\nGuides developers in using GPT generation and text embedding models through RunAPI with OpenAI-compatible clients.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to configure compatible clients for RunAPI and make GPT generation, streaming, live-session, and embedding requests, with conditional guidance for existing Anthropic or Gemini clients.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requests following this guide may send prompts, files, images, audio, and metadata to RunAPI.\n\nMitigation: Use RunAPI only when your data-sharing policies allow it; avoid sending sensitive content otherwise.\n\n## Reference(s):\n\n- [RunAPI GPT documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI GPT model page](https://runapi.ai/models/gpt)\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [Compatibility protocols](references/compatibility-protocols.md)\n- [ClawHub skill release](https://clawhub.ai/runapi-ai/skills/runapi-gpt)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Configuration]\n\n**Output Format:** [Markdown with code examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Describes request verification, safe retry boundaries, and optional compatibility protocols.]\n\n## Skill Version(s):\n\n0.2.14 (source: ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.13: 4 files, 3947 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (2363b), SKILL.md (4304b), _meta.json (130b)\n\nFile v0.2.13:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. `gpt-5.3-codex-spark` has the same verified subset with parameterless\ncustom functions. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate hosted tools through `delegation.type: responses` or return function\nwork through `delegation.type: client`; Chat Completions and Responses calls do\nnot accept this model.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-live-1` | Realtime audio sessions over WebRTC or WebSocket |\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant; text and parameterless functions in the consistently available Responses subset |\n| `gpt-5.2` | Cost-effective |\n| `gpt-4o-mini` | — |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-6-astra` | — |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.13:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.13\",\n  \"publishedAt\": 1789553428868\n}\n\nFile v0.2.13:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.13:skill-card.md\n\n## Description:\n\nCall GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients for chat, Responses, embeddings, streaming, tools, vision, or existing compatibility clients that need the conditional reference.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to configure OpenAI-compatible clients for GPT generation, text embeddings, streaming, vision, tools, and realtime audio through RunAPI. It also provides conditional compatibility guidance for existing Anthropic Messages or Gemini contents clients.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts, files, images, audio, and tool-related request data may be sent to RunAPI during normal use.\n\nMitigation: Install only when RunAPI is the intended model provider, use a RunAPI-specific API key, and confirm OPENAI_BASE_URL is set to https://runapi.ai/v1.\n\nRisk: Unsupported model, endpoint, or protocol combinations can fail or produce misleading integration guidance.\n\nMitigation: Follow the documented endpoint boundaries, keep embedding models on /v1/embeddings, and load compatibility protocols only for existing Anthropic Messages or Gemini contents clients.\n\n## Reference(s):\n\n- [RunAPI GPT model documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI GPT model page](https://runapi.ai/models/gpt)\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [GPT compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration]\n\n**Output Format:** [Markdown with inline code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes model and protocol boundaries, required environment variables, verification checks, and stop conditions.]\n\n## Skill Version(s):\n\n0.2.13 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.12: 4 files, 3730 bytes\n\nFiles: references/compatibility-protocols.md (807b), skill-card.md (2273b), SKILL.md (3768b), _meta.json (130b)\n\nFile v0.2.12:SKILL.md\n\n---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. `gpt-5.3-codex-spark` has the same verified subset with parameterless\ncustom functions. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant; text and parameterless functions in the consistently available Responses subset |\n| `gpt-5.2` | Cost-effective |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## References\n\n- <https://runapi.ai/models/gpt.md>\n- <https://runapi.ai/providers/openai.md>\n- <https://runapi.ai/models.md>\n\nFile v0.2.12:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.12\",\n  \"publishedAt\": 1786516243225\n}\n\nFile v0.2.12:references/compatibility-protocols.md\n\n# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping.\n\nFile v0.2.12:skill-card.md\n\n## Description:\n\nCall GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to call GPT chat, Responses, embeddings, streaming, tools, and vision models through RunAPI with OpenAI-compatible clients. Existing compatibility clients can also use the conditional Anthropic Messages or Gemini contents protocols when required.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts, inputs, and embedding text are sent to RunAPI using the configured RunAPI key and base URL.\n\nMitigation: Use an appropriate RunAPI key and avoid sending sensitive data unless your RunAPI account and data-handling requirements allow it.\n\nRisk: Unsupported endpoint, model, or protocol changes can produce rejected requests or misleading results.\n\nMitigation: Use the documented endpoint and exact model IDs, verify final output and usage fields, correct one rejected shape, retry transport only once when safe, and stop on terminal errors.\n\n## Reference(s):\n\n- [GPT on RunAPI documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [GPT model homepage](https://runapi.ai/models/gpt)\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-gpt)\n- [GPT compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, code, shell commands, configuration]\n\n**Output Format:** [Markdown with inline code examples and configuration guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires OPENAI_API_KEY and OPENAI_BASE_URL for RunAPI-backed OpenAI-compatible clients.]\n\n## Skill Version(s):\n\n0.2.12 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.11: 3 files, 5200 bytes\n\nFiles: skill-card.md (2240b), SKILL.md (10087b), _meta.json (130b)\n\nFile v0.2.11:SKILL.md\n\n---\nname: gpt\ndescription: Call the GPT API (the GPT-5 series — chat, reasoning, and Codex models) and OpenAI text embeddings through RunAPI using the official OpenAI SDK, Anthropic SDK, Gemini contents clients, or compatible clients. Use when the user asks for OpenAI / GPT chat, streaming completions, vision input, tool use / function calling, reasoning effort, the Responses API, embeddings, semantic search vectors, Codex coding tasks, Anthropic or Gemini protocol compatibility, or when they want to point an existing LLM SDK setup at RunAPI as the base URL.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env:\n      - OPENAI_API_KEY\n      - OPENAI_BASE_URL\n    envVars:\n    - name: OPENAI_API_KEY\n      required: true\n      description: RunAPI API key used by OpenAI-compatible SDKs.\n    - name: OPENAI_BASE_URL\n      required: true\n      description: Set to https://runapi.ai/v1 for GPT on RunAPI.\n---\n\n# GPT on RunAPI\n\nUse the official **OpenAI SDK** (Python, TypeScript, Ruby) -- or any\nOpenAI-compatible HTTP client -- and switch the base URL to\n`https://runapi.ai/v1`. The endpoints speak the standard OpenAI protocol:\n**Chat Completions** (`POST /v1/chat/completions`), the **Responses API**\n(`POST /v1/responses`), and **Embeddings** (`POST /v1/embeddings`). No client\ncode changes beyond `base_url` and `api_key`.\n\n## Setup\n\n```dotenv\nOPENAI_API_KEY=YOUR_RUNAPI_TOKEN\nOPENAI_BASE_URL=https://runapi.ai/v1\n```\n\nGet a RunAPI API Key at <https://runapi.ai/api_keys>.\n\n| Language | Init |\n|---|---|\n| Python | `OpenAI(api_key=..., base_url=\"https://runapi.ai/v1\")` |\n| TypeScript | `new OpenAI({ apiKey: ..., baseURL: \"https://runapi.ai/v1\" })` |\n| Ruby | `OpenAI::Client.new(access_token: ..., uri_base: \"https://runapi.ai/v1\")` |\n| curl | `POST https://runapi.ai/v1/chat/completions` (or `/v1/responses`, `/v1/embeddings`) |\n\n## Pick the right endpoint\n\nChat, reasoning, and Codex models are reachable through every conversational\nsurface — Chat Completions, Responses, Anthropic-compatible `/v1/messages`, and\nGemini `contents` — so pick whichever protocol your client already speaks.\nEmbedding models (`text-embedding-*`) are reachable **only** through\n`/v1/embeddings`.\n\n## Core recipe — Chat Completions\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\n\nresponse = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain quantum computing simply.\"}],\n    reasoning_effort=\"high\",\n)\nprint(response.choices[0].message.content)\nprint(response.usage)\n```\n\n```typescript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"YOUR_RUNAPI_TOKEN\",\n  baseURL: \"https://runapi.ai/v1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Explain quantum computing simply.\" }],\n});\n```\n\n## Core recipe — Responses API\n\n```python\nimport httpx\n\nresponse = httpx.post(\n    \"https://runapi.ai/v1/responses\",\n    headers={\"x-api-key\": \"YOUR_RUNAPI_TOKEN\"},\n    json={\n        \"model\": \"gpt-5.4\",\n        \"input\": \"Explain the theory of relativity.\",\n        \"reasoning\": {\"effort\": \"medium\"},\n    },\n)\nprint(response.json())\n```\n\nThe Responses API takes `input` (string or structured), `reasoning.effort`\n(`\"low\"` / `\"medium\"` / `\"high\"`), and optional `include` for thinking blocks.\nFor `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, and\n`gpt-5.3-codex-spark`, use the consistently available subset below when the\nrequest must not depend on advanced Responses capabilities.\n\n## Core recipe — Embeddings\n\n```python\nresponse = client.embeddings.create(\n    model=\"text-embedding-3-small\",\n    input=[\"search document\", \"query text\"],\n    encoding_format=\"float\",\n)\nprint(response.data[0].embedding)\nprint(response.usage)\n```\n\n```typescript\nconst response = await client.embeddings.create({\n  model: \"text-embedding-3-small\",\n  input: [\"search document\", \"query text\"],\n  encoding_format: \"float\",\n});\nconsole.log(response.data[0].embedding);\n```\n\n## Streaming\n\n```python\nstream = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Write a haiku about coding.\"}],\n    stream=True,\n)\nfor chunk in stream:\n    delta = chunk.choices[0].delta.content\n    if delta:\n        print(delta, end=\"\", flush=True)\n```\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Write a haiku about coding.\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0].delta.content ?? \"\");\n}\n```\n\nStreaming runs through a regional edge proxy so the request does not hold a\nRails/Puma thread. Long generations should always stream.\n\n## Vision / multimodal\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        { \"type\": \"text\", \"text\": \"What is in this image?\" },\n        { \"type\": \"image_url\", \"image_url\": { \"url\": \"https://runapi.ai/img.jpg\" } }\n      ]\n    }\n  ]\n}\n```\n\nStandard OpenAI multimodal block — works on both Chat Completions and\nResponses (Responses also accepts structured `input` items). Keep requests for\nthe four consistently available subset models text-only.\n\n## Tool use / function calling / web search\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    { \"role\": \"user\", \"content\": \"Find the latest news on RunAPI.\" }\n  ],\n  \"tools\": [\n    { \"type\": \"function\", \"function\": { \"name\": \"web_search\" } }\n  ]\n}\n```\n\nUse `web_search` only when hosted tools are available for the selected model.\nCustom function tools use the standard OpenAI `tools` schema.\n\n### Consistently available Responses subset\n\n| Models | Input and transport | Function tools | Prompt caching |\n|---|---|---|---|\n| `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna` | Text, sync, SSE | Parameterized custom functions | Automatic |\n| `gpt-5.3-codex-spark` | Text, sync, SSE | Parameterless custom functions | Automatic |\n\nFor these models, omit `previous_response_id`, `conversation`, `store`,\n`background`, `include`, reasoning items and item references, explicit reasoning\ncontrols, explicit cache controls, multimodal input, and hosted tools such as\n`web_search`. A request outside this subset may return `request_conflict` before\nusage is reserved. In sync responses and the final `response.completed` event,\npreserve\n`usage.input_tokens_details.cached_tokens` and\n`usage.output_tokens_details.reasoning_tokens` when present. SSE emits one such\nterminal event followed by `[DONE]`.\n\n## List models\n\n```bash\ncurl https://runapi.ai/v1/models -H \"Authorization: Bearer YOUR_RUNAPI_TOKEN\"\n```\n\nReturns OpenAI-compatible model objects. If the API Key has\n`allowed_models` restrictions, only permitted models are returned.\n\n## Protocol compatibility\n\nGPT generation models are also available through RunAPI's\nAnthropic-compatible `/v1/messages` and Gemini `contents` client surfaces. Use\nthese protocol paths when an existing agent runtime already expects that\nrequest shape; for new GPT app code, prefer the OpenAI-compatible setup above.\n\n```bash\ncurl -X POST \"https://runapi.ai/v1/messages\" \\\n  -H \"x-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-5.4\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Draft a concise answer.\"}]\n  }'\n```\n\n```bash\ncurl -X POST \\\n  \"https://runapi.ai/v1beta/models/gpt-5.4:streamGenerateContent\" \\\n  -H \"x-goog-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Hello, GPT!\"}]}]}'\n```\n\nEmbeddings remain available only on `/v1/embeddings`; do not send embedding\nmodels to generation endpoints or compatibility surfaces.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant; text and parameterless functions in the consistently available Responses subset |\n| `gpt-5.2` | Cost-effective |\n| `gpt-5.2-pro` | Reasoning |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## Connect Codex CLI itself\n\n```bash\nexport OPENAI_BASE_URL=https://runapi.ai/v1\nexport OPENAI_API_KEY=YOUR_RUNAPI_TOKEN\ncodex\n```\n\n## Agent rules\n\n- Pro models (`gpt-5.*-pro`) reject Chat Completions — always use Responses\n  for them. Other models accept either endpoint.\n- Embedding models only work on `/v1/embeddings`; do not send them to Chat\n  Completions or Responses.\n- Default GPT-native integrations to OpenAI-compatible endpoints. Use\n  Anthropic-compatible or Gemini `contents` paths only for existing clients\n  that require those request shapes.\n- Use streaming for any response longer than a few hundred tokens. Do not\n  hold the agent on a long blocking request.\n- Omit explicit reasoning controls for the consistently available subset on\n  `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, and\n  `gpt-5.3-codex-spark`.\n- Pricing, rate limits, quotas — link to <https://runapi.ai/models/gpt.md>,\n  not this skill file.\n\n## Routing\n\n- Model page: <https://runapi.ai/models/gpt.md>\n- Provider page: <https://runapi.ai/providers/openai.md>\n- Catalog: <https://runapi.ai/models.md>\n\nFile v0.2.11:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.11\",\n  \"publishedAt\": 1786371225649\n}\n\nFile v0.2.11:skill-card.md\n\n## Description:\n\nThis skill helps agents call GPT chat, reasoning, Codex, vision, tool-use, and embedding models through RunAPI using OpenAI-compatible and compatible-client protocols.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent builders use this skill to configure RunAPI as an OpenAI-compatible provider for GPT chat, Responses API calls, embeddings, streaming, multimodal prompts, tool use, and Codex-style coding tasks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Requests may be routed through RunAPI unintentionally if OPENAI_BASE_URL is applied to unrelated OpenAI-compatible workflows.\n\nMitigation: Use a RunAPI-scoped API key and confirm OPENAI_BASE_URL is set to https://runapi.ai/v1 only for workflows intended to use RunAPI.\n\nRisk: Endpoint or model mismatches can cause failed requests, especially for embeddings, pro models, or models with a limited Responses API subset.\n\nMitigation: Follow the RunAPI GPT documentation for endpoint selection, route embedding models only to /v1/embeddings, and use Responses API guidance for models that require it.\n\n## Reference(s):\n\n- [RunAPI GPT model documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI OpenAI provider page](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [RunAPI GPT homepage](https://runapi.ai/models/gpt)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with code blocks and environment-variable configuration examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Includes OpenAI-compatible SDK setup, endpoint selection guidance, model routing notes, and API-key environment variables.]\n\n## Skill Version(s):\n\n0.2.11 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v0.2.10: 3 files, 5267 bytes\n\nFiles: skill-card.md (2414b), SKILL.md (10087b), _meta.json (130b)\n\nFile v0.2.10:SKILL.md\n\n---\nname: gpt\ndescription: Call the GPT API (the GPT-5 series — chat, reasoning, and Codex models) and OpenAI text embeddings through RunAPI using the official OpenAI SDK, Anthropic SDK, Gemini contents clients, or compatible clients. Use when the user asks for OpenAI / GPT chat, streaming completions, vision input, tool use / function calling, reasoning effort, the Responses API, embeddings, semantic search vectors, Codex coding tasks, Anthropic or Gemini protocol compatibility, or when they want to point an existing LLM SDK setup at RunAPI as the base URL.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env:\n      - OPENAI_API_KEY\n      - OPENAI_BASE_URL\n    envVars:\n    - name: OPENAI_API_KEY\n      required: true\n      description: RunAPI API key used by OpenAI-compatible SDKs.\n    - name: OPENAI_BASE_URL\n      required: true\n      description: Set to https://runapi.ai/v1 for GPT on RunAPI.\n---\n\n# GPT on RunAPI\n\nUse the official **OpenAI SDK** (Python, TypeScript, Ruby) -- or any\nOpenAI-compatible HTTP client -- and switch the base URL to\n`https://runapi.ai/v1`. The endpoints speak the standard OpenAI protocol:\n**Chat Completions** (`POST /v1/chat/completions`), the **Responses API**\n(`POST /v1/responses`), and **Embeddings** (`POST /v1/embeddings`). No client\ncode changes beyond `base_url` and `api_key`.\n\n## Setup\n\n```dotenv\nOPENAI_API_KEY=YOUR_RUNAPI_TOKEN\nOPENAI_BASE_URL=https://runapi.ai/v1\n```\n\nGet a RunAPI API Key at <https://runapi.ai/api_keys>.\n\n| Language | Init |\n|---|---|\n| Python | `OpenAI(api_key=..., base_url=\"https://runapi.ai/v1\")` |\n| TypeScript | `new OpenAI({ apiKey: ..., baseURL: \"https://runapi.ai/v1\" })` |\n| Ruby | `OpenAI::Client.new(access_token: ..., uri_base: \"https://runapi.ai/v1\")` |\n| curl | `POST https://runapi.ai/v1/chat/completions` (or `/v1/responses`, `/v1/embeddings`) |\n\n## Pick the right endpoint\n\nChat, reasoning, and Codex models are reachable through every conversational\nsurface — Chat Completions, Responses, Anthropic-compatible `/v1/messages`, and\nGemini `contents` — so pick whichever protocol your client already speaks.\nEmbedding models (`text-embedding-*`) are reachable **only** through\n`/v1/embeddings`.\n\n## Core recipe — Chat Completions\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\n\nresponse = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain quantum computing simply.\"}],\n    reasoning_effort=\"high\",\n)\nprint(response.choices[0].message.content)\nprint(response.usage)\n```\n\n```typescript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"YOUR_RUNAPI_TOKEN\",\n  baseURL: \"https://runapi.ai/v1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Explain quantum computing simply.\" }],\n});\n```\n\n## Core recipe — Responses API\n\n```python\nimport httpx\n\nresponse = httpx.post(\n    \"https://runapi.ai/v1/responses\",\n    headers={\"x-api-key\": \"YOUR_RUNAPI_TOKEN\"},\n    json={\n        \"model\": \"gpt-5.4\",\n        \"input\": \"Explain the theory of relativity.\",\n        \"reasoning\": {\"effort\": \"medium\"},\n    },\n)\nprint(response.json())\n```\n\nThe Responses API takes `input` (string or structured), `reasoning.effort`\n(`\"low\"` / `\"medium\"` / `\"high\"`), and optional `include` for thinking blocks.\nFor `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, and\n`gpt-5.3-codex-spark`, use the consistently available subset below when the\nrequest must not depend on advanced Responses capabilities.\n\n## Core recipe — Embeddings\n\n```python\nresponse = client.embeddings.create(\n    model=\"text-embedding-3-small\",\n    input=[\"search document\", \"query text\"],\n    encoding_format=\"float\",\n)\nprint(response.data[0].embedding)\nprint(response.usage)\n```\n\n```typescript\nconst response = await client.embeddings.create({\n  model: \"text-embedding-3-small\",\n  input: [\"search document\", \"query text\"],\n  encoding_format: \"float\",\n});\nconsole.log(response.data[0].embedding);\n```\n\n## Streaming\n\n```python\nstream = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Write a haiku about coding.\"}],\n    stream=True,\n)\nfor chunk in stream:\n    delta = chunk.choices[0].delta.content\n    if delta:\n        print(delta, end=\"\", flush=True)\n```\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Write a haiku about coding.\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0].delta.content ?? \"\");\n}\n```\n\nStreaming runs through a regional edge proxy so the request does not hold a\nRails/Puma thread. Long generations should always stream.\n\n## Vision / multimodal\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        { \"type\": \"text\", \"text\": \"What is in this image?\" },\n        { \"type\": \"image_url\", \"image_url\": { \"url\": \"https://runapi.ai/img.jpg\" } }\n      ]\n    }\n  ]\n}\n```\n\nStandard OpenAI multimodal block — works on both Chat Completions and\nResponses (Responses also accepts structured `input` items). Keep requests for\nthe four consistently available subset models text-only.\n\n## Tool use / function calling / web search\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    { \"role\": \"user\", \"content\": \"Find the latest news on RunAPI.\" }\n  ],\n  \"tools\": [\n    { \"type\": \"function\", \"function\": { \"name\": \"web_search\" } }\n  ]\n}\n```\n\nUse `web_search` only when hosted tools are available for the selected model.\nCustom function tools use the standard OpenAI `tools` schema.\n\n### Consistently available Responses subset\n\n| Models | Input and transport | Function tools | Prompt caching |\n|---|---|---|---|\n| `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna` | Text, sync, SSE | Parameterized custom functions | Automatic |\n| `gpt-5.3-codex-spark` | Text, sync, SSE | Parameterless custom functions | Automatic |\n\nFor these models, omit `previous_response_id`, `conversation`, `store`,\n`background`, `include`, reasoning items and item references, explicit reasoning\ncontrols, explicit cache controls, multimodal input, and hosted tools such as\n`web_search`. A request outside this subset may return `request_conflict` before\nusage is reserved. In sync responses and the final `response.completed` event,\npreserve\n`usage.input_tokens_details.cached_tokens` and\n`usage.output_tokens_details.reasoning_tokens` when present. SSE emits one such\nterminal event followed by `[DONE]`.\n\n## List models\n\n```bash\ncurl https://runapi.ai/v1/models -H \"Authorization: Bearer YOUR_RUNAPI_TOKEN\"\n```\n\nReturns OpenAI-compatible model objects. If the API Key has\n`allowed_models` restrictions, only permitted models are returned.\n\n## Protocol compatibility\n\nGPT generation models are also available through RunAPI's\nAnthropic-compatible `/v1/messages` and Gemini `contents` client surfaces. Use\nthese protocol paths when an existing agent runtime already expects that\nrequest shape; for new GPT app code, prefer the OpenAI-compatible setup above.\n\n```bash\ncurl -X POST \"https://runapi.ai/v1/messages\" \\\n  -H \"x-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-5.4\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Draft a concise answer.\"}]\n  }'\n```\n\n```bash\ncurl -X POST \\\n  \"https://runapi.ai/v1beta/models/gpt-5.4:streamGenerateContent\" \\\n  -H \"x-goog-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Hello, GPT!\"}]}]}'\n```\n\nEmbeddings remain available only on `/v1/embeddings`; do not send embedding\nmodels to generation endpoints or compatibility surfaces.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant; text and parameterless functions in the consistently available Responses subset |\n| `gpt-5.2` | Cost-effective |\n| `gpt-5.2-pro` | Reasoning |\n| `gpt-5.6-luna` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-sol` | Text and parameterized functions in the consistently available Responses subset |\n| `gpt-5.6-terra` | Text and parameterized functions in the consistently available Responses subset |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## Connect Codex CLI itself\n\n```bash\nexport OPENAI_BASE_URL=https://runapi.ai/v1\nexport OPENAI_API_KEY=YOUR_RUNAPI_TOKEN\ncodex\n```\n\n## Agent rules\n\n- Pro models (`gpt-5.*-pro`) reject Chat Completions — always use Responses\n  for them. Other models accept either endpoint.\n- Embedding models only work on `/v1/embeddings`; do not send them to Chat\n  Completions or Responses.\n- Default GPT-native integrations to OpenAI-compatible endpoints. Use\n  Anthropic-compatible or Gemini `contents` paths only for existing clients\n  that require those request shapes.\n- Use streaming for any response longer than a few hundred tokens. Do not\n  hold the agent on a long blocking request.\n- Omit explicit reasoning controls for the consistently available subset on\n  `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, and\n  `gpt-5.3-codex-spark`.\n- Pricing, rate limits, quotas — link to <https://runapi.ai/models/gpt.md>,\n  not this skill file.\n\n## Routing\n\n- Model page: <https://runapi.ai/models/gpt.md>\n- Provider page: <https://runapi.ai/providers/openai.md>\n- Catalog: <https://runapi.ai/models.md>\n\nFile v0.2.10:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.10\",\n  \"publishedAt\": 1784761014619\n}\n\nFile v0.2.10:skill-card.md\n\n## Description: <br>\nGuides agents and developers in calling GPT chat, reasoning, Codex, multimodal, tool-use, streaming, and embedding APIs through RunAPI using OpenAI-compatible and related client protocols. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent builders use this skill to configure RunAPI credentials, choose GPT endpoints, and generate example requests for chat, Responses API, streaming, multimodal inputs, tool use, protocol compatibility, embeddings, and Codex-oriented workflows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, image references, and request content may be sent to RunAPI when following the skill examples. <br>\nMitigation: Use the skill only when RunAPI routing is intended, and avoid sending secrets or sensitive private data unless that use is approved. <br>\nRisk: The skill relies on API credentials and a custom base URL for outbound model requests. <br>\nMitigation: Store OPENAI_API_KEY securely and set OPENAI_BASE_URL only in environments that should route requests to https://runapi.ai/v1. <br>\n\n\n## Reference(s): <br>\n- [RunAPI GPT model page](https://runapi.ai/models/gpt) <br>\n- [RunAPI GPT documentation](https://runapi.ai/models/gpt.md) <br>\n- [RunAPI OpenAI provider documentation](https://runapi.ai/providers/openai.md) <br>\n- [RunAPI model catalog](https://runapi.ai/models.md) <br>\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-gpt) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with code blocks, shell commands, configuration snippets, and API request examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Examples may include API endpoints, environment variables, model IDs, request payloads, and client initialization snippets.] <br>\n\n## Skill Version(s): <br>\n0.2.10 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.2.9: 3 files, 4687 bytes\n\nFiles: skill-card.md (2273b), SKILL.md (8469b), _meta.json (129b)\n\nFile v0.2.9:SKILL.md\n\n---\nname: gpt\ndescription: Call the GPT API (the GPT-5 series — chat, reasoning, and Codex models) and OpenAI text embeddings through RunAPI using the official OpenAI SDK, Anthropic SDK, Gemini contents clients, or compatible clients. Use when the user asks for OpenAI / GPT chat, streaming completions, vision input, tool use / function calling, reasoning effort, the Responses API, embeddings, semantic search vectors, Codex coding tasks, Anthropic or Gemini protocol compatibility, or when they want to point an existing LLM SDK setup at RunAPI as the base URL.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env:\n      - OPENAI_API_KEY\n      - OPENAI_BASE_URL\n    envVars:\n    - name: OPENAI_API_KEY\n      required: true\n      description: RunAPI API key used by OpenAI-compatible SDKs.\n    - name: OPENAI_BASE_URL\n      required: true\n      description: Set to https://runapi.ai/v1 for GPT on RunAPI.\n---\n\n# GPT on RunAPI\n\nUse the official **OpenAI SDK** (Python, TypeScript, Ruby) -- or any\nOpenAI-compatible HTTP client -- and switch the base URL to\n`https://runapi.ai/v1`. The endpoints speak the standard OpenAI protocol:\n**Chat Completions** (`POST /v1/chat/completions`), the **Responses API**\n(`POST /v1/responses`), and **Embeddings** (`POST /v1/embeddings`). No client\ncode changes beyond `base_url` and `api_key`.\n\n## Setup\n\n```dotenv\nOPENAI_API_KEY=YOUR_RUNAPI_TOKEN\nOPENAI_BASE_URL=https://runapi.ai/v1\n```\n\nGet a RunAPI API Key at <https://runapi.ai/api_keys>.\n\n| Language | Init |\n|---|---|\n| Python | `OpenAI(api_key=..., base_url=\"https://runapi.ai/v1\")` |\n| TypeScript | `new OpenAI({ apiKey: ..., baseURL: \"https://runapi.ai/v1\" })` |\n| Ruby | `OpenAI::Client.new(access_token: ..., uri_base: \"https://runapi.ai/v1\")` |\n| curl | `POST https://runapi.ai/v1/chat/completions` (or `/v1/responses`, `/v1/embeddings`) |\n\n## Pick the right endpoint\n\nChat, reasoning, and Codex models are reachable through every conversational\nsurface — Chat Completions, Responses, Anthropic-compatible `/v1/messages`, and\nGemini `contents` — so pick whichever protocol your client already speaks.\nEmbedding models (`text-embedding-*`) are reachable **only** through\n`/v1/embeddings`.\n\n## Core recipe — Chat Completions\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\n\nresponse = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain quantum computing simply.\"}],\n    reasoning_effort=\"high\",\n)\nprint(response.choices[0].message.content)\nprint(response.usage)\n```\n\n```typescript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"YOUR_RUNAPI_TOKEN\",\n  baseURL: \"https://runapi.ai/v1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Explain quantum computing simply.\" }],\n});\n```\n\n## Core recipe — Responses API\n\n```python\nimport httpx\n\nresponse = httpx.post(\n    \"https://runapi.ai/v1/responses\",\n    headers={\"x-api-key\": \"YOUR_RUNAPI_TOKEN\"},\n    json={\n        \"model\": \"gpt-5.4\",\n        \"input\": \"Explain the theory of relativity.\",\n        \"reasoning\": {\"effort\": \"medium\"},\n    },\n)\nprint(response.json())\n```\n\nThe Responses API takes `input` (string or structured), `reasoning.effort`\n(`\"low\"` / `\"medium\"` / `\"high\"`), and optional `include` for thinking blocks.\n\n## Core recipe — Embeddings\n\n```python\nresponse = client.embeddings.create(\n    model=\"text-embedding-3-small\",\n    input=[\"search document\", \"query text\"],\n    encoding_format=\"float\",\n)\nprint(response.data[0].embedding)\nprint(response.usage)\n```\n\n```typescript\nconst response = await client.embeddings.create({\n  model: \"text-embedding-3-small\",\n  input: [\"search document\", \"query text\"],\n  encoding_format: \"float\",\n});\nconsole.log(response.data[0].embedding);\n```\n\n## Streaming\n\n```python\nstream = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Write a haiku about coding.\"}],\n    stream=True,\n)\nfor chunk in stream:\n    delta = chunk.choices[0].delta.content\n    if delta:\n        print(delta, end=\"\", flush=True)\n```\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Write a haiku about coding.\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0].delta.content ?? \"\");\n}\n```\n\nStreaming runs through a regional edge proxy so the request does not hold a\nRails/Puma thread. Long generations should always stream.\n\n## Vision / multimodal\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        { \"type\": \"text\", \"text\": \"What is in this image?\" },\n        { \"type\": \"image_url\", \"image_url\": { \"url\": \"https://runapi.ai/img.jpg\" } }\n      ]\n    }\n  ]\n}\n```\n\nStandard OpenAI multimodal block — works on both Chat Completions and\nResponses (Responses also accepts structured `input` items).\n\n## Tool use / function calling / web search\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    { \"role\": \"user\", \"content\": \"Find the latest news on RunAPI.\" }\n  ],\n  \"tools\": [\n    { \"type\": \"function\", \"function\": { \"name\": \"web_search\" } }\n  ]\n}\n```\n\n`web_search` is supported across the GPT models above. Custom function tools\nuse the standard OpenAI `tools` schema.\n\n## List models\n\n```bash\ncurl https://runapi.ai/v1/models -H \"Authorization: Bearer YOUR_RUNAPI_TOKEN\"\n```\n\nReturns OpenAI-compatible model objects. If the API Key has\n`allowed_models` restrictions, only permitted models are returned.\n\n## Protocol compatibility\n\nGPT generation models are also available through RunAPI's\nAnthropic-compatible `/v1/messages` and Gemini `contents` client surfaces. Use\nthese protocol paths when an existing agent runtime already expects that\nrequest shape; for new GPT app code, prefer the OpenAI-compatible setup above.\n\n```bash\ncurl -X POST \"https://runapi.ai/v1/messages\" \\\n  -H \"x-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-5.4\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Draft a concise answer.\"}]\n  }'\n```\n\n```bash\ncurl -X POST \\\n  \"https://runapi.ai/v1beta/models/gpt-5.4:streamGenerateContent\" \\\n  -H \"x-goog-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Hello, GPT!\"}]}]}'\n```\n\nEmbeddings remain available only on `/v1/embeddings`; do not send embedding\nmodels to generation endpoints or compatibility surfaces.\n\n## Supported models\n\n| Model ID | Use when |\n|---|---|\n| `gpt-5.5` | Latest general model |\n| `gpt-5.5-pro` | Reasoning-heavy |\n| `gpt-5.4` | Production default |\n| `gpt-5.4-mini` | Cost-optimized |\n| `gpt-5.4-nano` | Smallest, fastest |\n| `gpt-5.4-pro` | Reasoning |\n| `gpt-5.3-codex` | Code generation |\n| `gpt-5.3-codex-spark` | Faster Codex variant |\n| `gpt-5.2` | Cost-effective |\n| `gpt-5.2-pro` | Reasoning |\n| `text-embedding-3-large` | High-capacity vectors |\n| `text-embedding-3-small` | Efficient vectors |\n| `text-embedding-ada-002` | Legacy-compatible vectors |\n\n## Connect Codex CLI itself\n\n```bash\nexport OPENAI_BASE_URL=https://runapi.ai/v1\nexport OPENAI_API_KEY=YOUR_RUNAPI_TOKEN\ncodex\n```\n\n## Agent rules\n\n- Pro models (`gpt-5.*-pro`) reject Chat Completions — always use Responses\n  for them. Other models accept either endpoint.\n- Embedding models only work on `/v1/embeddings`; do not send them to Chat\n  Completions or Responses.\n- Default GPT-native integrations to OpenAI-compatible endpoints. Use\n  Anthropic-compatible or Gemini `contents` paths only for existing clients\n  that require those request shapes.\n- Use streaming for any response longer than a few hundred tokens. Do not\n  hold the agent on a long blocking request.\n- `reasoning_effort` is supported on every GPT model above; default is\n  usually `\"high\"` for non-Pro models.\n- Pricing, rate limits, quotas — link to <https://runapi.ai/models/gpt.md>,\n  not this skill file.\n\n## Routing\n\n- Model page: <https://runapi.ai/models/gpt.md>\n- Provider page: <https://runapi.ai/providers/openai.md>\n- Catalog: <https://runapi.ai/models.md>\n\nFile v0.2.9:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.9\",\n  \"publishedAt\": 1782984207407\n}\n\nFile v0.2.9:skill-card.md\n\n## Description: <br>\nCall GPT chat, reasoning, Codex, multimodal, tool-use, streaming, Responses API, protocol-compatible, and embeddings endpoints through RunAPI using OpenAI-compatible and related SDK clients. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent builders use this skill to configure existing LLM clients for GPT generation, Responses API calls, multimodal requests, tool use, streaming, and text embeddings through RunAPI. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Prompts, files, image URLs, and embeddings may be sent to RunAPI when this provider is configured. <br>\nMitigation: Use the skill only for workloads intended for RunAPI and avoid sending sensitive data unless that routing is approved. <br>\nRisk: A misconfigured OpenAI-compatible base URL can route existing SDK calls to the wrong provider. <br>\nMitigation: Set OPENAI_BASE_URL deliberately to https://runapi.ai/v1 and verify credentials before running production requests. <br>\n\n\n## Reference(s): <br>\n- [RunAPI GPT model page](https://runapi.ai/models/gpt.md) <br>\n- [RunAPI OpenAI provider page](https://runapi.ai/providers/openai.md) <br>\n- [RunAPI model catalog](https://runapi.ai/models.md) <br>\n- [ClawHub skill page](https://clawhub.ai/runapi-ai/skills/runapi-gpt) <br>\n- [RunAPI publisher profile](https://clawhub.ai/user/runapi-ai) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with code blocks, shell commands, environment-variable settings, and API examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires a RunAPI API key and deliberate OPENAI_BASE_URL configuration.] <br>\n\n## Skill Version(s): <br>\n0.2.9 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.2.8: 3 files, 4731 bytes\n\nFiles: skill-card.md (2319b), SKILL.md (8726b), _meta.json (129b)\n\nFile v0.2.8:SKILL.md\n\n---\nname: gpt\ndescription: Call the GPT API (the GPT-5 series — chat, reasoning, and Codex models) and OpenAI text embeddings through RunAPI using the official OpenAI SDK, Anthropic SDK, Gemini contents clients, or compatible clients. Use when the user asks for OpenAI / GPT chat, streaming completions, vision input, tool use / function calling, reasoning effort, the Responses API, embeddings, semantic search vectors, Codex coding tasks, Anthropic or Gemini protocol compatibility, or when they want to point an existing LLM SDK setup at RunAPI as the base URL.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env:\n      - OPENAI_API_KEY\n      - OPENAI_BASE_URL\n    envVars:\n    - name: OPENAI_API_KEY\n      required: true\n      description: RunAPI API key used by OpenAI-compatible SDKs.\n    - name: OPENAI_BASE_URL\n      required: true\n      description: Set to https://runapi.ai/v1 for GPT on RunAPI.\n---\n\n# GPT on RunAPI\n\nUse the official **OpenAI SDK** (Python, TypeScript, Ruby) -- or any\nOpenAI-compatible HTTP client -- and switch the base URL to\n`https://runapi.ai/v1`. The endpoints speak the standard OpenAI protocol:\n**Chat Completions** (`POST /v1/chat/completions`), the **Responses API**\n(`POST /v1/responses`), and **Embeddings** (`POST /v1/embeddings`). No client\ncode changes beyond `base_url` and `api_key`.\n\n## Setup\n\n```dotenv\nOPENAI_API_KEY=YOUR_RUNAPI_TOKEN\nOPENAI_BASE_URL=https://runapi.ai/v1\n```\n\nGet a RunAPI API Key at <https://runapi.ai/api_keys>.\n\n| Language | Init |\n|---|---|\n| Python | `OpenAI(api_key=..., base_url=\"https://runapi.ai/v1\")` |\n| TypeScript | `new OpenAI({ apiKey: ..., baseURL: \"https://runapi.ai/v1\" })` |\n| Ruby | `OpenAI::Client.new(access_token: ..., uri_base: \"https://runapi.ai/v1\")` |\n| curl | `POST https://runapi.ai/v1/chat/completions` (or `/v1/responses`, `/v1/embeddings`) |\n\n## Pick the right endpoint\n\n| Model | Endpoint to use |\n|---|---|\n| `gpt-5.5`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.2` | Chat Completions **or** Responses |\n| `gpt-5.5-pro`, `gpt-5.4-pro`, `gpt-5.2-pro` | Responses **only** |\n| `text-embedding-3-large`, `text-embedding-3-small`, `text-embedding-ada-002` | Embeddings **only** |\n\n## Core recipe — Chat Completions\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\n\nresponse = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain quantum computing simply.\"}],\n    reasoning_effort=\"high\",\n)\nprint(response.choices[0].message.content)\nprint(response.usage)\n```\n\n```typescript\nimport OpenAI from \"openai\";\n\nconst client = new OpenAI({\n  apiKey: \"YOUR_RUNAPI_TOKEN\",\n  baseURL: \"https://runapi.ai/v1\",\n});\n\nconst response = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Explain quantum computing simply.\" }],\n});\n```\n\n## Core recipe — Responses API\n\n```python\nimport httpx\n\nresponse = httpx.post(\n    \"https://runapi.ai/v1/responses\",\n    headers={\"x-api-key\": \"YOUR_RUNAPI_TOKEN\"},\n    json={\n        \"model\": \"gpt-5.4\",\n        \"input\": \"Explain the theory of relativity.\",\n        \"reasoning\": {\"effort\": \"medium\"},\n    },\n)\nprint(response.json())\n```\n\nThe Responses API takes `input` (string or structured), `reasoning.effort`\n(`\"low\"` / `\"medium\"` / `\"high\"`), and optional `include` for thinking blocks.\n\n## Core recipe — Embeddings\n\n```python\nresponse = client.embeddings.create(\n    model=\"text-embedding-3-small\",\n    input=[\"search document\", \"query text\"],\n    encoding_format=\"float\",\n)\nprint(response.data[0].embedding)\nprint(response.usage)\n```\n\n```typescript\nconst response = await client.embeddings.create({\n  model: \"text-embedding-3-small\",\n  input: [\"search document\", \"query text\"],\n  encoding_format: \"float\",\n});\nconsole.log(response.data[0].embedding);\n```\n\n## Streaming\n\n```python\nstream = client.chat.completions.create(\n    model=\"gpt-5.4\",\n    messages=[{\"role\": \"user\", \"content\": \"Write a haiku about coding.\"}],\n    stream=True,\n)\nfor chunk in stream:\n    delta = chunk.choices[0].delta.content\n    if delta:\n        print(delta, end=\"\", flush=True)\n```\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: \"gpt-5.4\",\n  messages: [{ role: \"user\", content: \"Write a haiku about coding.\" }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0].delta.content ?? \"\");\n}\n```\n\nStreaming runs through a regional edge proxy so the request does not hold a\nRails/Puma thread. Long generations should always stream.\n\n## Vision / multimodal\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        { \"type\": \"text\", \"text\": \"What is in this image?\" },\n        { \"type\": \"image_url\", \"image_url\": { \"url\": \"https://runapi.ai/img.jpg\" } }\n      ]\n    }\n  ]\n}\n```\n\nStandard OpenAI multimodal block — works on both Chat Completions and\nResponses (Responses also accepts structured `input` items).\n\n## Tool use / function calling / web search\n\n```json\n{\n  \"model\": \"gpt-5.4\",\n  \"messages\": [\n    { \"role\": \"user\", \"content\": \"Find the latest news on RunAPI.\" }\n  ],\n  \"tools\": [\n    { \"type\": \"function\", \"function\": { \"name\": \"web_search\" } }\n  ]\n}\n```\n\n`web_search` is supported across the GPT models above. Custom function tools\nuse the standard OpenAI `tools` schema.\n\n## List models\n\n```bash\ncurl https://runapi.ai/v1/models -H \"Authorization: Bearer YOUR_RUNAPI_TOKEN\"\n```\n\nReturns OpenAI-compatible model objects. If the API Key has\n`allowed_models` restrictions, only permitted models are returned.\n\n## Protocol compatibility\n\nGPT generation models are also available through RunAPI's\nAnthropic-compatible `/v1/messages` and Gemini `contents` client surfaces. Use\nthese protocol paths when an existing agent runtime already expects that\nrequest shape; for new GPT app code, prefer the OpenAI-compatible setup above.\n\n```bash\ncurl -X POST \"https://runapi.ai/v1/messages\" \\\n  -H \"x-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"gpt-5.4\",\n    \"max_tokens\": 1024,\n    \"messages\": [{\"role\": \"user\", \"content\": \"Draft a concise answer.\"}]\n  }'\n```\n\n```bash\ncurl -X POST \\\n  \"https://runapi.ai/v1beta/models/gpt-5.4:streamGenerateContent\" \\\n  -H \"x-goog-api-key: YOUR_RUNAPI_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Hello, GPT!\"}]}]}'\n```\n\nEmbeddings remain available only on `/v1/embeddings`; do not send embedding\nmodels to generation endpoints or compatibility surfaces.\n\n## Supported models\n\n| Model ID | API | Use when |\n|---|---|---|\n| `gpt-5.5` | Chat, Responses | Latest general model |\n| `gpt-5.5-pro` | Responses only | Reasoning-heavy |\n| `gpt-5.4` | Chat, Responses | Production default |\n| `gpt-5.4-mini` | Chat, Responses | Cost-optimized |\n| `gpt-5.4-nano` | Chat, Responses | Smallest, fastest |\n| `gpt-5.4-pro` | Responses only | Reasoning |\n| `gpt-5.3-codex` | Chat, Responses | Code generation |\n| `gpt-5.3-codex-spark` | Chat, Responses | Faster Codex variant |\n| `gpt-5.2` | Chat, Responses | Cost-effective |\n| `gpt-5.2-pro` | Responses only | Reasoning |\n| `text-embedding-3-large` | Embeddings | High-capacity vectors |\n| `text-embedding-3-small` | Embeddings | Efficient vectors |\n| `text-embedding-ada-002` | Embeddings | Legacy-compatible vectors |\n\n## Connect Codex CLI itself\n\n```bash\nexport OPENAI_BASE_URL=https://runapi.ai/v1\nexport OPENAI_API_KEY=YOUR_RUNAPI_TOKEN\ncodex\n```\n\n## Agent rules\n\n- Pro models (`gpt-5.*-pro`) reject Chat Completions — always use Responses\n  for them. Other models accept either endpoint.\n- Embedding models only work on `/v1/embeddings`; do not send them to Chat\n  Completions or Responses.\n- Default GPT-native integrations to OpenAI-compatible endpoints. Use\n  Anthropic-compatible or Gemini `contents` paths only for existing clients\n  that require those request shapes.\n- Use streaming for any response longer than a few hundred tokens. Do not\n  hold the agent on a long blocking request.\n- `reasoning_effort` is supported on every GPT model above; default is\n  usually `\"high\"` for non-Pro models.\n- Pricing, rate limits, quotas — link to <https://runapi.ai/models/gpt.md>,\n  not this skill file.\n\n## Routing\n\n- Model page: <https://runapi.ai/models/gpt.md>\n- Provider page: <https://runapi.ai/providers/openai.md>\n- Catalog: <https://runapi.ai/models.md>\n\nFile v0.2.8:_meta.json\n\n{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.8\",\n  \"publishedAt\": 1782981741719\n}\n\nFile v0.2.8:skill-card.md\n\n## Description: <br>\nCall GPT chat, reasoning, Codex, vision, tool-use, streaming, and embedding APIs through RunAPI using OpenAI-compatible, Anthropic-compatible, Gemini-compatible, or HTTP clients. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[runapi-ai](https://clawhub.ai/user/runapi-ai) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agent builders use this skill to configure GPT generation and embedding calls through RunAPI, including endpoint selection, streaming, multimodal input, function calling, protocol compatibility, and model listing. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Over-privileged service tokens could expose broader RunAPI account capabilities than the task needs. <br>\nMitigation: Use least-privileged service tokens and avoid admin credentials unless the task genuinely requires them. <br>\nRisk: Generated commands or API requests could perform unintended writes, sends, or costly model calls. <br>\nMitigation: Review generated commands and request payloads before approving execution. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/runapi-ai/skills/runapi-gpt) <br>\n- [RunAPI GPT Model Page](https://runapi.ai/models/gpt) <br>\n- [RunAPI GPT Documentation](https://runapi.ai/models/gpt.md) <br>\n- [RunAPI OpenAI Provider Documentation](https://runapi.ai/providers/openai.md) <br>\n- [RunAPI Model Catalog](https://runapi.ai/models.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, markdown, code, shell commands, configuration] <br>\n**Output Format:** [Markdown with code examples, shell commands, API request examples, and configuration snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May reference RunAPI API keys, base URLs, model IDs, endpoint choices, streaming behavior, and SDK-specific initialization options.] <br>\n\n## Skill Version(s): <br>\n0.2.8 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: gpt Owner: runapi-ai Summary: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference. Tags: latest:0.2.17 Version history: v0.2.17 | 2026-09-30T12:16:09.667Z | user Added - List gpt-5-pro for text-only Responses requests. - Add GPT","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"},{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"},{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"},{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"},{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"},{"language":"python","snippet":"from openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: gpt\ndescription: Call GPT generation and OpenAI text embedding models through RunAPI using OpenAI-compatible clients. Use for chat, Responses, embeddings, streaming, tools, vision, or an existing compatibility client that needs the conditional reference.\ndocumentation: https://runapi.ai/models/gpt.md\nprovider_page: https://runapi.ai/providers/openai.md\ncatalog: https://runapi.ai/models.md\nmetadata:\n  openclaw:\n    homepage: https://runapi.ai/models/gpt\n    primaryEnv: OPENAI_API_KEY\n    requires:\n      env: [OPENAI_API_KEY, OPENAI_BASE_URL]\n    envVars:\n    - {name: OPENAI_API_KEY, required: true, description: RunAPI API key used by OpenAI-compatible clients.}\n    - {name: OPENAI_BASE_URL, required: true, description: Set to https://runapi.ai/v1 for GPT on RunAPI.}\n---\n\n# GPT on RunAPI\n\nUse OpenAI-compatible clients at `https://runapi.ai/v1` as the primary protocol.\n\n## Primary protocol recipe\n\n### Authenticate\n\nSet `OPENAI_API_KEY` to a RunAPI API key and `OPENAI_BASE_URL` to `https://runapi.ai/v1`.\n\n### Send request\n\n```python\nfrom openai import OpenAI\nclient = OpenAI(api_key=\"YOUR_RUNAPI_TOKEN\", base_url=\"https://runapi.ai/v1\")\nresponse = client.responses.create(model=\"gpt-5.5\", input=\"Summarize this review.\")\nprint(response.output_text)\nprint(response.usage)\n```\n\nUse `client.chat.completions.create` for `gpt-5.2`, which does not accept\nResponses. Use Responses for `gpt-5.*-pro`. Use `client.embeddings.create` only\nwith the three embedding model IDs below. For streaming Responses, set\n`stream=True` and consume through one usage-bearing `response.completed`\nfollowed by `[DONE]`.\n\nFor `gpt-5.6-luna`, `gpt-5.6-sol`, and `gpt-5.6-terra`, start with text input,\nsync or SSE transport, parameterized custom functions, and automatic prompt\ncaching. Add reasoning controls, multimodal input, hosted tools, or\ncontinuation state only when the current RunAPI contract verifies that shape.\n\n### Verify result\n\nResponses require final output, `response.completed`, and `usage`. Chat requires\nfinal assistant content, `finish_reason`, and `usage`. Embeddings require one\nnumeric vector per input and response `usage`.\n\n### Stop boundaries\n\nCorrect a rejected shape once using the current error and endpoint contract.\nRetry transport once only before any response or Usage and when replay is safe.\nRecord a terminal error and stop without changing model, endpoint, or protocol.\nKeep embedding models on `/v1/embeddings`.\n\n## Compatibility protocols\n\nLoad [compatibility protocols](references/compatibility-protocols.md) only when an existing client requires Anthropic Messages or Gemini contents.\n\n## Live audio\n\n`gpt-live-1` is available only on the dedicated Live transport. Use WebRTC\nwith `POST /v1/live/webrtc` and a client SDP offer, or WebSocket with\n`GET /v1/live/websocket` and a first `session.start` frame. Live sessions may\ndelegate backend work through `delegation.type: responses` or return function\nwork through `delegation.type: client`. Responses delegatio"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70me4rk7jqjt92evshjeb5z18768g7\",\n  \"slug\": \"runapi-gpt\",\n  \"version\": \"0.2.17\",\n  \"publishedAt\": 1790770569667\n}"},{"path":"references/compatibility-protocols.md","content":"# GPT compatibility protocols\n\nLoad this reference only for an existing Anthropic Messages or Gemini contents client. Embedding models remain on `/v1/embeddings` and do not use these compatibility protocols.\n\nFor Messages, use base URL `https://runapi.ai`, a RunAPI key, a supported exact\ngeneration model ID, `max_tokens`, and messages. Verify final content,\n`stop_reason`, and `usage`; streaming ends at `message_stop`.\n\nFor Gemini contents, set `RUNAPI_MODEL` to a supported exact model ID and use\n`https://runapi.ai/v1beta/models/$RUNAPI_MODEL:generateContent`\nor `streamGenerateContent` with `x-goog-api-key`. Verify candidates,\n`finishReason`, and `usageMetadata`.\n\nApply one evidence-backed shape correction, at most one safe pre-response\ntransport retry, and no automatic model or protocol hopping."},{"path":"skill-card.md","content":"## Description:\n\nGuides agents using OpenAI-compatible clients to call GPT generation and text embedding models through RunAPI.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[runapi-ai](https://clawhub.ai/user/runapi-ai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to configure RunAPI clients and select supported requests for GPT chat, Responses, embeddings, streaming, tools, vision, or live audio.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Model requests send prompts and other supplied data to RunAPI for processing.\n\nMitigation: Use this skill only when RunAPI is an approved processor; check account policies and data-retention terms before sending secrets, regulated data, or private documents.\n\nRisk: A RunAPI API key is required for client requests.\n\nMitigation: Keep the key in the OPENAI_API_KEY environment variable rather than embedding it in examples or shared files.\n\n## Reference(s):\n\n- [GPT on RunAPI documentation](https://runapi.ai/models/gpt.md)\n- [RunAPI OpenAI provider](https://runapi.ai/providers/openai.md)\n- [RunAPI model catalog](https://runapi.ai/models.md)\n- [GPT on RunAPI model page](https://runapi.ai/models/gpt)\n- [Compatibility protocols](references/compatibility-protocols.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Configuration instructions]\n\n**Output Format:** [Markdown with Python examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Request shapes and model support depend on the RunAPI endpoint and current contract.]\n\n## Skill Version(s):\n\n0.2.17 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1510,"uniquenessScore":40,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T04:07:23.563Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:44:42.607Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}