Connect an operator with your own credentials
Stores credentials for an operator under your business. Credentials are encrypted at rest and never returned. A connection created here starts `inactive`; run `/test` to activate it. To take payments the operator must also be switched on for the project and have a settlement bank account (dashboard). Only `mode: "byo"` can be created here; connections Wire provisions for you come from the dashboard's connector application. **Errors:** `400 operator_unknown` (`operator`), `400 operator_connection_exists` (`operator`) — the business already has a connection for this operator, `400 operator_connection_invalid` (`mode`) — any mode other than `byo`, `400 operator_connection_invalid` (`credentials`) — empty `credentials` or an invalid `mode`.
/v1/operator_connectionsAuthorization
bearerAuth Secret API key as a bearer token: Authorization: Bearer sk_live_….
Test keys (sk_test_…) are refused with 401 test_mode_unavailable.
Keys are issued per project in the dashboard. Never expose a secret
key in browser or mobile code.
In: header
Header Parameters
Required on every POST and DELETE (missing → 400 parameter_missing; longer than 255 characters → 400 parameter_invalid). Use one stable key per logical operation, e.g. your order id plus the action. A retry with the same key and the same body returns the recorded response (header Idempotent-Replayed: true) instead of acting twice. The same key with a different body or path → 409 idempotency_key_in_use. While the first request is still running, a duplicate gets 409 idempotency_in_flight — wait a moment and retry. Successful (2xx) and declined (402) responses are recorded for 48 hours; other errors are not, so a retry after fixing a 400 runs normally. Keys are scoped to the API key's project.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/operator_connections" \ -H "Idempotency-Key: order-1001-create" \ -H "Content-Type: application/json" \ -d '{ "operator": "op_example", "credentials": { "username": "your-operator-username", "password": "your-operator-password" } }'{
"id": "opc_r3mq7z2kw5xt4nvb6cyj2ega2c",
"object": "operator_connection",
"operator": "op_example",
"mode": "byo",
"status": "inactive",
"capabilities": [
"refund.full"
],
"created": 1791770000
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_missing",
"message": "amount is required",
"param": "amount",
"request_id": "req_8f3a1c9e5b7d2f4a6c0e9b1d"
}
}{
"error": {
"type": "api_error",
"code": "test_mode_unavailable",
"message": "test keys are not accepted by this API; use a live secret key",
"request_id": "req_8f3a1c9e5b7d2f4a6c0e9b1d"
}
}