# segmnt docs > Host and stream course videos with signed playback, up to 4K, billed in SAR. Guides for developers at agencies, course platforms and training companies. - [segmnt docs](https://docs.segmnt.cloud/index.md): Host and stream course videos with signed playback, up to 4K, billed in SAR. Guides for developers at agencies, course platforms and training companies. - [Getting started](https://docs.segmnt.cloud/getting-started.md): Sign up with SSO, create your first project, upload your first video, get a signed playback token, and see the free-tier limits. - [Accounts, projects, API keys and domains](https://docs.segmnt.cloud/accounts-and-projects.md): Sign in with SSO, then set up projects, per-project API keys and verified domains. - [Direct upload](https://docs.segmnt.cloud/direct-upload.md): Send a video straight to storage with pre-signed multipart URLs, then complete the upload. Node.js, Python and PHP/Laravel examples. - [Manage videos](https://docs.segmnt.cloud/manage-videos.md): Rename a video, or delete it and free its stored hours. PATCH and DELETE examples in curl, Node.js, Python and PHP/Laravel. - [Phone verification](https://docs.segmnt.cloud/phone-verification.md): Phone verification is available but not required in this version. A free account can verify a mobile number (Saudi or GCC) with a one-time code; the first upload is not gated. - [Usage and plan limits](https://docs.segmnt.cloud/usage-and-limits.md): Read your stored and watched usage, see your plan limits, and know what happens when you reach a limit. - [Plans, checkout and payment](https://docs.segmnt.cloud/billing.md): List the plans on sale, start a checkout on Moyasar with an optional discount code, and see how a verified payment changes the plan. Prices in SAR per month, before VAT. - [Reports and video review](https://docs.segmnt.cloud/reports-and-review.md): File a viewer report, and understand what happens when our team holds or removes a video. - [Moderation and held videos](https://docs.segmnt.cloud/moderation.md): How the automatic check works, why a video is held for review, what your app sees, and how a held video is released. - [Health check](https://docs.segmnt.cloud/api-reference/system/health-check.md) - [List the enabled sign-in providers](https://docs.segmnt.cloud/api-reference/auth/list-the-enabled-sign-in-providers.md): The dashboard calls this to draw its sign-in buttons. A provider is listed only when it is configured in this environment. - [Start an SSO sign-in (browser only)](https://docs.segmnt.cloud/api-reference/auth/start-an-sso-sign-in-browser-only.md): Redirects the browser to the provider's sign-in page. Sets a short-lived signed `segmnt_auth` cookie with the CSRF `state`, the PKCE verifier and the `nonce` (`Path=/auth`, `HttpOnly`, `Secure`, `SameSite=Lax`, 10 minutes). After sign-in the browser lands on `return_to`. - [Complete an SSO sign-in (the provider redirects here)](https://docs.segmnt.cloud/api-reference/auth/complete-an-sso-sign-in-the-provider-redirects-here.md): The provider redirects the browser here with `code` and `state`. The API checks `state` and the flow cookie, exchanges the code (PKCE, and the `nonce` for Google), creates the account on first sign-in, sets the `segmnt_session` cookie (30 days), clears the flow cookie and redirects to `return_to`. - [End the dashboard session](https://docs.segmnt.cloud/api-reference/auth/end-the-dashboard-session.md): Deletes the session and clears the `segmnt_session` cookie. Safe to call twice: a missing or expired session still returns `204`. - [The signed-in user and its account](https://docs.segmnt.cloud/api-reference/auth/the-signed-in-user-and-its-account.md) - [Send a phone verification code](https://docs.segmnt.cloud/api-reference/auth/send-a-phone-verification-code.md): Starts phone verification for the signed-in account (task A13). Phone verification is not enforced in this version, so a free account can upload without it; this route is kept for when the wizard phone step ships. The number must be a Saudi or GCC mobile (`05XXXXXXXX`, `+9665XXXXXXXX`, `+9715XXXXXXX… - [Verify a phone code and save the device fingerprint](https://docs.segmnt.cloud/api-reference/auth/verify-a-phone-code-and-save-the-device-fingerprint.md): Completes phone verification and stores the device fingerprint (task A13). The challenge is single-use and expires after 10 minutes; 5 wrong codes close it. Repeating a successful call with the same challenge is a no-op `200`. A banned account, phone or device is refused. - [List projects](https://docs.segmnt.cloud/api-reference/projects/list-projects.md) - [Create a project](https://docs.segmnt.cloud/api-reference/projects/create-a-project.md) - [Get a project](https://docs.segmnt.cloud/api-reference/projects/get-a-project.md) - [Delete a project](https://docs.segmnt.cloud/api-reference/projects/delete-a-project.md): Only an empty project can be deleted. Delete its videos first. - [Rename a project and/or update its white-label branding](https://docs.segmnt.cloud/api-reference/projects/rename-a-project-andor-update-its-white-label-branding.md) - [List API keys](https://docs.segmnt.cloud/api-reference/api-keys/list-api-keys.md) - [Create an API key](https://docs.segmnt.cloud/api-reference/api-keys/create-an-api-key.md) - [Revoke an API key](https://docs.segmnt.cloud/api-reference/api-keys/revoke-an-api-key.md) - [List domains](https://docs.segmnt.cloud/api-reference/domains/list-domains.md) - [Add a domain](https://docs.segmnt.cloud/api-reference/domains/add-a-domain.md): Adds a domain in `pending` status. Create the DNS TXT record from `verification`, then call the verify route. Free accounts can have one verified domain. - [Remove a domain](https://docs.segmnt.cloud/api-reference/domains/remove-a-domain.md) - [Check the DNS record and verify a domain](https://docs.segmnt.cloud/api-reference/domains/check-the-dns-record-and-verify-a-domain.md) - [Start an upload](https://docs.segmnt.cloud/api-reference/uploads/start-an-upload.md): Creates a video in `uploading` status and returns one pre-signed `PUT` URL per part. The client sends each part straight to storage, keeps the `ETag` response header of each part, then calls the complete route. - [Cancel an upload](https://docs.segmnt.cloud/api-reference/uploads/cancel-an-upload.md): Removes the uploaded parts and the video. Unfinished uploads are also removed after `expiresAt`. - [Finish an upload](https://docs.segmnt.cloud/api-reference/uploads/finish-an-upload.md): Joins the parts and starts encoding. The video moves to `processing`. Safe to retry: if the upload was already completed, it returns `202` with the current video. - [List videos](https://docs.segmnt.cloud/api-reference/videos/list-videos.md) - [Get a video and its status](https://docs.segmnt.cloud/api-reference/videos/get-a-video-and-its-status.md) - [Delete a video](https://docs.segmnt.cloud/api-reference/videos/delete-a-video.md): Deletes the original, the HLS renditions and the thumbnail, and stops playback. Playback stops within about a minute. The original is removed at once; the HLS renditions and thumbnail are removed in the background, so storage clears shortly after. - [Update a video](https://docs.segmnt.cloud/api-reference/videos/update-a-video.md) - [File a viewer report on a video](https://docs.segmnt.cloud/api-reference/videos/file-a-viewer-report-on-a-video.md): The customer's server files a report (for example a viewer pressed a "report" button in the player). Every report raises an internal alert at once. The customer sees nothing back except the stored report. With an `Idempotency-Key`, a retried POST returns the first report and raises no second alert;… - [Create a playback token](https://docs.segmnt.cloud/api-reference/playback/create-a-playback-token.md): Call this from your server each time you show the video to a viewer. The token is signed (HMAC) and holds the video ID, the expiry and the allowed domain. The CDN refuses requests whose `Origin` or `Referer` is another domain. - [List webhook endpoints](https://docs.segmnt.cloud/api-reference/webhooks/list-webhook-endpoints.md) - [Add a webhook endpoint](https://docs.segmnt.cloud/api-reference/webhooks/add-a-webhook-endpoint.md): Up to 5 endpoints per project. The host must resolve to a public address; private, loopback and link-local addresses are refused here (`400`) and again on every send. - [Remove a webhook endpoint](https://docs.segmnt.cloud/api-reference/webhooks/remove-a-webhook-endpoint.md) - [All qualities are ready and the video can play](https://docs.segmnt.cloud/api-reference/webhooks/all-qualities-are-ready-and-the-video-can-play.md) - [Encoding failed](https://docs.segmnt.cloud/api-reference/webhooks/encoding-failed.md): `data.video.failure` says why. - [Our team held the video and it does not play](https://docs.segmnt.cloud/api-reference/webhooks/our-team-held-the-video-and-it-does-not-play.md): When the hold ends, `video.ready` is sent again. - [Get project usage](https://docs.segmnt.cloud/api-reference/usage/get-project-usage.md): Account totals and plan limits are in `GET /v1/billing/plan`. - [Get the account's plan, limits and usage](https://docs.segmnt.cloud/api-reference/billing/get-the-accounts-plan-limits-and-usage.md) - [List plans you can buy](https://docs.segmnt.cloud/api-reference/billing/list-plans-you-can-buy.md) - [Start a checkout](https://docs.segmnt.cloud/api-reference/billing/start-a-checkout.md): Returns the payment provider's hosted checkout page. Send the user there. The provider returns the user to the dashboard. The plan changes only when the provider's payment webhook confirms the payment. - [Payment provider callback (internal)](https://docs.segmnt.cloud/api-reference/billing/payment-provider-callback-internal.md): Called only by the payment provider. Not for customers. The request is checked with the provider's own signature or secret token, so it has no segmnt authentication. The body is the provider's own format. ## OpenAPI Specs - [openapi](/api/openapi.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.