useapi.net · AsyncAPI Specification

Useapi Jobs Webhooks

Version

View Spec View on GitHub CompanyAIGenerative AIVideo GenerationImage GenerationMusic GenerationText to SpeechFace SwapAPI AggregatorMachine LearningMediaWebhooksAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-07-27'
method: searched
source:
- https://useapi.net/docs/account-management/post-account
- https://useapi.net/docs/api-google-flow-v1
- https://useapi.net/llms.txt
- openapi/ (replyUrl parameters derived from the first-party Postman collections)
type: Webhooks
spec_type: none
asyncapi_published: false
asyncapi_probed:
- https://useapi.net/asyncapi.yaml
- https://useapi.net/.well-known/api-catalog (linkset lists only Postman service-desc entries)
- https://github.com/useapi (22 repositories, no event schema)

summary: >-
  useapi.net publishes no AsyncAPI document and operates no streaming or pub/sub surface. Its only
  event mechanism is an outbound HTTP callback: a `replyUrl` the caller supplies, which the platform
  POSTs to once a generation job completes or fails. There is a single logical event (job terminal
  state) rather than a typed event catalog, and the callback payload is explicitly per-service.

transport:
  style: outbound HTTP callback
  direction: useapi.net -> caller
  trigger: a generation job reaches a terminal state (completed or failed)
  delivery_guarantees: not documented
  retries: not documented
  signing: not documented — no signature header, shared secret or verification scheme is published
  security_note: >-
    Because no callback signing is documented, treat the callback as an untrusted notification: use
    it as a trigger to re-read authoritative job state from the service's own job endpoint with your
    bearer token, rather than trusting the posted body.

configuration:
  global:
    operation: POST https://api.useapi.net/v2/account
    body: '{"replyUrl": "<your callback URL>"}'
    effect: >-
      "provided value will be used as default value for all API calls unless you choose to override
      them for individual calls. Place here your callback URL. API will call the provided replyUrl
      once job completed or failed."
    read_back: GET https://api.useapi.net/v2/account returns the configured replyUrl
    validation: 'replyUrl length is validated — an over-long value returns {"error": "replyUrl is too long"}'
  per_request:
    parameter: replyUrl
    location: request body of the generation endpoints
    effect: overrides the account-level default for that job only
    also_seen: replyRef — an opaque caller-supplied correlation value echoed back on the callback

channels:
- name: job.terminal
  description: >-
    Fired once per generation job when it completes or fails. This is the only documented event on
    the platform.
  bound_to:
    apis:
    - useapi:google-flow-v1
    - useapi:flowmusic-v1
    - useapi:dreamina-v1
    - useapi:kling-v1
    - useapi:minimax-v1
    - useapi:runwayml-v1
    - useapi:pixverse-v2
    - useapi:mureka-v1
    - useapi:tempolor-v1
    - useapi:faceswap-v1
  payload:
    schema_published: false
    note: >-
      The vendor states plainly that "webhook payload shape ... vary per API". In practice the body
      mirrors that service's own job-retrieval response, so the authoritative schema for a given
      service is the GET job endpoint in that service's OpenAPI (openapi/useapi-<service>-openapi.yml).
    correlation_fields_by_service:
    - service: google-flow
      identifier: jobid
      verify_with: GET /v1/google-flow/jobs/{jobId}
    - service: dreamina
      identifier: jobid
      verify_with: GET /v1/dreamina/videos/{jobid}
    - service: flowmusic
      identifier: jobid
      verify_with: GET /v1/flowmusic/jobs/{jobid}
    - service: mureka
      identifier: musicId
    - service: pixverse
      identifier: taskId
    - service: faceswap
      identifier: jobid
      verify_with: GET /v1/faceswap/jobs/?jobid={jobid}

operational_guidance:
  from_vendor: >-
    "consider using the replyUrl webhook to retrieve results, as this will ensure the least
    intrusive operation" — the vendor recommends webhooks over polling both to reduce load and to
    make automated traffic look less machine-like to the wrapped provider.
  retention_caveat: >-
    Job results expire after 7 days (410 Gone, "Job has expired"). Download media referenced by a
    callback before the retention window closes.