Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.0.1"
".": "0.1.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 19
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/inf-labs/influship-api-3a7359b6f1bc29e6ba39142f71e31055407138bc92aac108c9de72dc3b0604a5.yml
openapi_spec_hash: b5814219a0ab7727c3571b1bbfc14ce3
config_hash: 32cf7a70e5eb35a8bead35d220e1eedb
configured_endpoints: 20
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/inf-labs/influship-api-d2f171507de2ec0f4a5420e2ea170135523d8bc82c3b4baa7fd45fe261f311e4.yml
openapi_spec_hash: d812fcd5e16d62bc562e0f4618602647
config_hash: 7ea006cb87abb30bfc76a6af984a7b88
70 changes: 70 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Changelog

## 0.1.0 (2026-06-16)

Full Changelog: [v0.0.1...v0.1.0](https://github.com/Influship/influship-sdk-python/compare/v0.0.1...v0.1.0)

### Features

* **api:** add audience, brand alignment, key facts, vibe fields to creator response ([4c7bf09](https://github.com/Influship/influship-sdk-python/commit/4c7bf09985211ae6cb5c9784e8c60e186cf1f58f))
* **api:** add creator_emails resource with lookup method ([17de04a](https://github.com/Influship/influship-sdk-python/commit/17de04a149b10c676fe01cdf338ee9af40ae1e57))
* **api:** add creator_kinds parameter to search.create method ([712759a](https://github.com/Influship/influship-sdk-python/commit/712759ae241285079b0060ff896dc25c5cb25237))
* **api:** add get_post/get_transcript methods to instagram, update post types ([c5d60ec](https://github.com/Influship/influship-sdk-python/commit/c5d60ec1b410ffcb49ece5ff68299d695ba9da36))
* **api:** add pagination to creators lookalike, extract MatchInfo type, fix cursor passing ([3be1022](https://github.com/Influship/influship-sdk-python/commit/3be10226051e066b82f26fd99170612908ddda3a))
* **api:** add raw resource with instagram/youtube endpoints ([d765413](https://github.com/Influship/influship-sdk-python/commit/d765413037084f7ad577d00b201a636a864c2f6b))
* **api:** add search_id/total fields, remove cursor param from search.create ([bbd32c2](https://github.com/Influship/influship-sdk-python/commit/bbd32c2e4391a9f31543862afed49f9fa9ca3d8a))
* **api:** remove source field from instagram transcript response types ([2c24026](https://github.com/Influship/influship-sdk-python/commit/2c240264f2abd9865713409ac1fb151f2479f261))
* **api:** update instagram profile and youtube channel/transcript responses ([8b83650](https://github.com/Influship/influship-sdk-python/commit/8b83650ce59ca2f00bb2b8c0f7f8005862a1849d))
* Fix Stainless pagination and model warnings in SDK config ([2ae3c29](https://github.com/Influship/influship-sdk-python/commit/2ae3c29275bfe74e3399f0ef0c0d950ae388531c))
* Fix timeout enforcement and migrate Instagram scraper to curl ([c1a121d](https://github.com/Influship/influship-sdk-python/commit/c1a121d337de698699c7dac5a1fb5814648083c9))
* honest cached /v1/posts video URLs + transcript read-through cache + discovery seeding ([72b71e3](https://github.com/Influship/influship-sdk-python/commit/72b71e36366b017314942b78436a0ea6e7fd1e24))
* **internal/types:** support eagerly validating pydantic iterators ([252fe69](https://github.com/Influship/influship-sdk-python/commit/252fe69b3d9652bb8ff9f2bf731d63006ec5b0af))
* **internal:** implement indices array format for query and form serialization ([b0fb922](https://github.com/Influship/influship-sdk-python/commit/b0fb922140eac09079b68be14a023d14a3f3a510))
* Remove app-level quota system and align billing/rate-limit enforcement with Stripe + Redis ([c7d8a60](https://github.com/Influship/influship-sdk-python/commit/c7d8a6012df2e31b92554e9a8374f1b3217bbe44))


### Bug Fixes

* **api:** make include parameter optional in creators retrieve method ([7dc834c](https://github.com/Influship/influship-sdk-python/commit/7dc834c23ef1d68df710b2de3baa996510c97b0d))
* **api:** move RawScraperError to shared types ([061b1e2](https://github.com/Influship/influship-sdk-python/commit/061b1e27385b033eb8966ebf8a02815b7dde26e4))
* **client:** add missing f-string prefix in file type error message ([cdd7fdb](https://github.com/Influship/influship-sdk-python/commit/cdd7fdb4104a72d2be89f7c6b48517abdb4285f4))
* **client:** preserve hardcoded query params when merging with user params ([77f87f2](https://github.com/Influship/influship-sdk-python/commit/77f87f2cca5dbacc34e894cf2c69e3f8f208842c))
* **deps:** bump minimum typing-extensions version ([1ebf842](https://github.com/Influship/influship-sdk-python/commit/1ebf84221a6cc9da7c4bcb414f47c4455f9b2dbe))
* ensure file data are only sent as 1 parameter ([76674d4](https://github.com/Influship/influship-sdk-python/commit/76674d4a000df97be89864108b9bf3923b4604f3))
* **pydantic:** do not pass `by_alias` unless set ([dba41e9](https://github.com/Influship/influship-sdk-python/commit/dba41e990d67482fc211cf0674e547c310a8eb26))
* sanitize endpoint path params ([825e363](https://github.com/Influship/influship-sdk-python/commit/825e363c5eb9b02a3e5fc5baa994fb711ea5cdab))
* **types:** remove model and provider from instagram transcript response types ([8944d7f](https://github.com/Influship/influship-sdk-python/commit/8944d7f405ad6e3597f397bebce7f13bc0df6fe3))


### Performance Improvements

* **client:** optimize file structure copying in multipart requests ([eca9767](https://github.com/Influship/influship-sdk-python/commit/eca97676e9a6a75faf45ea3bea0b8eefeac55b8b))


### Chores

* **ci:** skip lint on metadata-only changes ([5ee4369](https://github.com/Influship/influship-sdk-python/commit/5ee43696849a917cf7a65f66a8b298ebbc4fa2e7))
* **ci:** skip uploading artifacts on stainless-internal branches ([2c985c8](https://github.com/Influship/influship-sdk-python/commit/2c985c8141c06115d531bc9293bb1291a3d04d45))
* **internal:** add request options to SSE classes ([fa680d0](https://github.com/Influship/influship-sdk-python/commit/fa680d005639f7836e614b03c165791f1c64c0b3))
* **internal:** codegen related update ([6ed3406](https://github.com/Influship/influship-sdk-python/commit/6ed3406334c705ae2278a09a040b916c0432d9ae))
* **internal:** codegen related update ([a7d0c03](https://github.com/Influship/influship-sdk-python/commit/a7d0c03f03bae935f64b076c211d283ad9069495))
* **internal:** make `test_proxy_environment_variables` more resilient ([1775e30](https://github.com/Influship/influship-sdk-python/commit/1775e30216baabb1affe64be26b9455a35bc7a30))
* **internal:** make `test_proxy_environment_variables` more resilient to env ([2042983](https://github.com/Influship/influship-sdk-python/commit/20429833fae8ecd9dbe6eee1d140cdb9e0763260))
* **internal:** more robust bootstrap script ([09db9ca](https://github.com/Influship/influship-sdk-python/commit/09db9caf00714de6ccb7eccd314c0a903b6ea55f))
* **internal:** refactor Instagram response types to shared models, fix address_json type ([1ce31a9](https://github.com/Influship/influship-sdk-python/commit/1ce31a9406b653b08e333139febfb5acb01ca641))
* **internal:** reformat pyproject.toml ([c63d362](https://github.com/Influship/influship-sdk-python/commit/c63d362a824ea0145bb90d8be4e493463d32028c))
* **internal:** regenerate SDK with no functional changes ([2f56132](https://github.com/Influship/influship-sdk-python/commit/2f561321662c817f965ff9d4ad61e3b13f15de38))
* **internal:** tweak CI branches ([5eea6ab](https://github.com/Influship/influship-sdk-python/commit/5eea6ab384a360852d54e5617e92e0d8d090a12e))
* **internal:** update gitignore ([a47bc6c](https://github.com/Influship/influship-sdk-python/commit/a47bc6c615c786a620fad78eafb31927cbecc718))
* update Stainless production repos to influship org ([f92ef39](https://github.com/Influship/influship-sdk-python/commit/f92ef39428d669160509c279e52deb10343e2b2c))


### Documentation

* **api:** add MCP tool references to creators/posts/profiles/search methods ([fb75a8e](https://github.com/Influship/influship-sdk-python/commit/fb75a8eedb6c1e86edb35b94e82d0eb27b9f4537))
* **api:** clarify handle parameter format in youtube resource ([ef29fd6](https://github.com/Influship/influship-sdk-python/commit/ef29fd64380a379c0589b4bec19996ae85da389a))
* **api:** correct profile to channel terminology in youtube channel method ([a8f561f](https://github.com/Influship/influship-sdk-python/commit/a8f561fde0da698d26689d699c394cbcb3475f8d))
* **api:** update instagram method docstrings ([9d881aa](https://github.com/Influship/influship-sdk-python/commit/9d881aadfbbc7d742d739042a96c973a9824573f))
* **api:** update pricing documentation across creators/posts/profiles/raw/search ([b82801e](https://github.com/Influship/influship-sdk-python/commit/b82801e0c5cc55dc0509e3a8ac412518ca9745ce))
* **internal:** update MCP server package name in installation links ([7d78559](https://github.com/Influship/influship-sdk-python/commit/7d78559d721175e453eea56d8fab60a0f4c9a229))
* update examples ([53aa0d6](https://github.com/Influship/influship-sdk-python/commit/53aa0d622795bdc2076f69d67ac51525b814f7d6))
15 changes: 13 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Shared Types

```python
from influship.types import CreatorBasic, ProfileSummary
from influship.types import CreatorBasic, ProfileSummary, RawScraperError
```

# Health
Expand Down Expand Up @@ -69,6 +69,18 @@ Methods:
- <code title="get /v1/profiles/{platform}/{username}">client.profiles.<a href="./src/influship/resources/profiles.py">get</a>(username, \*, platform) -> <a href="./src/influship/types/profile_get_response.py">ProfileGetResponse</a></code>
- <code title="post /v1/profiles/lookup">client.profiles.<a href="./src/influship/resources/profiles.py">lookup</a>(\*\*<a href="src/influship/types/profile_lookup_params.py">params</a>) -> <a href="./src/influship/types/profile_lookup_response.py">ProfileLookupResponse</a></code>

# CreatorEmails

Types:

```python
from influship.types import CreatorEmailLookupResponse
```

Methods:

- <code title="post /v1/creator-emails/lookup">client.creator_emails.<a href="./src/influship/resources/creator_emails.py">lookup</a>(\*\*<a href="src/influship/types/creator_email_lookup_params.py">params</a>) -> <a href="./src/influship/types/creator_email_lookup_response.py">CreatorEmailLookupResponse</a></code>

# Posts

Types:
Expand All @@ -91,7 +103,6 @@ Types:
from influship.types.raw import (
InstagramSinglePostResponse,
InstagramTranscriptResponse,
RawScraperError,
InstagramGetPostResponse,
InstagramGetPostsResponse,
InstagramGetProfileResponse,
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "influship"
version = "0.0.1"
version = "0.1.0"
description = "The official Python library for the Influship API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
63 changes: 62 additions & 1 deletion src/influship/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@
)

if TYPE_CHECKING:
from .resources import raw, posts, health, search, creators, profiles
from .resources import raw, posts, health, search, creators, profiles, creator_emails
from .resources.posts import PostsResource, AsyncPostsResource
from .resources.health import HealthResource, AsyncHealthResource
from .resources.search import SearchResource, AsyncSearchResource
from .resources.raw.raw import RawResource, AsyncRawResource
from .resources.creators import CreatorsResource, AsyncCreatorsResource
from .resources.profiles import ProfilesResource, AsyncProfilesResource
from .resources.creator_emails import CreatorEmailsResource, AsyncCreatorEmailsResource

__all__ = [
"Timeout",
Expand Down Expand Up @@ -154,6 +155,16 @@ def profiles(self) -> ProfilesResource:

return ProfilesResource(self)

@cached_property
def creator_emails(self) -> CreatorEmailsResource:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResource

return CreatorEmailsResource(self)

@cached_property
def posts(self) -> PostsResource:
"""
Expand Down Expand Up @@ -381,6 +392,16 @@ def profiles(self) -> AsyncProfilesResource:

return AsyncProfilesResource(self)

@cached_property
def creator_emails(self) -> AsyncCreatorEmailsResource:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResource

return AsyncCreatorEmailsResource(self)

@cached_property
def posts(self) -> AsyncPostsResource:
"""
Expand Down Expand Up @@ -550,6 +571,16 @@ def profiles(self) -> profiles.ProfilesResourceWithRawResponse:

return ProfilesResourceWithRawResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.CreatorEmailsResourceWithRawResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResourceWithRawResponse

return CreatorEmailsResourceWithRawResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.PostsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -607,6 +638,16 @@ def profiles(self) -> profiles.AsyncProfilesResourceWithRawResponse:

return AsyncProfilesResourceWithRawResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.AsyncCreatorEmailsResourceWithRawResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResourceWithRawResponse

return AsyncCreatorEmailsResourceWithRawResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.AsyncPostsResourceWithRawResponse:
"""
Expand Down Expand Up @@ -664,6 +705,16 @@ def profiles(self) -> profiles.ProfilesResourceWithStreamingResponse:

return ProfilesResourceWithStreamingResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.CreatorEmailsResourceWithStreamingResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import CreatorEmailsResourceWithStreamingResponse

return CreatorEmailsResourceWithStreamingResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.PostsResourceWithStreamingResponse:
"""
Expand Down Expand Up @@ -721,6 +772,16 @@ def profiles(self) -> profiles.AsyncProfilesResourceWithStreamingResponse:

return AsyncProfilesResourceWithStreamingResponse(self._client.profiles)

@cached_property
def creator_emails(self) -> creator_emails.AsyncCreatorEmailsResourceWithStreamingResponse:
"""Look up known creator email addresses by creator ID or social username.

Empty or unresolved results are not billable.
"""
from .resources.creator_emails import AsyncCreatorEmailsResourceWithStreamingResponse

return AsyncCreatorEmailsResourceWithStreamingResponse(self._client.creator_emails)

@cached_property
def posts(self) -> posts.AsyncPostsResourceWithStreamingResponse:
"""
Expand Down
2 changes: 1 addition & 1 deletion src/influship/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "influship"
__version__ = "0.0.1" # x-release-please-version
__version__ = "0.1.0" # x-release-please-version
14 changes: 14 additions & 0 deletions src/influship/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@
ProfilesResourceWithStreamingResponse,
AsyncProfilesResourceWithStreamingResponse,
)
from .creator_emails import (
CreatorEmailsResource,
AsyncCreatorEmailsResource,
CreatorEmailsResourceWithRawResponse,
AsyncCreatorEmailsResourceWithRawResponse,
CreatorEmailsResourceWithStreamingResponse,
AsyncCreatorEmailsResourceWithStreamingResponse,
)

__all__ = [
"HealthResource",
Expand All @@ -74,6 +82,12 @@
"AsyncProfilesResourceWithRawResponse",
"ProfilesResourceWithStreamingResponse",
"AsyncProfilesResourceWithStreamingResponse",
"CreatorEmailsResource",
"AsyncCreatorEmailsResource",
"CreatorEmailsResourceWithRawResponse",
"AsyncCreatorEmailsResourceWithRawResponse",
"CreatorEmailsResourceWithStreamingResponse",
"AsyncCreatorEmailsResourceWithStreamingResponse",
"PostsResource",
"AsyncPostsResource",
"PostsResourceWithRawResponse",
Expand Down
Loading
Loading