Skip to content
HIPS
  • Earn with your GPU
  • Pricing
  • Docs
Sign inJoin early access
⌘K

Get started

  1. 01Developer hub
  2. 02Quickstart
  3. 03Migrate to HIPS

Guides

  1. 04HIPS SDK
  2. 05Import and run your model
  3. 06Model and task guides
    1. ATask guides
    2. BLanguage (chat)
    3. CClassification
    4. DImage
    5. EVideo
    6. FAudio
    7. GDocument processing
  4. 07Batch jobs
  5. 08Prompt caching
  6. 09Coding-tool setup
    1. AClaude Code
    2. BOther coding tools and editor integrations
  7. 10Command line
    1. ASign in
  8. 11Console
    1. AAccount
    2. BWorkspaces
    3. CAPI keys
    4. DSettings
    5. EUsage
    6. FModels
    7. GPlayground
    8. HDeployments
  9. 12Billing
  10. 13Provider setup
    1. AWhen it works
    2. BCommands
    3. CSettings
    4. DProvider Console
    5. EEarnings
    6. FCrash reports
    7. GData centers
  11. 14Router
  12. 15Guardrails
  13. 16Knowledge

Reference

  1. 17API reference
    1. AAuthentication
    2. BChat completions
    3. CResponses
    4. DMessages
    5. ECount tokens
    6. FModels
    7. GTasks
    8. HEmbeddings and rerank
    9. IJobs
    10. JUploads
    11. KFiles
    12. LBatches
    13. MWebhooks
    14. NVector stores
    15. ODeployments
    16. PRequirements and headers
    17. QErrors
    18. RUsage
    19. SVersioning
  2. 18Operating guidance
    1. ALimits
    2. BErrors
    3. CRetries and billing outcomes
    4. DIdempotency
    5. EStreaming
    6. FData handling
    7. GCompatibility matrix
  3. 19Changelog
Sheet indexAPI reference

Get started

  1. 01Developer hub
  2. 02Quickstart
  3. 03Migrate to HIPS

Guides

  1. 04HIPS SDK
  2. 05Import and run your model
  3. 06Model and task guides
    1. ATask guides
    2. BLanguage (chat)
    3. CClassification
    4. DImage
    5. EVideo
    6. FAudio
    7. GDocument processing
  4. 07Batch jobs
  5. 08Prompt caching
  6. 09Coding-tool setup
    1. AClaude Code
    2. BOther coding tools and editor integrations
  7. 10Command line
    1. ASign in
  8. 11Console
    1. AAccount
    2. BWorkspaces
    3. CAPI keys
    4. DSettings
    5. EUsage
    6. FModels
    7. GPlayground
    8. HDeployments
  9. 12Billing
  10. 13Provider setup
    1. AWhen it works
    2. BCommands
    3. CSettings
    4. DProvider Console
    5. EEarnings
    6. FCrash reports
    7. GData centers
  11. 14Router
  12. 15Guardrails
  13. 16Knowledge

Reference

  1. 17API reference
    1. AAuthentication
    2. BChat completions
    3. CResponses
    4. DMessages
    5. ECount tokens
    6. FModels
    7. GTasks
    8. HEmbeddings and rerank
    9. IJobs
    10. JUploads
    11. KFiles
    12. LBatches
    13. MWebhooks
    14. NVector stores
    15. ODeployments
    16. PRequirements and headers
    17. QErrors
    18. RUsage
    19. SVersioning
  2. 18Operating guidance
    1. ALimits
    2. BErrors
    3. CRetries and billing outcomes
    4. DIdempotency
    5. EStreaming
    6. FData handling
    7. GCompatibility matrix
  3. 19Changelog
17
  1. Docs/
  2. API reference/
  3. Webhooks
(Detail M)
llms.txt

Webhooks

On this sheet3 sections
  1. The signature
  2. Delivery
  3. In the Console

A workspace's endpoints receive a signed event when a batch ends, in OpenAI's webhook format, so OpenAI's webhook verifiers work. Endpoints are set up in the Console, with the events each receives and a signing secret shown once. No endpoint, no webhook: polling the batch always works. The events come only from batches, which are not offered in production yet; the endpoint tools in the Console are live.

F
Fig. 1, sheet 17API reference
EventWhen
batch.completedThe batch entered completed
batch.failedThe batch entered failed
batch.expiredThe batch entered expired
batch.cancelledThe batch entered cancelled
webhook.testA test send from the Console
  • Event
    batch.completed
    When
    The batch entered completed
  • Event
    batch.failed
    When
    The batch entered failed
  • Event
    batch.expired
    When
    The batch entered expired
  • Event
    batch.cancelled
    When
    The batch entered cancelled
  • Event
    webhook.test
    When
    A test send from the Console

Event

00000000000000000000000000000000000000001{"object": "event", "id": "evt_...", "type": "batch.completed", "created_at": 1792663200, "data": {"id": "batch_..."}}
Event sample

The payload names the batch; read the batch for its state. One event per batch, emitted when it enters that terminal status.

The signature

Parts list: Standard Webhooks headers

  1. 01
    webhook-id

    The evt_ id, the same on every retry and every endpoint: deduplicate by it.

  2. 02
    webhook-timestamp

    Unix seconds. Reject a timestamp outside your own tolerance.

  3. 03
    webhook-signature

    v1, followed by the base64 of an HMAC-SHA256 over <webhook-id>.<webhook-timestamp>.<body>, keyed with the secret's bytes (the secret is whsec_ and base64). While a rotated secret overlaps, two signatures separated by a space.

Verify

00000000000000000000000000000000000000001import base64, hashlib, hmac, time2 3def verified(signing_secret: str, headers: dict, body: bytes, tolerance_s: int) -> bool:4    # signing_secret: the endpoint's secret from the Console, whsec_ and base64.5    secret = base64.b64decode(signing_secret.removeprefix("whsec_"))6    msg_id = headers["webhook-id"]7    timestamp = headers["webhook-timestamp"]8    if abs(time.time() - int(timestamp)) > tolerance_s:9        return False10    signed = f"{msg_id}.{timestamp}.".encode() + body11    expected = base64.b64encode(hmac.new(secret, signed, hashlib.sha256).digest()).decode()12    return any(13        part.startswith("v1,") and hmac.compare_digest(part[3:], expected)14        for part in headers["webhook-signature"].split(" ")15    )
Verify sample

Delivery

  • A POST with Content-Type: application/json. A 2xx within the delivery timeout Not decided yet delivers; anything else, a redirect included (never followed), is retried with exponential backoff and jitter for up to a retry window Not decided yet, then recorded as failed in the endpoint's delivery log.
  • At least once; the order of deliveries is not guaranteed. Order by the payload's created_at only to the second, and read the batch when the order matters.
  • An endpoint that keeps failing is never switched off: it is probed until its first success.
  • The sender refuses any host that resolves to a private, loopback, link-local or metadata address.

In the Console

  • Add an endpoint: an https URL on a public host and the events it receives; the signing secret is shown once.
  • Send a test: webhook.test, or a sample of one of the endpoint's events, marked as a test and naming no batch.
  • Rotate the secret: the retired secret keeps signing beside the new one for an overlap, which you may end sooner.
  • The deliveries log, each with its attempts; redeliver one, redeliver the failed deliveries of a period after an outage, or recover an endpoint that backs off once its receiver is fixed.

Related sheets

  • Batches
  • Batch jobs
Previous sheetBatches
Next sheetVector stores
Sheet
17 of 19
Detail
M
Updated
2026-11-11
Sign in to the Console

On this sheet

  1. The signature
  2. Delivery
  3. In the Console

Product

  • Inference
  • Models
  • Deploy your model
  • Always-on GPU capacity
  • How it works
  • Use cases
  • Pricing

Developer

  • Docs
  • Quickstart
  • Migrate to HIPS
  • HIPS SDK
  • Batch jobs
  • API reference

Provider

  • Earn with your GPU
  • Register GPU interest
  • Download for Mac
  • Download for Windows
  • Download for Linux

Resource

  • Security and Data
  • Resources
  • llms.txt

Compare

  • OpenRouter alternatives
  • Together AI alternatives
  • Groq alternatives
  • All comparisons

Company

  • About
  • Contact
  • Affiliate program
  • HIPS Payments

Legal

  • Legal
  • Consumer Health Data Privacy Policy
  • Report content
  • Cookie preferences

Support

  • Contact HIPS
  • Looking for payments support?

HIPS. AI inference for builders.

hips.com

Hyperscale Inference Processing Systems OÜ