← Catalog

Photon

Send and read iMessage, WhatsApp, SMS and email conversations through Photon, provision the lines and numbers behind them, and manage a project's webhooks, agent profile, metrics and billing.

Tools119

  • photon__get_accountFreeGet the Photon account the connection acts as: id, email, name, phone. Needs an Account Service Key; a project key is refused.

    Get the Photon account the connection acts as: id, email, name, phone. Needs an Account Service Key; a project key is refused.

  • photon__get_current_organizationFreeGet the organization this connection acts in — the one a sign-in with Photon was approved for — with the organizationId list_projects needs. Not in Photon's published API document; Photon support confirmed it (needs organization:read).

    Get the organization this connection acts in — the one a sign-in with Photon was approved for — with the organizationId list_projects needs. Not in Photon's published API document; Photon support confirmed it (needs organization:read).

  • photon__update_accountFreeChange the account's first or last name (lastName null clears it). Needs an Account Service Key.

    Change the account's first or last name (lastName null clears it). Needs an Account Service Key.

  • photon__list_connected_applicationsFreeList the OAuth applications authorized on the account. Needs an Account Service Key.

    List the OAuth applications authorized on the account. Needs an Account Service Key.

  • photon__revoke_connected_applicationFreeRevoke one OAuth application's grant on the account (application.id, connect_app_…). Needs an Account Service Key.

    Revoke one OAuth application's grant on the account (application.id, connect_app_…). Needs an Account Service Key.

  • photon__list_account_service_keysFreeList the account's Account Service Keys — names, ids, expiry — never their secrets. Create or revoke them in Photon's dashboard or CLI.

    List the account's Account Service Keys — names, ids, expiry — never their secrets. Create or revoke them in Photon's dashboard or CLI.

  • photon__get_organization_billingFreeRead an organization's billing subscription, charges and entitlements.

    Read an organization's billing subscription, charges and entitlements.

  • photon__list_invoicesFreeList an organization's invoices (zero-total invoices are left out).

    List an organization's invoices (zero-total invoices are left out).

  • photon__get_organization_payment_methodFreeWhether the organization has a card on file, and its non-secret details.

    Whether the organization has a card on file, and its non-secret details.

  • photon__create_payment_method_checkoutFreeGet a hosted URL where a person adds a payment card for the organization. Hand the URL to a human; check get_organization_payment_method afterwards.

    Get a hosted URL where a person adds a payment card for the organization. Hand the URL to a human; check get_organization_payment_method afterwards.

  • photon__list_billing_plansFreeList Photon's plan catalog (the same for every project): categories, plan codes and what they include. Use it to choose change_plan's category and planCode.

    List Photon's plan catalog (the same for every project): categories, plan codes and what they include. Use it to choose change_plan's category and planCode.

  • photon__get_project_billingFreeA project's plans, entitlements and current-period usage.

    A project's plans, entitlements and current-period usage.

  • photon__get_billing_operationFreePoll a plan change (change_plan answers an operation id, pho_bop_…) until it succeeds or fails.

    Poll a plan change (change_plan answers an operation id, pho_bop_…) until it succeeds or fails.

  • photon__change_planFreePurchase or change a project's plan for one category (e.g. messaging → a planCode from list_billing_plans). Charges the organization's card on file. Usually answers 202 with a billing operation to poll with get_billing_operation.

    Purchase or change a project's plan for one category (e.g. messaging → a planCode from list_billing_plans). Charges the organization's card on file. Usually answers 202 with a billing operation to poll with get_billing_operation.

  • photon__cancel_subscriptionFreeSchedule a project's billing category to stop at the end of its current period; it stays active until cancelsAt.

    Schedule a project's billing category to stop at the end of its current period; it stays active until cancelsAt.

  • photon__resume_subscriptionFreeRemove a scheduled cancellation so the category renews normally.

    Remove a scheduled cancellation so the category renews normally.

  • photon__list_projectsFreeList an organization's active projects, newest first; filter by name text and creation window; page with pageToken. Needs an Account Service Key.

    List an organization's active projects, newest first; filter by name text and creation window; page with pageToken. Needs an Account Service Key.

  • photon__count_projectsFreeCount the projects list_projects would return for the same filters.

    Count the projects list_projects would return for the same filters.

  • photon__check_project_slugFreeWhether create_project would accept this slug right now (advisory: the create itself allocates).

    Whether create_project would accept this slug right now (advisory: the create itself allocates).

  • photon__create_projectFreeCreate a project in an organization. The slug (3–63 lowercase alphanumerics and single hyphens) is permanent. Needs an Account Service Key.

    Create a project in an organization. The slug (3–63 lowercase alphanumerics and single hyphens) is permanent. Needs an Account Service Key.

  • photon__get_project_closure_statusFreeProgress of a project deletion (delete_project): per-domain progress and whether closure is complete.

    Progress of a project deletion (delete_project): per-domain progress and whether closure is complete.

  • photon__get_projectFreeGet a project: name, slug, organization, agent profile. With no projectId, the connection's own project — the way to learn its organizationId.

    Get a project: name, slug, organization, agent profile. With no projectId, the connection's own project — the way to learn its organizationId.

  • photon__update_projectFreeRename a project (the slug cannot change). Needs an Account Service Key.

    Rename a project (the slug cannot change). Needs an Account Service Key.

  • photon__delete_projectFreeStart deleting a project and everything in it — its lines, numbers, messages and keys. Follow with get_project_closure_status. Needs an Account Service Key; a connection whose own project this is stops working.

    Start deleting a project and everything in it — its lines, numbers, messages and keys. Follow with get_project_closure_status. Needs an Account Service Key; a connection whose own project this is stops working.

  • photon__get_agent_profileFreeThe project's agent profile: the name and avatar recipients see.

    The project's agent profile: the name and avatar recipients see.

  • photon__update_agent_profileFreeChange the agent's first or last name (lastName null clears it).

    Change the agent's first or last name (lastName null clears it).

  • photon__create_agent_avatar_uploadFreeStart an avatar change: a ten-minute presigned S3 POST (uploadUrl + formFields) for a JPEG, PNG or WebP up to 5 MiB. Upload the file there without Photon credentials, then commit_agent_avatar with the uploadId.

    Start an avatar change: a ten-minute presigned S3 POST (uploadUrl + formFields) for a JPEG, PNG or WebP up to 5 MiB. Upload the file there without Photon credentials, then commit_agent_avatar with the uploadId.

  • photon__commit_agent_avatarFreeMake an uploaded image (create_agent_avatar_upload's uploadId) the agent's avatar.

    Make an uploaded image (create_agent_avatar_upload's uploadId) the agent's avatar.

  • photon__reset_agent_avatarFreeReplace the agent's avatar with Photon's default planet image; the custom avatar is discarded.

    Replace the agent's avatar with Photon's default planet image; the custom avatar is discarded.

  • photon__list_project_api_keysFreeList a project's API keys — names, permissions, expiry — never their secrets. Create, change or revoke them in Photon's dashboard or CLI. Needs an Account Service Key.

    List a project's API keys — names, permissions, expiry — never their secrets. Create, change or revoke them in Photon's dashboard or CLI. Needs an Account Service Key.

  • photon__send_messageFreeSend into a conversation (Space) as one of the project's agents: a text (plain or markdown), an uploaded attachment or voice note, a reaction to a message (parentMessageId), a poll or a vote on one, a read receipt, a typing update, a DTMF digit on a call, or a group of such parts. SMS, email, WhatsApp, WhatsApp Business and dedicated iMessage lines; email takes to/cc/bcc/subject. Answers 202: the Message with status accepted, then delivered or failed (get_message). Edits, unsends, poll changes and participant changes are their own tools.

    Send into a conversation (Space) as one of the project's agents: a text (plain or markdown), an uploaded attachment or voice note, a reaction to a message (parentMessageId), a poll or a vote on one, a read receipt, a typing update, a DTMF digit on a call, or a group of such parts. SMS, email, WhatsApp, WhatsApp Business and dedicated iMessage lines; email takes to/cc/bcc/subject. Answers 202: the Message with status accepted, then delivered or failed (get_message). Edits, unsends, poll changes and participant changes are their own tools.

  • photon__edit_messageFreeEdit the text of a message this agent sent, where the platform supports edits (iMessage, WhatsApp). Answers 202 with the edit as a Message.

    Edit the text of a message this agent sent, where the platform supports edits (iMessage, WhatsApp). Answers 202 with the edit as a Message.

  • photon__unsend_messageFreeUnsend (delete) a message this agent sent, for everyone where the platform supports it. reason and scope are Photon's optional notes on the deletion.

    Unsend (delete) a message this agent sent, for everyone where the platform supports it. reason and scope are Photon's optional notes on the deletion.

  • photon__remove_reactionFreeTake back a reaction this agent added to a message.

    Take back a reaction this agent added to a message.

  • photon__update_pollFreeChange a poll this agent sent: its question, options or selection mode (the whole poll is restated).

    Change a poll this agent sent: its question, options or selection mode (the whole poll is restated).

  • photon__update_space_participantsFreeAdd or remove participants of a group conversation. Pass the User records get_user returns; their timestamps are dropped, as Photon's snapshot shape requires. At least one of added or removed.

    Add or remove participants of a group conversation. Pass the User records get_user returns; their timestamps are dropped, as Photon's snapshot shape requires. At least one of added or removed.

  • photon__list_messagesFreeList a project's messages, newest first: filter by line (resourceId), conversation, user perspective, direction, platform and time; page with pageToken (at most 200 a page). Eventually consistent.

    List a project's messages, newest first: filter by line (resourceId), conversation, user perspective, direction, platform and time; page with pageToken (at most 200 a page). Eventually consistent.

  • photon__count_messagesFreeCount messages matching list_messages' filters; groupBy direction and/or perspectiveUser, or interval=day for daily buckets in a timeZone.

    Count messages matching list_messages' filters; groupBy direction and/or perspectiveUser, or interval=day for daily buckets in a timeZone.

  • photon__get_messageFreeGet one message by id: content, sender, space, status (received, accepted, dispatched, delivered, failed) and timestamps.

    Get one message by id: content, sender, space, status (received, accepted, dispatched, delivered, failed) and timestamps.

  • photon__mark_message_readFreeSend a read receipt for an incoming message from its receiving line. Answers 202 with the action Message that tracks the outcome.

    Send a read receipt for an incoming message from its receiving line. Answers 202 with the action Message that tracks the outcome.

  • photon__list_spacesFreeList conversations: filter by platform, participant (id or phone/email handle), time, or by a message they contain; order by last_message_created_at for most recent activity. At most 100 a page.

    List conversations: filter by platform, participant (id or phone/email handle), time, or by a message they contain; order by last_message_created_at for most recent activity. At most 100 a page.

  • photon__count_spacesFreeCount conversations matching list_spaces' filters; groupBy messagePerspectiveUser splits by the user on the messages (needs messageResourceId).

    Count conversations matching list_spaces' filters; groupBy messagePerspectiveUser splits by the user on the messages (needs messageResourceId).

  • photon__get_spaceFreeGet one conversation: platform, kind (direct or group), participants and details.

    Get one conversation: platform, kind (direct or group), participants and details.

  • photon__create_spaceFreeOpen (or find) a conversation between Users: iMessage and WhatsApp take exactly 2 participants, SMS 2–9, email 1–51; one must be a project agent. Direct Spaces converge by participants; each call opens a new email thread. Answers the Space.

    Open (or find) a conversation between Users: iMessage and WhatsApp take exactly 2 participants, SMS 2–9, email 1–51; one must be a project agent. Direct Spaces converge by participants; each call opens a new email thread. Answers the Space.

  • photon__set_space_typingFreeShow or stop a typing indicator in a conversation as an agent (true refreshes; repeat to keep it showing). Answers 202 with the dispatched Message.

    Show or stop a typing indicator in a conversation as an agent (true refreshes; repeat to keep it showing). Answers 202 with the dispatched Message.

  • photon__list_usersFreeList the people and agents the project knows: filter by platform, time, or by a message they sent or received; or read up to 100 by userIds in one call.

    List the people and agents the project knows: filter by platform, time, or by a message they sent or received; or read up to 100 by userIds in one call.

  • photon__count_usersFreeCount Users matching list_users' filters.

    Count Users matching list_users' filters.

  • photon__get_userFreeGet one User with a refreshed classification: Human or Agent, handle, platform, and for agents which line (resourceId) they are.

    Get one User with a refreshed classification: Human or Agent, handle, platform, and for agents which line (resourceId) they are.

  • photon__create_userFreeResolve a handle (an E.164 phone number, an email address, an iMessage address) on a platform to a User, creating it if new. The first step before create_space with someone new.

    Resolve a handle (an E.164 phone number, an email address, an iMessage address) on a platform to a User, creating it if new. The first step before create_space with someone new.

  • photon__list_attachmentsFreeList uploaded attachments: id, filename, content type, size. The bytes come from download_attachment.

    List uploaded attachments: id, filename, content type, size. The bytes come from download_attachment.

  • photon__get_attachmentFreeOne attachment's metadata.

    One attachment's metadata.

  • photon__list_project_platformsFreeThe platform types this project can use (sms, email, whatsapp, whatsapp_business, imessage, …).

    The platform types this project can use (sms, email, whatsapp, whatsapp_business, imessage, …).

  • photon__get_imessage_platformFreeWhether the project is on shared or dedicated iMessage lines, with the shared seat cap.

    Whether the project is on shared or dedicated iMessage lines, with the shared seat cap.

  • photon__get_whatsapp_platformFreeWhether the project is on shared or dedicated WhatsApp lines, with the shared seat cap.

    Whether the project is on shared or dedicated WhatsApp lines, with the shared seat cap.

  • photon__list_resourcesFreeList everything the project holds — SMS numbers, dedicated lines, WhatsApp senders — oldest first, with each one's abilities (sms, imessage, whatsapp, pstn_voice, …) and state. Filter by type, ability or comma-separated states. In-flight provisions are operations, not resources.

    List everything the project holds — SMS numbers, dedicated lines, WhatsApp senders — oldest first, with each one's abilities (sms, imessage, whatsapp, pstn_voice, …) and state. Filter by type, ability or comma-separated states. In-flight provisions are operations, not resources.

  • photon__get_resourceFreeOne line or number: abilities, state and its public detail (the phone number, health).

    One line or number: abilities, state and its public detail (the phone number, health).

  • photon__release_resourceFreeGive a resource back: an SMS number is retired, a dedicated line returns to the pool; its charge period closes. Usually immediate (200), sometimes an operation to poll (202).

    Give a resource back: an SMS number is retired, a dedicated line returns to the pool; its charge period closes. Usually immediate (200), sometimes an operation to poll (202).

  • photon__list_operationsFreeList the project's provisioning and release operations, oldest first, running ones included; filter by resourceId, comma-separated states or one type.

    List the project's provisioning and release operations, oldest first, running ones included; filter by resourceId, comma-separated states or one type.

  • photon__get_operationFreePoll one operation until its state is succeeded, failed or cancelled; a finished provision carries the resource, an email domain's detail carries its DNS records.

    Poll one operation until its state is succeeded, failed or cancelled; a finished provision carries the resource, an email domain's detail carries its DNS records.

  • photon__cancel_operationFreeWithdraw a provision that has not been fulfilled — a dedicated line still waiting for inventory, an SMS number before its provider order. Campaign operations cannot be cancelled.

    Withdraw a provision that has not been fulfilled — a dedicated line still waiting for inventory, an SMS number before its provider order. Campaign operations cannot be cancelled.

  • photon__list_imessage_assignmentsFreeList who holds a seat on the project's shared iMessage lines (released seats only with includeReleased).

    List who holds a seat on the project's shared iMessage lines (released seats only with includeReleased).

  • photon__create_imessage_assignmentFreeGive an end user a seat on a shared iMessage line: their handle (E.164 phone or email) is mapped onto a pooled number the server picks. An email invites them.

    Give an end user a seat on a shared iMessage line: their handle (E.164 phone or email) is mapped onto a pooled number the server picks. An email invites them.

  • photon__get_imessage_assignmentFreeOne shared iMessage line assignment.

    One shared iMessage line assignment.

  • photon__release_imessage_assignmentFreeFree a shared iMessage seat and its handle; the row stays for audit with releasedAt set, so repeating is safe.

    Free a shared iMessage seat and its handle; the row stays for audit with releasedAt set, so repeating is safe.

  • photon__provision_imessage_lineFreeClaim a dedicated iMessage line for the project. Always an operation (202): capacity can take hours, so poll get_operation or cancel_operation to stop waiting. Needs the dedicated-lines entitlement; billed once a line is claimed.

    Claim a dedicated iMessage line for the project. Always an operation (202): capacity can take hours, so poll get_operation or cancel_operation to stop waiting. Needs the dedicated-lines entitlement; billed once a line is claimed.

  • photon__release_imessage_lineFreeRemove iMessage from a dedicated line (the number and any WhatsApp on it stay). Usually immediate, sometimes an operation to poll.

    Remove iMessage from a dedicated line (the number and any WhatsApp on it stay). Usually immediate, sometimes an operation to poll.

  • photon__list_whatsapp_assignmentsFreeList who holds a seat on the project's shared WhatsApp lines.

    List who holds a seat on the project's shared WhatsApp lines.

  • photon__create_whatsapp_assignmentFreeGive an end user's phone number a seat on a shared WhatsApp line; an email invites them.

    Give an end user's phone number a seat on a shared WhatsApp line; an email invites them.

  • photon__get_whatsapp_assignmentFreeOne shared WhatsApp line assignment.

    One shared WhatsApp line assignment.

  • photon__release_whatsapp_assignmentFreeFree a shared WhatsApp seat; repeating is safe.

    Free a shared WhatsApp seat; repeating is safe.

  • photon__provision_whatsapp_lineFreeProvision a dedicated WhatsApp line (with shared Voice), on the project's iMessage line when possible so both keep one number. Always an operation (202) to poll or cancel.

    Provision a dedicated WhatsApp line (with shared Voice), on the project's iMessage line when possible so both keep one number. Always an operation (202) to poll or cancel.

  • photon__release_whatsapp_lineFreeRemove WhatsApp from a dedicated line (iMessage and the number stay).

    Remove WhatsApp from a dedicated line (iMessage and the number stay).

  • photon__get_whatsapp_business_accountFreeThe WhatsApp Business Account connected to the project: business, review status, outbound capacity, sender count.

    The WhatsApp Business Account connected to the project: business, review status, outbound capacity, sender count.

  • photon__list_whatsapp_business_phone_numbersFreeThe connected WABA's phone numbers straight from Meta, with whether each is in Photon's inventory.

    The connected WABA's phone numbers straight from Meta, with whether each is in Photon's inventory.

  • photon__get_whatsapp_signup_configFreeWhat a browser needs to open Meta's Embedded Signup popup for this project: configId, graphVersion and scopes.

    What a browser needs to open Meta's Embedded Signup popup for this project: configId, graphVersion and scopes.

  • photon__connect_whatsapp_businessFreeFinish Embedded Signup: exchange the code, WABA id and phone-number id the popup returned and connect that number as a whatsapp_sender. Free, but the organization needs a card on file. Answers an operation.

    Finish Embedded Signup: exchange the code, WABA id and phone-number id the popup returned and connect that number as a whatsapp_sender. Free, but the organization needs a card on file. Answers an operation.

  • photon__create_whatsapp_business_senderFreeRegister one of the project's own SMS-capable VoIP lines as a WhatsApp Business sender; Photon handles the SMS ownership code. Answers an operation.

    Register one of the project's own SMS-capable VoIP lines as a WhatsApp Business sender; Photon handles the SMS ownership code. Answers an operation.

  • photon__get_whatsapp_business_verification_codeFreeRead the latest WhatsApp Business ownership code Meta texted to one of the project's VoIP numbers, if newer than receivedAfter (within the last two minutes). A missing code is a retryable 404.

    Read the latest WhatsApp Business ownership code Meta texted to one of the project's VoIP numbers, if newer than receivedAfter (within the last two minutes). A missing code is a retryable 404.

  • photon__disconnect_whatsapp_business_accountFreeDisconnect every WhatsApp Business sender and the account itself from the project (the numbers stay in Meta and Photon). Answers an operation to poll.

    Disconnect every WhatsApp Business sender and the account itself from the project (the numbers stay in Meta and Photon). Answers an operation to poll.

  • photon__list_sms_countriesFreeCountries SMS numbers can be bought in.

    Countries SMS numbers can be bought in.

  • photon__list_sms_area_codesFreeUS area codes with current provider coverage for new numbers.

    US area codes with current provider coverage for new numbers.

  • photon__purchase_sms_numberFreeBuy one US local number (optionally in an area code from list_sms_area_codes) as an SMS-enabled resource. Always an operation (202): poll get_operation, cancel_operation while it waits for inventory. Billed on delivery.

    Buy one US local number (optionally in an area code from list_sms_area_codes) as an SMS-enabled resource. Always an operation (202): poll get_operation, cancel_operation while it waits for inventory. Billed on delivery.

  • photon__get_sms_campaignFreeAn SMS line's 10DLC campaign assignment, its eligibility and the version assign_sms_campaign needs.

    An SMS line's 10DLC campaign assignment, its eligibility and the version assign_sms_campaign needs.

  • photon__assign_sms_campaignFreeAttach (or replace) a ready 10DLC campaign from the organization on an SMS line; needs the current expectedVersion from get_sms_campaign. Provider provisioning runs as an operation.

    Attach (or replace) a ready 10DLC campaign from the organization on an SMS line; needs the current expectedVersion from get_sms_campaign. Provider provisioning runs as an operation.

  • photon__unassign_sms_campaignFreeDetach an SMS line's 10DLC campaign (number and campaign stay owned); needs the current expectedVersion.

    Detach an SMS line's 10DLC campaign (number and campaign stay owned); needs the current expectedVersion.

  • photon__connect_telegram_botFreeStart connecting a managed Telegram bot: the answer is an operation whose detail.setupUrl a person opens to pick or create the bot; then poll get_operation.

    Start connecting a managed Telegram bot: the answer is an operation whose detail.setupUrl a person opens to pick or create the bot; then poll get_operation.

  • photon__connect_email_domainFreeConnect a sending domain: Photon starts provider setup and the operation's detail lists the DNS records to publish; poll get_operation until the domain is READY.

    Connect a sending domain: Photon starts provider setup and the operation's detail lists the DNS records to publish; poll get_operation until the domain is READY.

  • photon__list_voice_profilesFreeThe project's Voice (SIP routing) profiles; default=true for the project default only.

    The project's Voice (SIP routing) profiles; default=true for the project default only.

  • photon__create_voice_profileFreeCreate an additional Voice profile (the project default must already exist).

    Create an additional Voice profile (the project default must already exist).

  • photon__get_default_voice_profileFreeThe project's default Voice profile, with its inbound and outbound state.

    The project's default Voice profile, with its inbound and outbound state.

  • photon__create_default_voice_profileFreeCreate the project's default Voice profile when it has none (an identical replay returns the existing one).

    Create the project's default Voice profile when it has none (an identical replay returns the existing one).

  • photon__update_default_voice_profileFreeChange the default profile's protocol or media encryption; needs its current expectedVersion.

    Change the default profile's protocol or media encryption; needs its current expectedVersion.

  • photon__get_voice_profileFreeOne Voice profile, with its inbound and outbound state.

    One Voice profile, with its inbound and outbound state.

  • photon__update_voice_profileFreeRename an additional profile or change its protocol or media encryption; needs its current expectedVersion.

    Rename an additional profile or change its protocol or media encryption; needs its current expectedVersion.

  • photon__delete_voice_profileFreeDelete an additional Voice profile (never the default); force=true also drops the line overrides pointing at it.

    Delete an additional Voice profile (never the default); force=true also drops the line overrides pointing at it.

  • photon__update_voice_profile_inboundFreePoint a profile's inbound calls at a SIP destination URI (sip: or sips:). Destination authentication is left as it is; set a username and password in Photon's dashboard.

    Point a profile's inbound calls at a SIP destination URI (sip: or sips:). Destination authentication is left as it is; set a username and password in Photon's dashboard.

  • photon__delete_voice_profile_inboundFreeRemove a profile's inbound destination (the profile and its lines stay).

    Remove a profile's inbound destination (the profile and its lines stay).

  • photon__update_voice_profile_outbound_authenticationFreeSwitch a profile's outbound SIP Digest algorithm (sha-256 recommended, md5 legacy); the credential itself is unchanged.

    Switch a profile's outbound SIP Digest algorithm (sha-256 recommended, md5 legacy); the credential itself is unchanged.

  • photon__delete_voice_profile_outboundFreeRevoke a profile's outbound calling credential (inbound and lines stay).

    Revoke a profile's outbound calling credential (inbound and lines stay).

  • photon__get_voice_line_profileFreeWhich Voice profile a line overrides to; a line on the project default answers without profileId.

    Which Voice profile a line overrides to; a line on the project default answers without profileId.

  • photon__assign_voice_line_profileFreeRoute one line's calls to an additional profile instead of the default; needs the line's current expectedVersion.

    Route one line's calls to an additional profile instead of the default; needs the line's current expectedVersion.

  • photon__unassign_voice_line_profileFreeSend a line back to the project's default Voice profile.

    Send a line back to the project's default Voice profile.

  • photon__batch_update_voice_line_profilesFreeAtomically set or clear (profileId null) the profile override on up to 100 lines; every expectedVersion must match or nothing changes.

    Atomically set or clear (profileId null) the profile override on up to 100 lines; every expectedVersion must match or nothing changes.

  • photon__get_metrics_schemaFreeThe message_events SQL schema, dialect, capabilities and limits query_metrics accepts.

    The message_events SQL schema, dialect, capabilities and limits query_metrics accepts.

  • photon__query_metricsFreeRun read-only SQL over the project's message_events table (delivery outcomes, volumes, latency by platform); get_metrics_schema lists the columns. parameters bind named placeholders.

    Run read-only SQL over the project's message_events table (delivery outcomes, volumes, latency by platform); get_metrics_schema lists the columns. parameters bind named placeholders.

  • photon__get_metrics_backfillFreeProgress of the historical metrics backfill (queries work meanwhile).

    Progress of the historical metrics backfill (queries work meanwhile).

  • photon__list_webhook_api_versionsFreeThe published webhook payload versions (calendar dates) and which are selectable for new destinations.

    The published webhook payload versions (calendar dates) and which are selectable for new destinations.

  • photon__list_webhook_event_typesFreeThe event types a payload version offers (message.created, message.updated, …), with descriptions and schema links.

    The event types a payload version offers (message.created, message.updated, …), with descriptions and schema links.

  • photon__get_webhook_event_schemaFreeThe JSON Schema of one event type in one payload version.

    The JSON Schema of one event type in one payload version.

  • photon__list_webhook_egress_addressesFreeThe IP addresses Photon delivers webhooks from, for a receiver's allowlist.

    The IP addresses Photon delivers webhooks from, for a receiver's allowlist.

  • photon__list_webhook_destinationsFreeThe project's webhook destinations (never their signing secrets).

    The project's webhook destinations (never their signing secrets).

  • photon__create_webhook_destinationFreeRegister an HTTPS URL to receive events of a payload version. The answer carries the signing secret once — keep it for verifying webhook-signature headers (Standard Webhooks).

    Register an HTTPS URL to receive events of a payload version. The answer carries the signing secret once — keep it for verifying webhook-signature headers (Standard Webhooks).

  • photon__get_webhook_destinationFreeOne webhook destination's configuration.

    One webhook destination's configuration.

  • photon__update_webhook_destinationFreeChange a destination's URL, name, description (null clears), events or status (disable to pause delivery). The payload version cannot change.

    Change a destination's URL, name, description (null clears), events or status (disable to pause delivery). The payload version cannot change.

  • photon__delete_webhook_destinationFreeDelete a webhook destination (repeating is safe).

    Delete a webhook destination (repeating is safe).

  • photon__rotate_webhook_secretFreeIssue a destination a new signing secret (returned once); the old one keeps verifying for overlapSeconds (default a day).

    Issue a destination a new signing secret (returned once); the old one keeps verifying for overlapSeconds (default a day).

  • photon__retry_webhook_deliveryFreeWake a waiting (backed-off) delivery for an immediate attempt; expectedAttemptCount fences stale requests. Answers 202: an attempt, not a success.

    Wake a waiting (backed-off) delivery for an immediate attempt; expectedAttemptCount fences stale requests. Answers 202: an attempt, not a success.

  • photon__download_attachmentFreeRead an attachment's bytes (up to 2 MiB): an image comes back as an image, audio as audio, text or JSON as text, anything else as an embedded blob. A just-uploaded attachment may answer 409 ATTACHMENT_NOT_READY with a Retry-After.

    Read an attachment's bytes (up to 2 MiB): an image comes back as an image, audio as audio, text or JSON as text, anything else as an embedded blob. A just-uploaded attachment may answer 409 ATTACHMENT_NOT_READY with a Retry-After.

  • photon__upload_attachmentFreeUpload a file (base64, up to 10 MiB) as a project attachment and get its pho_att_… id, to send with send_message as an attachment or voice note. Give the real content type (image/jpeg, audio/mp4, application/pdf, …); Photon checks it against the bytes.

    Upload a file (base64, up to 10 MiB) as a project attachment and get its pho_att_… id, to send with send_message as an attachment or voice note. Give the real content type (image/jpeg, audio/mp4, application/pdf, …); Photon checks it against the bytes.

Give this to your agent

set up https://corespeed.io/SKILL.md
Get started