Integration recipe

Publish to pixPLace from Zapier with Custom Request

Two Webhooks by Zapier Custom Request steps upload an image by URL and publish a post whenever your trigger fires.

Who it is for

No-code users who already collect content in a Zapier trigger such as a new row, a new RSS item or a new file.

What it automates

Publish a post every time the trigger fires: upload the image from its URL, then create the post.

Steps

  1. Choose your trigger (for example a new spreadsheet row) and make sure it provides a title and a public image URL.
  2. Add the action Webhooks by Zapier, event Custom Request. Fill it as shown in step 1 below to upload the image.
  3. Add a second Custom Request for the post. In its data, pick the publicUrl field from the output of the first step.
  4. Use a stable id of the trigger item in the Idempotency-Key, not a timestamp: a repeated run for the same item then returns the original post.
  5. When you create the key, tick the `publish` scope. A key without it gets 403 insufficient_scope on these calls.

Examples

Placeholders: ppk_live_XXXXXXXX is your key. The ids and the image address are samples. The API address is always https://pixplace.space/api/v1.

Step 1: Custom Request, upload
Method: POST
URL: https://pixplace.space/api/v1/uploads/from-url
Data: {"url": "<Image URL from the trigger>"}
Headers:
  Authorization: Bearer ppk_live_XXXXXXXX
  Content-Type: application/json
  Idempotency-Key: upload-<Row ID from the trigger>
Step 2: Custom Request, create the post
Method: POST
URL: https://pixplace.space/api/v1/posts
Data: {"title": "<Title from the trigger>", "attachments": [{"url": "<publicUrl from step 1>", "type": "IMAGE"}]}
Headers:
  Authorization: Bearer ppk_live_XXXXXXXX
  Content-Type: application/json
  Idempotency-Key: post-<Row ID from the trigger>

Common errors

StatusCauseWhat to do
400The Data field is not valid JSON, or the title or the publicUrl field is empty because the wrong field was picked.Run the test of step 1 first and pick publicUrl from its output. Keep the quotes around every inserted value.
401The API key is missing, malformed, revoked or sent in the wrong header.Put the key in the Headers box as Authorization: Bearer <key>. Do not use Basic Auth in the Custom Request. The header must read Authorization: Bearer followed by your ppk_live_ key. Check the key in Settings → Developer.
403The key lacks a scope the call needs: the answer is 403 with error.code insufficient_scope and the missing scope in error.required.Create a new key in Settings → Developer with the `publish` scope ticked and use it instead; repeating the call with the same key fails the same way.
429A per-minute or per-day limit was reached. The Retry-After header and the retryAfter field of the body say how many seconds to wait.Wait that long and repeat with the SAME Idempotency-Key. Zapier does not wait for you: turn on Autoreplay for the Zap, or add a Delay step and replay the run later. The same Idempotency-Key keeps the replay safe.
502The server could not download the source URL: it answered 4xx or 5xx, the host does not resolve or the response was compressed.Open the source URL in a private browser window. It must be public and answer 200 without a login.

The full list of statuses, the retry rules and the limits are in Errors and retries.

Other tools