OHMBO DEVELOPER API
从你的软件发起硬件任务
使用原生任务 API 或已支持的 OpenAI SDK 调用,再回到 Ohmbo 查看可视化、产物以及其余硬件工作流程。
Compatible with OpenAI SDKs
基础地址
https://mcp.ohmbo.com/v1使用 Ohmbo 账户中的正式或测试密钥。不同环境的任务、用量与额度相互隔离。
当前 API 范围
Developer API v1 接收异步 PCB 设计任务,并返回 Ohmbo 网站地址以查看完整结果。各适配层进入同一套账户、额度与任务系统。
- /v1/designs
- 标准的创建、列表、查询、修改、取消、事件与产物操作。
- /v1/responses
- 创建、查询和取消映射到原生 Ohmbo 任务的后台 Responses。
- /v1/chat/completions
- 通过支持此端点的聊天客户端或中转服务提交一项异步硬件任务。
- /v1/models
- 发现提供给已支持 SDK 和中转客户端的稳定 PCB 设计模型。
原生 API 快速开始
原生接口提供完整任务对象、游标分页、用量、幂等控制以及受账户授权的网站链接。
curl https://mcp.ohmbo.com/v1/designs \
-H 'Authorization: Bearer $OHMBO_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: enclosure-controller-v1' \
-d '{"prompt":"Design an ESP32-C3 sensor board with USB-C power"}'OpenAI SDK 示例
已测试范围包括模型列表、后台 Responses 与短响应的聊天任务提交。不支持的参数会明确报错。
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ['OHMBO_API_KEY'],
base_url='https://mcp.ohmbo.com/v1',
)
response = client.responses.create(
model='ohmbo-pcb-design-1',
input='Design an ESP32-C3 sensor board with USB-C power',
background=True,
)
job_id = response.model_extra['ohmbo_job_id']
print(response.model_extra['website_url'])JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: process.env.OHMBO_API_KEY,
baseURL: 'https://mcp.ohmbo.com/v1',
});
const response = await client.responses.create({
model: 'ohmbo-pcb-design-1',
input: 'Design an ESP32-C3 sensor board with USB-C power',
background: true,
});
console.log(response.ohmbo_job_id, response.website_url);异步生命周期
硬件任务是异步的。提交后会立即返回;你可以轮询资源或订阅带签名的 Webhook。
- 01
使用 Idempotency-Key 创建任务。响应包含任务 ID、预占额度与网站地址。
- 02
当状态为 queued 或 in_progress 时,轮询原生任务或 Responses 资源。
- 03
打开 website_url,在网站查看该阶段可用的完整项目界面与结果。
签名 Webhook
可在开发者设置或通过 /v1/webhooks 创建接收地址。处理事件前,请使用原始请求体和时间戳验证 Ohmbo-Signature。
signed = f"{timestamp}.{raw_body.decode()}".encode()
expected = hmac.new(signing_secret.encode(), signed, hashlib.sha256).hexdigest()
hmac.compare_digest(received_v1, expected)错误、限流与额度
每个已认证响应都会返回当前凭证的请求窗口。429 响应包含 Retry-After。任务提交还受账户并发、额度和任务配额约束。
- HTTP 401
- authentication_error
- HTTP 402
- insufficient_credits
- HTTP 409
- idempotency_conflict
- HTTP 422
- invalid_request
- HTTP 429
- rate_limited / quota
- HTTP 5xx
- service unavailable
- X-Request-Id
- X-RateLimit-Limit
- X-RateLimit-Remaining
- X-RateLimit-Reset
- Retry-After