Rutba Social Relay

API reference

One API to publish a post to many social platforms. Send a neutral post plus a list of targets; the relay adapts it per platform, publishes asynchronously, and reports each delivery separately.

Version 0.1.0. Generated from the OpenAPI document the SDK is built from — the build fails if it and the routes disagree.

Base URL https://api.rutba.com

Authenticating

Send your key as Authorization: Bearer rsk_…, or as X-API-Key. Keys are scoped — a key that only needs to publish should not carry admin.

Every response is { data, meta? }, and every failure is { error: { code, message, request_id } } with a code from a closed vocabulary. Write one error handler, not one per endpoint.

auth

Signup, sign-in, sessions and multi-factor

  • post/v1/auth/forgot-passwordpublic

    Send a password reset link

  • post/v1/auth/loginpublic

    Sign in

  • post/v1/auth/logoutpublic

    Sign out of this device

  • get/v1/auth/me

    The signed-in user, their organisations, and their effective scopes

  • post/v1/auth/mfa/challengepublic

    Complete a sign-in with a TOTP or recovery code

  • post/v1/auth/mfa/disable

    Turn off two-factor authentication

  • post/v1/auth/mfa/enroll

    Begin TOTP enrolment

  • post/v1/auth/mfa/recovery-codes

    Replace your recovery codes

  • post/v1/auth/mfa/verify

    Finish TOTP enrolment

  • patch/v1/auth/password

    Change your password

  • patch/v1/auth/profile

    Update your name and timezone

  • post/v1/auth/resend-verification

    Send the confirmation email again

  • post/v1/auth/reset-passwordpublic

    Set a new password from a reset link

  • delete/v1/auth/sessions

    Revoke every other session

  • get/v1/auth/sessions

    Signed-in devices

  • delete/v1/auth/sessions/{id}

    Revoke one session

  • post/v1/auth/signuppublic

    Create a user, an organisation, and a first API key

  • post/v1/auth/switch-organization

    Point this session at another organisation

  • post/v1/auth/verify-emailpublic

    Confirm an email address

  • get/v1/invites/{token}public

    Preview an invitation

  • post/v1/invites/acceptpublic

    Accept an invitation, creating the account if there is none

org

Organisation, members, invitations and the audit trail

  • get/v1/audit

    Who did what

  • get/v1/org

    This organisation

  • patch/v1/org

    Rename the organisation

  • get/v1/org/invites

    Outstanding invitations

  • post/v1/org/invites

    Invite someone by email

  • delete/v1/org/invites/{id}

    Revoke an invitation

  • get/v1/org/members

    People in this organisation

  • delete/v1/org/members/{id}

    Remove a member, or leave the organisation

  • patch/v1/org/members/{id}

    Change a member’s role

  • get/v1/org/platform-apps

    This organisation's own platform apps

  • post/v1/org/platform-apps

    Configure an app for a platform

  • delete/v1/org/platform-apps/{id}

    Remove an app

  • patch/v1/org/platform-apps/{id}

    Rotate, relabel or switch off an app

  • post/v1/org/transfer-ownership

    Hand ownership to another member

platforms

What the relay can publish to

  • get/v1/platformspublic

    List every destination and its status

  • get/v1/platforms/{id}

    One destination in detail

connections

Authorised accounts

  • get/v1/connect-sessions

    List connect links

  • post/v1/connect-sessions

    Mint a connect link

  • delete/v1/connect-sessions/{id}

    Revoke a connect link

  • get/v1/connect/{token}public

    What a connect link is asking for

  • post/v1/connect/{token}/connectpublic

    Connect an account from a connect link, with the platform’s own fields

  • post/v1/connect/{token}/startpublic

    Begin an OAuth connect from a connect link

  • get/v1/connections

    List connections

  • post/v1/connections

    Connect an account with a token, app password, or webhook URL

  • delete/v1/connections/{id}

    Delete a connection

  • get/v1/connections/{id}

    Get a connection

  • patch/v1/connections/{id}

    Update a connection

  • post/v1/connections/{id}/verify

    Check the credentials still work

  • post/v1/oauth/{platform}/start

    Begin an OAuth connect

posts

Publishing

  • get/v1/deliveries

    The delivery log across every post

  • get/v1/deliveries/{id}

    Get one delivery

  • get/v1/deliveries/{id}/comments

    Comments on one destination’s published post

  • post/v1/deliveries/{id}/comments

    Reply on one destination

  • delete/v1/deliveries/{id}/comments/{commentId}

    Delete a comment

  • post/v1/deliveries/{id}/retry

    Retry one destination

  • get/v1/posts

    List posts

  • post/v1/posts

    Publish a post to one or more connections

  • delete/v1/posts/{id}

    Cancel the deliveries not yet sent

  • get/v1/posts/{id}

    Get a post and its deliveries

  • patch/v1/posts/{id}

    Edit a draft or a scheduled post

  • get/v1/posts/{id}/approvals

    Every review round on a post

  • post/v1/posts/{id}/approve

    Approve a post

  • post/v1/posts/{id}/duplicate

    Copy a post as a new draft

  • get/v1/posts/{id}/metrics

    Engagement for one post, per delivery and totalled

  • post/v1/posts/{id}/publish

    Release a draft now

  • post/v1/posts/{id}/reject

    Reject a post

  • post/v1/posts/{id}/request-changes

    Send a post back with changes

  • post/v1/posts/{id}/retry

    Retry the failed deliveries of a post

  • post/v1/posts/{id}/schedule

    Set or move a post's scheduled time

  • post/v1/posts/{id}/submit

    Submit a post for review

  • get/v1/posts/calendar

    Scheduled posts in a date range

  • post/v1/posts/preview

    See what a post becomes on each platform, without publishing

templates

Reusable content presets

  • get/v1/templates

    List templates

  • post/v1/templates

    Save a template

  • delete/v1/templates/{id}

    Delete a template

  • get/v1/templates/{id}

    Get one template

  • patch/v1/templates/{id}

    Update a template

analytics

Aggregates over deliveries

  • get/v1/analytics/platforms

    Success rate per platform

  • get/v1/analytics/summary

    Headline numbers for a period

  • get/v1/analytics/timeseries

    Deliveries over time, by status

media

Uploads

  • get/v1/media

    List uploaded assets

  • post/v1/media

    Upload an image or video

  • post/v1/media/complete

    Register a file uploaded through a presigned URL

  • delete/v1/media/id/{id}

    Delete an asset

  • get/v1/media/id/{id}

    Get one asset

  • post/v1/media/presign

    Get a URL to upload directly to storage

webhooks

Event delivery

  • get/v1/webhooks

    List webhook endpoints

  • post/v1/webhooks

    Register a webhook endpoint

  • delete/v1/webhooks/{id}

    Delete a webhook endpoint

  • get/v1/webhooks/{id}/deliveries

    Recent delivery attempts for this endpoint

  • post/v1/webhooks/{id}/rotate

    Issue a new signing secret

  • post/v1/webhooks/{id}/test

    Send a test event to this endpoint

keys

API keys

  • get/v1/keys

    List API keys

  • post/v1/keys

    Create an API key

  • delete/v1/keys/{id}

    Revoke an API key

billing

Plans and usage

  • get/v1/billing

    This tenant’s plan and usage

  • get/v1/plans

    Available plans on both priced axes

  • get/v1/usage

    Deliveries used this billing period

Sending a request

The relay serves an interactive console at /docs on the API itself, and the TypeScript client is generated from this same document — so its types cannot describe an endpoint differently from the page you are reading.