Awzor Media LLC Sign In API

The sign-in API from Awzor Media LLC — 2 operation(s) for sign-in.

GitHub OpenAPI

Operations 2

POST /v1/auth/exchange Trade a one-time sign-in token for a web API key #
POST /v1/auth/signout Sign out: revoke the key making this call #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hookdetector-com:hookdetector-com-sign-in-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hookdetector-com-sign-in-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Hook Detector Sign In API
  description: 'Find short-form hooks that already work.


    Sign up with a beta access code (ask at https://hookdetector.com/access): one POST to

    `/v1/accounts` with `access_code` gives an API key and free credits. The same operations are available as MCP tools at `/mcp`.


    Full guide, always current, at `/llms.txt`.'
  contact:
    name: Hook Detector
    url: https://hookdetector.com/
    email: contact@hookdetector.com
  version: 3.0.0
tags:
- name: sign-in
paths:
  /v1/auth/exchange:
    post:
      tags:
      - sign-in
      summary: Trade a one-time sign-in token for a web API key
      description: 'The web calls this with the token from /signin/callback#t=... after Google sign-in.

        The token works once, for 60 seconds. The answer is a new API key named "web sign-in"

        with every scope and a 30-day expiry, the person (`user`) and where to go next

        (`return_to`). An account keeps at most 3 web keys: the oldest is revoked. 409

        key_limit_reached when the account already holds the most keys it can and none of

        them is a web key. Free. Called from the web''s own origin, the key is also set in the

        session cookie, which the web then uses instead (FAILURE_MODES.md WS1).'
      operationId: auth_exchange_v1_auth_exchange_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExchangeIn'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeOut'
        '409':
          description: conflict with the account's state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '401':
          description: the token is unknown, used or older than 60 seconds (invalid_exchange_token)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
  /v1/auth/signout:
    post:
      tags:
      - sign-in
      summary: 'Sign out: revoke the key making this call'
      description: 'Revokes the calling key and nothing else. A web sign-in key is always revoked;

        any other key keeps the rule that an account''s last active key cannot be revoked (409

        last_active_key). Any key may call it, whatever its scopes. Free. Called from the web''s

        own origin, it also clears the session cookie, whatever it answers (FAILURE_MODES.md

        WS8), so a browser can always sign out.'
      operationId: auth_signout_v1_auth_signout_post
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
          title: Authorization
        description: Bearer hd_... from POST /v1/accounts or POST /v1/keys
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignoutOut'
        '401':
          description: missing, invalid, revoked or expired API key (code key_expired)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '409':
          description: conflict with the account's state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '413':
          description: request body over the size cap
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '500':
          description: our fault; names the request id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorOut'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ExchangeOut:
      properties:
        api_key:
          type: string
          title: Api Key
          description: the web key; shown once, send it as Bearer
        key_id:
          type: string
          title: Key Id
        prefix:
          type: string
          title: Prefix
        created_at:
          type: string
          title: Created At
        expires_at:
          type: string
          title: Expires At
          description: 30 days from now
        account_id:
          type: string
          title: Account Id
        return_to:
          type: string
          title: Return To
          description: the same-site path to go to next
        user:
          anyOf:
          - $ref: '#/components/schemas/SignedInUser'
          - type: 'null'
      additionalProperties: true
      type: object
      required:
      - api_key
      - key_id
      - prefix
      - created_at
      - expires_at
      - account_id
      - return_to
      - user
      title: ExchangeOut
      examples:
      - account_id: 8f1c2d3e-4b5a-4c6d-8e7f-9a0b1c2d3e4f
        api_key: hd_...
        created_at: '2026-09-23T10:00:00.000000+00:00'
        expires_at: '2026-09-23T10:00:00.000000+00:00'
        key_id: 8f1c2d3e-4b5a-4c6d-8e7f-9a0b1c2d3e4f
        prefix: hd_AbCdEfGh
        return_to: /chat
        user:
          email: ana@example.com
          is_admin: false
          name: Ana
    ErrorOut:
      properties:
        detail:
          type: string
          title: Detail
          description: one sentence a person can read
        code:
          type: string
          title: Code
          description: stable machine code; see the Errors section of /llms.txt
        errors:
          anyOf:
          - items:
              additionalProperties: true
              type: object
            type: array
          - type: 'null'
          title: Errors
          description: 'on a 422 only: the field level list'
      additionalProperties: true
      type: object
      required:
      - detail
      - code
      title: ErrorOut
      examples:
      - code: run_not_found
        detail: no such run for this account
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ExchangeIn:
      properties:
        token:
          type: string
          maxLength: 200
          minLength: 1
          title: Token
          description: the t value of the /signin/callback#t=... fragment
      type: object
      required:
      - token
      title: ExchangeIn
    SignoutOut:
      properties:
        signed_out:
          type: boolean
          title: Signed Out
        key_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Key Id
        revoked_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Revoked At
        message:
          type: string
          title: Message
      additionalProperties: true
      type: object
      required:
      - signed_out
      - key_id
      - revoked_at
      - message
      title: SignoutOut
      examples:
      - key_id: 8f1c2d3e-4b5a-4c6d-8e7f-9a0b1c2d3e4f
        message: Signed out. This key no longer works.
        revoked_at: '2026-09-23T10:00:00.000000+00:00'
        signed_out: true
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    SignedInUser:
      properties:
        email:
          type: string
          title: Email
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        avatar_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Avatar Url
        is_admin:
          type: boolean
          title: Is Admin
      additionalProperties: true
      type: object
      required:
      - email
      - name
      - avatar_url
      - is_admin
      title: SignedInUser