Documentation Index

Fetch the complete documentation index at: /llms.txt

Use this file to discover all available pages before exploring further.

Skip to main content
POST
/
webhooks
/
{id}
/
resume
Resume webhook
curl --request POST \
  --url https://xquik.com/api/v1/webhooks/{id}/resume \
  --header 'x-api-key: <api-key>'
import requests

url = "https://xquik.com/api/v1/webhooks/{id}/resume"

headers = {"x-api-key": "<api-key>"}

response = requests.post(url, headers=headers)

print(response.text)
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};

fetch('https://xquik.com/api/v1/webhooks/{id}/resume', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://xquik.com/api/v1/webhooks/{id}/resume"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("x-api-key", "<api-key>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
Free - does not consume credits
curl -X POST https://xquik.com/api/v1/webhooks/15/resume \
  -H "x-api-key: xq_YOUR_KEY_HERE" \
  | jq '{
    webhook_id: .webhook.id,
    resumed: (.success == true),
    status_code: .statusCode,
    delivery_status: .webhook.deliveryStatus,
    consecutive_failures: .webhook.consecutiveFailures,
    failure_hard_cap: .webhook.failureHardCap,
    test_endpoint: ("/api/v1/webhooks/" + .webhook.id + "/test"),
    deliveries_endpoint: ("/api/v1/webhooks/" + .webhook.id + "/deliveries")
  }'
const response = await fetch("https://xquik.com/api/v1/webhooks/15/resume", {
  method: "POST",
  headers: { "x-api-key": "xq_YOUR_KEY_HERE" },
});
const result = await response.json();
const resumeHandoff = {
  webhook_id: result.webhook.id,
  resumed: result.success === true,
  status_code: result.statusCode,
  delivery_status: result.webhook.deliveryStatus,
  consecutive_failures: result.webhook.consecutiveFailures,
  failure_hard_cap: result.webhook.failureHardCap,
  test_endpoint: `/api/v1/webhooks/${result.webhook.id}/test`,
  deliveries_endpoint: `/api/v1/webhooks/${result.webhook.id}/deliveries`,
};
import requests

response = requests.post(
    "https://xquik.com/api/v1/webhooks/15/resume",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
)
result = response.json()
webhook = result["webhook"]
resume_handoff = {
    "webhook_id": webhook["id"],
    "resumed": result["success"] is True,
    "status_code": result["statusCode"],
    "delivery_status": webhook["deliveryStatus"],
    "consecutive_failures": webhook["consecutiveFailures"],
    "failure_hard_cap": webhook["failureHardCap"],
    "test_endpoint": f"/api/v1/webhooks/{webhook['id']}/test",
    "deliveries_endpoint": f"/api/v1/webhooks/{webhook['id']}/deliveries",
}
package main

import (
  "encoding/json"
  "log"
  "net/http"
)

type Webhook struct {
  ConsecutiveFailures int      `json:"consecutiveFailures"`
  CreatedAt           string   `json:"createdAt"`
  DeliveryStatus      string   `json:"deliveryStatus"`
  EventTypes          []string `json:"eventTypes"`
  FailureHardCap      int      `json:"failureHardCap"`
  ID                  string   `json:"id"`
  IsActive            bool     `json:"isActive"`
  URL                 string   `json:"url"`
}

type ResumeResponse struct {
  StatusCode int     `json:"statusCode"`
  Success    bool    `json:"success"`
  Webhook    Webhook `json:"webhook"`
}

type ResumeHandoff struct {
  ConsecutiveFailures int    `json:"consecutive_failures"`
  DeliveriesEndpoint  string `json:"deliveries_endpoint"`
  DeliveryStatus      string `json:"delivery_status"`
  FailureHardCap      int    `json:"failure_hard_cap"`
  Resumed             bool   `json:"resumed"`
  StatusCode          int    `json:"status_code"`
  TestEndpoint        string `json:"test_endpoint"`
  WebhookID           string `json:"webhook_id"`
}

func main() {
  req, err := http.NewRequest("POST", "https://xquik.com/api/v1/webhooks/15/resume", nil)
  if err != nil {
    log.Fatal(err)
  }
  req.Header.Set("x-api-key", "xq_YOUR_KEY_HERE")

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
    log.Fatal(err)
  }
  defer resp.Body.Close()

  var result ResumeResponse
  if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
    log.Fatal(err)
  }
  handoff := ResumeHandoff{
    ConsecutiveFailures: result.Webhook.ConsecutiveFailures,
    DeliveriesEndpoint:  "/api/v1/webhooks/" + result.Webhook.ID + "/deliveries",
    DeliveryStatus:      result.Webhook.DeliveryStatus,
    FailureHardCap:      result.Webhook.FailureHardCap,
    Resumed:             result.Success,
    StatusCode:          result.StatusCode,
    TestEndpoint:        "/api/v1/webhooks/" + result.Webhook.ID + "/test",
    WebhookID:           result.Webhook.ID,
  }
  _ = handoff
}
These snippets shape a recovery row. Store delivery_status, consecutive_failures, failure_hard_cap, status_code, and the delivery-log endpoint beside the webhook ID.

Path parameters

string
required
The webhook ID to test and resume.

Headers

string
required
Your API key. This endpoint also accepts session cookie authentication.

What happens

Xquik sends a signed webhook.test request to the webhook URL. If your receiver returns a 2xx status, Xquik reactivates the webhook, resets consecutiveFailures to 0, and returns the updated webhook object. If the signed test fails, Xquik returns 400 with success: false, statusCode, and error. The webhook is not reactivated. This endpoint does not rotate or return the signing secret. Keep using the one-time secret from Create Webhook.

Response

  • 200 OK
  • 400 Test Failed
  • 400 Invalid Request
  • 401 Unauthenticated
  • 404 Not Found
  • 429 Rate Limited
boolean
true when the signed test request succeeded and the webhook was resumed.
number
HTTP status code returned by your receiver during the signed test.
object
Updated webhook configuration.
{
  "success": true,
  "statusCode": 200,
  "webhook": {
    "id": "15",
    "url": "https://your-server.com/webhook",
    "eventTypes": ["tweet.new", "tweet.reply"],
    "isActive": true,
    "consecutiveFailures": 0,
    "deliveryStatus": "active",
    "failureHardCap": 200,
    "createdAt": "2026-02-24T10:30:00.000Z"
  }
}

Recovery handoff

Use this endpoint after fixing a receiver that returned repeated non-2xx responses, became unreachable, or reached deliveryStatus: "needs_attention".

Needs Attention

deliveryStatus: "needs_attention" means the receiver has reached the failure cap. Fix the receiver before resuming.

Signed Test Gate

Resume only succeeds after a signed webhook.test request receives a 2xx response from your receiver.

Failure Counter

Store consecutiveFailures and failureHardCap for alerting and recovery dashboards.

No Secret Rotation

Resume does not return or rotate secret. Keep verifying delivery signatures with the secret returned at creation time.

Delivery Log

After resuming, check List Deliveries for recent status, attempts, lastStatusCode, and lastError rows.

Event Replay

Use delivery streamEventId with Get Event or event list pages to backfill missed downstream work.
This endpoint supports dual authentication: API key (x-api-key header) or session cookie from the dashboard.Related: List Webhooks · Update Webhook · Test Webhook · List Deliveries · Webhook Verification
Last modified on June 23, 2026
Morty Proxy This is a proxified and sanitized view of the page, visit original site.