Skip to main content

Test with a sandbox key

Use a pk_test_... key while building the integration. Sandbox orders do not bill or run live fulfillment. Workspace credentials are shape-checked locally and receive a local sandbox identity. Peeker does not call the provider. Use placeholder credentials, never production secrets. Save Smartlead and PlusVibe login credentials through POST /workspaces. Smartlead’s login pair is optional when connecting, but its email and password must be sent together. Smartlead orders never accept login credentials. Google orders do not need the pair; Microsoft orders and pool attach do. Before going live, verify:
  1. One successful order
  2. One error response
  3. Your webhook signature handler
A limited key can read data and check domain availability. Use a full key for other writes.

Log request IDs

Every response includes Peeker-Request-Id (opaque UUID). Errors include the same value as error.request_id.
Log the request ID, path, status, and error code. Never log bodies that contain provider credentials.

Handle errors by code

Branch on error.code, not message text.

Retry orders safely

POST /orders requires Idempotency-Key. POST /workspaces does not.
  • Generate one key from a stable checkout or order reference.
  • Keys are unique across your Partner account. Use a different key for each new order.
  • Keep the key with the checkout record.
  • Retry the unchanged order with the same key.
  • For a Smartlead Microsoft or PlusVibe login error, repair the connected workspace, then retry the unchanged order with its original key. Their orders reject destination.login_credentials.
  • Never reuse a key for another order or a changed request.
An exact order replay returns the original order with created.order: false. It does not charge again or emit duplicate completion webhooks. List endpoints return links.first and links.next.
Follow links.next until it is null. Do not build or decode page_token. Default page size is 25. Maximum is 100.

Keep webhook handlers small

  1. Verify Peeker-Signature against the raw body.
  2. Reject timestamps more than five minutes off.
  3. Dedupe on Peeker-Event-Id for at least 24 hours.
  4. Return 2xx quickly. Process from a queue.
  5. Trust data.status. Do not depend on event order.
See Webhooks and Async jobs.
Last modified on August 24, 2026