Test with a sandbox key
Use apk_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:
- One successful order
- One error response
- Your webhook signature handler
limited key can read data and check domain availability. Use a full key
for other writes.
Log request IDs
Every response includesPeeker-Request-Id (opaque UUID). Errors include the
same value as error.request_id.
Handle errors by code
Branch onerror.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.
created.order: false.
It does not charge again or emit duplicate completion webhooks.
Follow pagination links
List endpoints returnlinks.first and links.next.
links.next until it is null.
links.next is a complete URL. Request that URL directly with your usual authorization header.
If your client builds the request itself, extract only the URL’s page_token query parameter
and keep the same filters. GET /orders also accepts the complete next-page URL as the
page_token value for clients that already pass it that way. Other list endpoints require
the token itself. Do not send the literal strings "null" or "undefined" after the last page.
Do not build or decode page_token.
Default page size is 25. Maximum is 100.
Keep webhook handlers small
- Verify
Peeker-Signatureagainst the raw body. - Reject timestamps more than five minutes off.
- Dedupe on
Peeker-Event-Idfor at least 24 hours. - Return
2xxquickly. Process from a queue. - Trust
data.status. Do not depend on event order.