Start PayPal Authorization
POST/api/paypal/integrations/:id/authorize
Begins the Connect with PayPal sign-up for an integration and returns the PayPal URL to send the merchant to (open it in a popup or new window).
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
SKU.io creates a PayPal partner referral whose return URL is GET /api/paypal/oauth/callback?state=.... The state is single-use and carries the tenant, so the callback can find this account again. When the merchant finishes on PayPal, PayPal sends the browser to that callback, which records the connection.
Body
confirm_same_account(boolean, optional) — only needed when switching anapi_keysaccount to Connect with PayPal whileswitch_needs_same_account_confirmationis true: confirms the merchant will sign in with the same PayPal account its existing payments were taken with. Without it such a request returns409withrequires_same_account_confirmation: true.
Errors
409— Connect with PayPal is not available on this deployment yet (use API keys instead), or the same-account confirmation above is required.422— PayPal rejected or could not be reached while creating the referral.404— unknown integration.
Rate limited to 20 requests per minute.
Permission: Integrations → Manage (integrations.manage).
Authentication: Bearer token (Personal Access Token).
Request
Responses
- 200
- 401
- 403
- 404
- 409
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Conflict
Response Headers
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.